linux安全加固需分层实施:禁用 root 远程登录、强制 ssh 密钥认证、精简服务、启用 防火墙、及时打补丁、部署 f ail2ban 与 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 源开启
- 安装 f ail2ban,针对 SSH 失败登录自动封禁 IP,配置maxretry=3、bantime=600
- 启用 SELinux(RHEL 系)或 AppArmor(Ubuntu 系),设为 enforcing 模式,不建议关闭
基本上就这些。不复杂,但容易忽略细节。每天花 5 分钟检查一次 journalctl -u sshd | grep “Failed” 和fail2ban-client status sshd,比装十个扫描器更管用。