温馨提示×

iptables如何保护SSH服务

小樊
33
2026-01-04 13:27:19
栏目: 编程语言

使用iptables来保护SSH服务主要涉及到以下几个方面:

  1. 限制访问来源

    • 只允许特定的IP地址或IP段访问SSH端口(默认是22)。
    • 使用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
    
  2. 限制连接速率

    • 使用iptableslimit模块来限制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连接请求,超过这个数量的请求将被丢弃。

  3. 使用SSH密钥认证

    • 配置SSH服务器以使用密钥认证而不是密码认证,这样可以大大提高安全性。
    • 在客户端生成SSH密钥对,并将公钥添加到服务器的~/.ssh/authorized_keys文件中。
  4. 更改默认SSH端口

    • 将SSH服务的默认端口从22更改为一个不常用的端口,可以减少自动化工具的扫描和攻击。
    # 编辑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
    
  5. 启用防火墙日志记录

    • 启用iptables的日志记录功能,以便监控和审计SSH连接尝试。
    iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH Attack Detected: "
    

    注意:日志记录可能会产生大量数据,需要定期清理日志文件以避免磁盘空间不足。

通过以上措施,可以显著提高SSH服务的安全性。请根据实际情况调整规则,并确保定期更新和维护防火墙配置。

0