ubuntu

Ubuntu iptables如何保护SSH服务

小樊
38
2025-06-11 00:04:56
栏目: 智能运维

在Ubuntu系统中,使用iptables来保护SSH服务是一种常见的安全措施。以下是一些基本的步骤和策略,可以帮助你通过iptables来增强SSH服务的安全性:

  1. 默认拒绝所有流量: 首先,设置iptables默认策略为DROP,这样只有明确允许的流量才能通过。

    sudo iptables -P INPUT DROP
    sudo iptables -P FORWARD DROP
    sudo iptables -P OUTPUT ACCEPT
    
  2. 允许本地回环接口的流量: 允许来自本地回环接口(lo)的流量,这对于本地进程间的通信是必要的。

    sudo iptables -A INPUT -i lo -j ACCEPT
    sudo iptables -A OUTPUT -o lo -j ACCEPT
    
  3. 允许已建立的连接: 允许已经建立的连接和相关的数据包通过,这有助于维护现有的连接。

    sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    
  4. 限制SSH访问: 只允许来自特定IP地址的SSH连接,或者限制尝试登录的次数。

    # 允许特定IP访问SSH
    sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
    
    # 限制SSH尝试次数
    sudo apt-get install fail2ban
    sudo systemctl enable fail2ban
    sudo systemctl start fail2ban
    

    Fail2ban会监控日志文件(如/var/log/auth.log),并自动更新iptables规则来阻止恶意IP地址。

  5. 更改SSH默认端口: 编辑SSH配置文件/etc/ssh/sshd_config,将默认的SSH端口从22更改为其他端口。

    sudo nano /etc/ssh/sshd_config
    # 修改Port 22为其他端口,例如Port 2222
    

    然后重启SSH服务:

    sudo systemctl restart sshd
    

    并更新iptables规则以允许新端口的流量:

    sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
    
  6. 使用防火墙管理工具: 如果你更喜欢图形界面或者更高级的命令行工具,可以考虑使用ufw(Uncomplicated Firewall)或者firewalld来管理iptables规则。

    sudo ufw enable
    sudo ufw allow 2222/tcp
    

请记住,iptables规则是非常强大的,错误的配置可能会导致服务不可用。在进行任何更改之前,确保你有完整的备份,并且了解每个命令的作用。如果你不确定,可以先在测试环境中尝试这些步骤。

0
看了该问题的人还看了