温馨提示×

Linux防火墙如何限制端口访问

小樊
37
2025-11-24 18:12:33
栏目: 智能运维

在Linux系统中,可以使用iptables或firewalld来限制端口访问。以下是两种方法的简要说明:

方法1:使用iptables

  1. 首先,确保iptables已安装在您的系统上。如果没有,请使用以下命令安装:

    对于基于Debian的系统(如Ubuntu):

    sudo apt-get update
    sudo apt-get install iptables
    

    对于基于RPM的系统(如CentOS、Fedora):

    sudo yum install iptables-services
    
  2. 保存当前的iptables规则,以便在系统重启后仍然生效:

    sudo iptables-save > /etc/iptables/rules.v4
    
  3. 限制特定端口的访问。例如,要允许来自任何IP的访问端口80(HTTP),但拒绝访问端口22(SSH),请运行以下命令:

    允许端口80:

    sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    

    拒绝端口22:

    sudo iptables -A INPUT -p tcp --dport 22 -j DROP
    
  4. 如果您想限制访问特定IP或IP范围,请使用以下命令:

    允许特定IP访问端口80:

    sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 80 -j ACCEPT
    

    拒绝特定IP访问端口22:

    sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j DROP
    

方法2:使用firewalld

  1. 首先,确保firewalld已安装在您的系统上。如果没有,请使用以下命令安装:

    对于基于Debian的系统(如Ubuntu):

    sudo apt-get update
    sudo apt-get install firewalld
    

    对于基于RPM的系统(如CentOS、Fedora):

    sudo yum install firewalld-services
    
  2. 启动firewalld服务并设置为开机启动:

    sudo systemctl start firewalld
    sudo systemctl enable firewalld
    
  3. 重新加载firewalld配置以应用更改:

    sudo firewall-cmd --reload
    
  4. 限制特定端口的访问。例如,要允许来自任何IP的访问端口80(HTTP),但拒绝访问端口22(SSH),请运行以下命令:

    允许端口80:

    sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
    

    拒绝端口22:

    sudo firewall-cmd --permanent --zone=public --remove-port=22/tcp
    
  5. 如果您想限制访问特定IP或IP范围,请使用以下命令:

    允许特定IP访问端口80:

    sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="80" accept'
    

    拒绝特定IP访问端口22:

    sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" drop'
    
  6. 重新加载firewalld配置以应用更改:

    sudo firewall-cmd --reload
    

这样,您就可以使用iptables或firewalld限制Linux系统上的端口访问了。请注意,这些命令可能需要root权限。

0