探索
webservice安全(上线前必做:Linux 安全加固 10 分钟速成,守住最小权限与可观测性)

面向实战的 Linux 服务器安全加固清单,覆盖SSH 入口防护、最小权限、补丁与防火墙、日志审计、备份恢复等关键环节。所有配置均给出可直接落地的命令与参数,并兼顾可用性可回滚,适合上线前自检与日常巡检。

一、为什么你的服务器总在被暴力破解

  • 默认端口22root可登录是最常见的“欢迎页”,配合弱口令或字典攻击,极易被自动化脚本批量尝试。
  • 密码认证一旦开启,配合脚本工具(如 Hydra、Medusa)即可对成千上万 IP 进行“密码喷洒”。
  • 即便更改端口,若仍允许密码登录、无失败锁定与告警,攻击依旧有效。
  • 结论:把“入口”收敛到密钥登录 + 限制用户 + 自动封禁,才能从源头降压。

二、10 分钟快速加固清单(可直接复制执行)

  • SSH 入口收敛(先开新窗测试,确保新端口可连后再切换)
  • 生成密钥(推荐 Ed25519):ssh-keygen -t ed25519 -C "you@example.com"
  • 上传公钥:ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server
  • 修改配置 /etc/ssh/sshd_config:
  • Port 2222(示例高位端口)
  • PermitRootLogin no
  • PasswordAuthentication no
  • PubkeyAuthentication yes
  • MaxAuthTries 3;ClientAliveInterval 300;ClientAliveCountMax 2
  • AllowUsers deploy admin(按需收紧)
  • 可选:禁用转发与弱算法(AllowTcpForwarding no;X11Forwarding no;KexAlgorithms/ Ciphers/ MACs 选强套件)
  • 重启服务:systemctl restart sshd
  • 防火墙放行新端口(示例):ufw allow 2222/tcp 或 iptables -A INPUT -p tcp --dport 2222 -j ACCEPT

  • 自动拦截暴力破解
  • 安装与启用 Fail2ban(Debian/Ubuntu):apt update && apt install -y fail2ban
  • 配置 /etc/fail2ban/jail.local(示例):
  • [DEFAULT] bantime=3600;findtime=600;maxretry=3;ignoreip=127.0.0.1/8 10.0.0.0/8
  • [sshd] enabled=true;port=2222;logpath=/var/log/auth.log;maxretry=3;bantime=86400
  • 启动:systemctl enable --now fail2ban
  • 最小权限与 sudo 治理
  • 禁止空密码与多余账户:passwd -l <user>;检查空口令 awk -F: '($2==""){print $1}' /etc/shadow
  • 精细化 sudo:visudo 仅授予必要命令,如:
  • deploy ALL=(www-data) NOPASSWD: /usr/bin/systemctl restart apache2
  • 定期审计:sudo -l -U <user>;sudo visudo -c
  • 系统与内核安全基线
  • 及时更新:apt update && apt upgrade -y(或 yum/dnf 等价命令)
  • 内核防护(/etc/sysctl.conf):
  • kernel.dmesg_restrict=1;kernel.kptr_restrict=2;kernel.yama.ptrace_scope=1
  • net.ipv4.conf.all.log_martians=1;net.ipv4.icmp_echo_ignore_broadcasts=1
  • 可选:启用 SELinux/AppArmor 强制访问控制
  • 文件与目录权限
  • 关键文件:chmod 644 /etc/passwd;chmod 600 /etc/shadow;chmod 440 /etc/sudoers
  • 家目录与密钥:chmod 700 ~/.ssh;chmod 600 ~/.ssh/id_;chmod 644 ~/.ssh/.pub
  • 日志、审计与监控
  • 审计关键文件:auditctl -w /etc/passwd -p wa -k passwd_changes;auditctl -w /var/log/auth.log -p wa -k ssh_access
  • 实时查看:journalctl -f -u ssh
  • 日志轮转:/etc/logrotate.d/sshd 示例(每周轮转、保留 52 周、压缩)
  • 防火墙与网络最小暴露
  • UFW:ufw default deny incoming;ufw allow 2222/tcp,80/tcp,443/tcp;ufw enable
  • 或 iptables:仅放行 lo、已建立连接、以及业务端口,其余默认 DROP
  • 备份与恢复演练
  • 原则:3-2-1(3 份副本、2 种介质、1 份异地/离线)
  • 示例:rsync -aAX --delete /data/ backup@remote:/backup/$(date +%F);定期恢复演练验证可用性

三、进阶加固与可观测性(按需启用)

  • 双因素认证(2FA)
  • PAM + Google Authenticator:apt install -y libpam-google-authenticator;每个用户执行 google-authenticator 生成密钥;在 /etc/pam.d/sshd 追加一行:auth required pam_google_authenticator.so
  • 文件完整性监控(AIDE)
  • 初始化:aide --init;mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
  • 周期检查:aide --check(配合 cron 与告警)
  • Web 服务安全头(Nginx 示例)
  • server_tokens off;add_header X-frame-Options DENY;add_header X-Content-Type-Options nosniff;add_header X-XSS-Protection "1; mode=block"
  • 容器与云原生场景
  • Docker 最小权限:docker run --read-only --tmpfs /tmp --security-opt=no-new-privileges --cap-drop=ALL --cap-add=NET_BIND_SERVICE --user 1000:1000 app
  • 云上:严格 IAM 最小权限、安全组白名单、KMS 加密与密钥轮换、镜像与运行时安全基线

四、一键自检脚本与常见误区

  • 一键自检脚本(复制保存为 check_sec.sh,chmod +x 后执行)
  • 检查 SSH 关键项:grep -E '^(PermitRootLogin|PasswordAuthentication|Port|Protocol)' /etc/ssh/sshd_config
  • 检查空口令:awk -F: '($2=="" || $2=="!") && $1 != "root" {print "空口令: "$1}' /etc/shadow
  • 检查 SSH 失败登录:grep "Failed password" /var/log/auth.log | tail -20
  • 检查监听端口:ss -tulpen | grep -E '(:22|:2222)'
  • 检查防火墙状态:ufw status verbose 或 iptables -S
  • 检查 sudo 权限:sudo -l -U $(whoami)
  • 常见误区
  • 只改端口不改认证方式(仍允许密码)
  • 直接禁用防火墙或不做出站策略
  • root 可登录 + 密钥/口令并存
  • 备份不演练、不可回滚
  • 有告警但不处置、无变更留痕

五、30 天落地计划与工具清单

  • 第 1 周:完成“快速加固清单”,上线 Fail2ban、UFW/iptables、SSH 密钥登录与 sudo 收敛;做一次全量备份与恢复演练。
  • 第 2 周:补齐审计与完整性(auditd/AIDE)、日志轮转与集中化采集;建立基线报表(用户、端口、进程、权限)。
  • 第 3 周:按需启用 2FA、容器最小权限、Web 安全头;做一次渗透测试或红队演练的“蓝队复盘”。
  • 第 4 周:把以上检查写入 Ansible/脚本,纳入CI/CDGitOps;建立“变更—审计—告警—回滚”的闭环。
  • 工具清单:fail2ban、ufw/iptables、auditd/aide、logrotate/journalctl、ssh-keygen、rsync、Ansible。

结语

安全不是一次性工程,而是围绕最小权限、纵深防御、持续监测与快速恢复的持续迭代。把上面的清单变成你的“上线前必做”和“每周例行”,就能把绝大多数自动化攻击挡在门外,并为业务连续性提供坚实底座。


顶一下()     踩一下()

热门推荐

发表评论
0评