使用iptables来保护SSH服务主要涉及到以下几个方面:
限制访问来源:
iptables的-s选项来指定源IP地址。iptables -A INPUT -p tcp --dport 22 -s 允许的IP地址/掩码 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
例如,只允许IP地址为192.168.1.100的设备访问SSH:
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
限制连接速率:
iptables的limit模块来限制SSH连接的速率,防止暴力破解攻击。iptables -A INPUT -p tcp --dport 22 -m limit --limit 5/min -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
这条规则允许每分钟最多5个SSH连接请求,超过这个数量的请求将被丢弃。
使用SSH密钥认证:
~/.ssh/authorized_keys文件中。更改默认SSH端口:
# 编辑SSH配置文件 /etc/ssh/sshd_config
Port 2222
# 重启SSH服务
systemctl restart sshd
然后在iptables规则中更新端口:
iptables -A INPUT -p tcp --dport 2222 -s 允许的IP地址/掩码 -j ACCEPT
iptables -A INPUT -p tcp --dport 2222 -j DROP
启用防火墙日志记录:
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH Attack Detected: "
注意:日志记录可能会产生大量数据,需要定期清理日志文件以避免磁盘空间不足。
通过以上措施,可以显著提高SSH服务的安全性。请根据实际情况调整规则,并确保定期更新和维护防火墙配置。