Linux 服务器安全加固指南:SSH、防火墙与 fail2ban
云服务器暴露在公网上,每天会遭受大量扫描和暴力破解尝试。本文总结了我在实践中用到的几个关键安全加固措施。
一、SSH 加固
SSH 是服务器最常被攻击的入口。加固的核心思路是:减少攻击面,提高认证强度。
1. 禁用密码登录,只允许密钥认证
# /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes
2. 禁止 root 直接登录
PermitRootLogin no
3. 生成 ed25519 密钥(比 RSA 更短更安全)
ssh-keygen -t ed25519 -C "your-email@example.com"
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server
修改配置后记得重启 sshd:
sudo systemctl restart sshd
二、防火墙配置
使用 firewalld 管理防火墙规则,只开放必要端口:
# 查看当前规则
sudo firewall-cmd --list-all
# 只开放必要端口
sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --add-port=443/tcp --permanent
sudo firewall-cmd --reload
注意事项:
- 如果服务器跑了 Docker,Docker 会绕过 firewalld 直接操作 iptables
- Docker 容器的端口映射建议绑定到
127.0.0.1而不是0.0.0.0 - 使用
DOCKER-USER链来过滤 Docker 转发流量
三、fail2ban 防暴力破解
fail2ban 监控日志文件,自动封禁多次登录失败的 IP:
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 22
maxretry = 3
bantime = 24h
findtime = 10m
启动并设置开机自启:
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
四、自动安全更新
启用 dnf-automatic,让系统自动安装安全补丁:
sudo yum install dnf-automatic
# /etc/dnf/automatic.conf
upgrade_type = security
apply_updates = yes
sudo systemctl enable --now dnf-automatic.timer
加固清单
- SSH:密钥登录 + 禁止 root + 禁止密码
- 防火墙:只开放 22、80、443
- fail2ban:SSH 暴力破解自动封 IP
- 自动更新:安全补丁自动安装
- Docker 端口:绑定 127.0.0.1
以上措施不复杂,但能挡住绝大多数自动化攻击。安全没有银弹,关键在于减少攻击面、及时更新。