防止SSH暴力破解攻击是确保服务器安全的重要措施。以下是一些在CentOS系统上防止SSH暴力破解攻击的方法:
1. 使用Fail2Ban
Fail2Ban是一个入侵防御软件框架,可以监控日志文件并根据配置的规则禁止恶意IP地址。
安装Fail2Ban
sudo yum install epel-release sudo yum install fail2ban
配置Fail2Ban
编辑Fail2Ban的配置文件 /etc/fail2ban/jail.local
,添加或修改以下内容:
[DEFAULT] bantime = 600 findtime = 600 maxretry = 5 [ssh] enabled = true port = ssh filter = sshd logpath = /var/log/secure maxretry = 3
启动Fail2Ban
sudo systemctl start fail2ban sudo systemctl enable fail2ban
2. 修改SSH端口
将SSH默认端口从22改为其他不常用的端口,可以减少被扫描的概率。
修改SSH配置文件
编辑 /etc/ssh/sshd_config
文件,找到并修改以下行:
Port 22
改为:
Port 2222
重启SSH服务
sudo systemctl restart sshd
3. 使用公钥认证
禁用密码登录,改用SSH密钥对进行认证,可以大大提高安全性。
生成SSH密钥对
在客户端生成SSH密钥对:
ssh-keygen -t rsa -b 4096
将公钥复制到服务器
将生成的公钥(通常是 ~/.ssh/id_rsa.pub
)复制到服务器的 ~/.ssh/authorized_keys
文件中:
ssh-copy-id user@server_ip -p 2222
禁用密码登录
编辑 /etc/ssh/sshd_config
文件,确保以下行未被注释且设置正确:
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no
重启SSH服务
sudo systemctl restart sshd
4. 使用防火墙限制访问
使用iptables或firewalld限制SSH访问来源。
使用iptables
sudo iptables -A INPUT -p tcp --dport 2222 -m state --state NEW -m recent --set sudo iptables -A INPUT -p tcp --dport 2222 -m state --state NEW -m recent --update --seconds 600 --hitcount 5 -j DROP
使用firewalld
sudo firewall-cmd --permanent --add-port=2222/tcp sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="your_ip" port protocol="tcp" port="2222" reject' sudo firewall-cmd --reload
5. 监控和日志分析
定期检查SSH日志文件 /var/log/secure
,分析异常登录尝试,并根据需要调整安全策略。
通过以上方法,可以显著提高CentOS服务器的SSH安全性,有效防止暴力破解攻击。