配置firewalld端口转发和IP访问控制实例

在Redhat/CentOS中自带的防火墙firewalld其实也很强大,除了日常用到的端口访问规则外,还可以配置更复杂的规则,如端口转发、IP访问控制等。

有两个方法可以实现firewalld的rich规则。

方法一

编辑文件/etc/firewalld/zones/public.xml添加相应的规则即可:

<?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 incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <service name="cockpit"/>

  <!-- 允许172.16.0.0/24访问本地nfs服务 -->
  <rule family="ipv4">
    <source address="172.16.0.0/24"/>
    <service name="nfs"/>
    <accept/>
  </rule>

  <!-- 允许访问本地所有端口的IP源 -->
  <rule family="ipv4">
    <source address="10.10.200.0/24"/>
    <accept/>
  </rule>

  <!-- 允许访问本地指定端口的IP源 -->
  <rule family="ipv4">
    <source address="10.10.100.0/24"/>
    <port protocol="udp" port="53"/>
  <accept/>
  </rule>

  <!-- 允许访问本地指定端口范围的IP源 -->
  <rule family="ipv4">
  <source address="10.10.200.0/24"/>
    <port protocol="tcp" port="2048-4096"/>
    <accept/>
  </rule>

  <!-- 禁止访问本服务器的IP源 -->
  <rule family="ipv4">
    <source address="8.8.8.8"/>
    <reject/>
  </rule>

</zone>

方法二

通过firewall-cmd命令配置访问规则,命令中加上--permanent参数会自动写入public.xml文件。

# 服务访问规则:仅允许172.16.0.0/24访问nfs服务
firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.0.0/24 service name=nfs accept' --permanent
# 服务访问规则:仅允许每分钟最多2个连接到ftp服务
firewall-cmd --add-rich-rule='rule service name=ftp limit value=2/m accept' --permanent
# 端口转发实例:将公网2222端口转发至172.16.16.250:22
firewall-cmd --add-rich-rule='rule family=ipv4 forward-port port=2222 protocol=tcp to-port=22 to-addr=172.16.16.250' --permanent
# 访问规则实例:限定ssh/22服务只能从内网10.10.200.200访问
firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.10.200.200/32 service name=ssh accept' --permanent
# 访问规则实例:限定udp/161端口只能从内网10.169.138.158访问
firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.10.200.200/32 destination address=10.10.200.201/32 port port=161 protocol=udp accept' --permanent

验证结果

不论是编辑文件,还是执行命令,都需要重新加载firewalld配置:

# 确保firewalld是运行状态
# systemctl status firewalld
# 重载firewalld配置
firewall-cmd --reload
# 验证结果
firewall-cmd --list-all

原创文章禁止转载:技术学堂 » 配置firewalld端口转发和IP访问控制实例

精彩评论

6+4=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏