linux安全加固需分层实施:禁用root远程登录、强制ssh密钥认证、精简服务、启用防火墙、及时打补丁、部署fail2ban与SELinux/appArmor,并每日检查日志。

linux系统安全加固不是堆砌工具,而是建立一套分层、可验证、可持续运行的防护习惯。核心思路是:减少暴露面、收紧访问控制、增强认证强度、及时响应异常。
账户与登录安全
这是第一道防线,直接决定攻击者能否进门。
- 禁用root远程登录:编辑/etc/ssh/sshd_config,设PermitRootLogin no,重启sshd
- 创建普通管理用户并加入wheel(RHEL系)或sudo(debian系)组,用sudo代替直接切root
- 检查UID为0的账号:awk -F: ‘($3==0)’ /etc/passwd,只保留root一行,其余必须清理
- 禁用空密码账号:awk -F: ‘($2==””)’ /etc/shadow,发现即用passwd设密或usermod -L锁定
SSH服务加固
SSH是绝大多数服务器的命门,暴露在外就必须严防死守。
- 禁用密码登录,强制使用密钥认证:PasswordAuthentication no + PubkeyAuthentication yes
- 生成高强度密钥:ssh-keygen -t ed25519 -a 100(比rsa更安全高效)
- 限制登录IP(如仅允许办公网段):AllowUsers user@192.168.10.*
- 可选但推荐:修改默认端口(如改到2222),降低自动化扫描命中率
服务与网络精简
每个运行的服务都是潜在入口,不提供的服务就等于不存在漏洞。
- 列出当前运行服务:systemctl list-units –type=service –state=running
- 停用并禁启非必要服务,例如:systemctl disable –now avahi-daemon cups rpcbind
- 启用firewalld或ufw,只放行真实需要的端口(如22、80、443),其他全部拒绝
- 用ss -tuln或netstat -tuln确认无意外监听端口
系统更新与基础防护
补丁是已知漏洞的解药,不打等于敞开门锁。
- RHEL/centos/Rocky:执行dnf update –security -y,并启用dnf-automatic自动更新
- ubuntu/Debian:配置unattended-upgrades,确保Security源开启
- 安装fail2ban,针对SSH失败登录自动封禁IP,配置maxretry=3、bantime=600
- 启用SELinux(RHEL系)或AppArmor(Ubuntu系),设为enforcing模式,不建议关闭
基本上就这些。不复杂,但容易忽略细节。每天花5分钟检查一次journalctl -u sshd | grep “Failed”和fail2ban-client status sshd,比装十个扫描器更管用。