Linux服务器安全加固是云服务器选型之后必须完成的第一项工作,SSH弱口令与开放端口是入侵事件的两大入口。对公网暴露的Linux主机,安全加固的核心是收紧SSH认证方式、最小化开放端口、启用入侵检测工具,并保持系统补丁同步。本文按操作顺序给出可落地的加固步骤与配置示例。
SSH认证加固:禁用密码登录与密钥管理
SSH是攻击者最常试探的入口,关闭密码登录、只保留密钥认证能直接挡住绝大多数暴力破解流量。生成密钥对后把公钥追加到服务器的authorized_keys文件:
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/yunthe_key
ssh-copy-id -i ~/.ssh/yunthe_key.pub root@SERVER_IP
修改sshd配置并重启服务:
# /etc/ssh/sshd_config
PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 20
重启前先测试新会话能正常登录,避免密钥配置错误把自己锁在门外:sudo systemctl reload sshd。生产环境建议同时启用fail2ban,连续失败自动封禁来源IP:
apt install fail2ban
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
systemctl enable --now fail2ban
防火墙策略:仅放行必要端口
Linux防火墙采用白名单思路配置,默认拒绝入站,只放行SSH、HTTP/HTTPS等实际业务端口。以ufw为例:
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp comment 'ssh'
ufw allow 80,443/tcp
ufw enable
如果用firewalld,规则写法为firewall-cmd --permanent --add-service=https --zone=public,改完执行firewall-cmd --reload。注意服务器在云环境时,云厂商安全组与系统防火墙是两层,任何一层没放行都会导致连不上。
系统与账户层面加固
账户层面做三项:删除无用账户、给sudo用户分组限制、检查空密码账户。awk -F: '($2==""){print}' /etc/shadow能列出无密码账户;getent passwd | grep -E "/bin/(ba)?sh"列出可登录shell的账户清单,逐一确认归属。
自动更新补丁可减少已知漏洞利用窗口,Ubuntu/Debian用unattended-upgrades:
apt install unattended-upgrades
dpkg-reconfigure --priority=low unattended-upgrades
入侵迹象监测与日志留存
加固不等于一劳永逸,日常要盯四个位置:/var/log/auth.log看登录尝试、last -F看登录记录、进程列表ps aux --sort=-%cpu看异常进程、crontab与systemd检查持久化后门。企业环境可部署AIDE做文件完整性校验,定期比对关键二进制与配置文件的hash。
加固效果验证清单
按以下顺序验证:ssh用密码登录应被拒绝;无密钥的客户端无法连接;除放行端口外其他端口探测应超时;root远程登录应失败;ss -tlnp检查监听端口全部与业务清单一致。其中任何一项不通过都要回退排查,服务器安全加固的关键是每一条规则都可解释、可回滚。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-fu-wu-qi-an-quan-jia-gu-shi-zhan-ssh-ren-zheng-jia-gu/