Linux防火墙仅允许指定IP或者IP段访问某个端口

CentOS 7中使用firewall-cmd来设置防火墙。
在防火墙未放通9088端口的情况下,仅允许192.168.80.0/24网段访问9088端口。
使用iptables --list 或者 firewall-cmd --list-all查看现有防火墙策略

iptables --list

firewall-cmd --list-all

如果有放通端口,使用以下指令,关闭端口开放

firewall-cmd --permanent --zone=public --drop-port=9088/tcp

通过firewall-cmd命令放通IP网段访问端口,默认在public zone中操作

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.80.0/24" port protocol="tcp" port="9088" accept'

通过firewall-cmd命令放通单个IP访问端口

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.90.3" port protocol="tcp" port="9088" accept'

删除其中的rich-rule

firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.90.3" port protocol="tcp" port="9088" accept'

制定策略完成后,重新加载策略

firewall-cmd --reload

也可以通过修改配置文件的方式,创建策略
修改/etc/firewalld/zones/public.xml配置文件,如下有两个rule,分别允许192.168.80.2和3两个IP访问端口9088

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected inco
ming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <rule family="ipv4">
    <source address="192.168.80.2"/>
    <port protocol="tcp" port="9088"/>
    <accept/>
  </rule>
  <rule family="ipv4">
    <source address="192.168.80.3"/>
    <port protocol="tcp" port="9088"/>
    <accept/>
  </rule>
</zone>

修改配置文件后,同样需要重新加载策略

firewall-cmd --reload

标签: iptables, firewall-cmd, firewalld, 9088

仅有一条评论

  1. 对于CentOS6,使用
    # iptables -I INPUT -p tcp --dport 80 -j DROP
    # iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT

添加新评论