Linux 服务器安全加固指南:SSH、防火墙与 fail2ban

2025-10-08 · Albert

云服务器暴露在公网上,每天会遭受大量扫描和暴力破解尝试。本文总结了我在实践中用到的几个关键安全加固措施。

一、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

注意事项:

三、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

加固清单

  1. SSH:密钥登录 + 禁止 root + 禁止密码
  2. 防火墙:只开放 22、80、443
  3. fail2ban:SSH 暴力破解自动封 IP
  4. 自动更新:安全补丁自动安装
  5. Docker 端口:绑定 127.0.0.1

以上措施不复杂,但能挡住绝大多数自动化攻击。安全没有银弹,关键在于减少攻击面、及时更新。