firewalld配置只允许指定IP地址访问

之前记录过这篇笔记:使用firewall-cmd限制ssh只能从指定IP段访问,现在对安全的要求更严格了,对内网环境的特定服务器,现在只允许指定IP或IP段进行访问,其他一律屏蔽,配置步骤如下:


# 先确认并开启firewalld服务

$ sudo systemctl status firewalld

$ sudo systemctl enable firewalld

$ sudo systemctl start firewalld

# 直接编辑xml配置文件,比用firewall-cmd命令更方便其实(CentOS7里面默认就一个public.xml配置文件)

# Ubuntu系统中的默认public.xml配置文件位于/usr/lib/firewalld/zones

$ sudo vim /etc/firewalld/zones/public.xml


配置文件修改内容,移除所有<service>标签内容,然后添加允许访问的IP或IP段:


<?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>

  <!-- 允许单个IP地址访问本服务器所有端口 -->

  <rule family="ipv4">

    <source address="10.1.1.13/32"/>

    <accept/>

  </rule>

  <!-- 允许IP段访问本服务器所有端口 -->

  <rule family="ipv4">

    <source address="10.1.2.0/24"/>

    <accept/>

  </rule>

  <!-- 允许IP段访问本服务器指定端口 -->

  <rule family="ipv4">

    <source address="10.1.3.0/24"/>

    <port protocol="tcp" port="22"/>

    <accept/>

  </rule>

  <!-- 允许IP段访问本服务器指定端口范围 -->

  <rule family="ipv4">

    <source address="10.1.4.0/24"/>

    <port protocol="tcp" port="1000-1200"/>

    <accept/>

  </rule>

  <!-- 禁止指定IP访问本服务器 -->

  <rule family="ipv4">

    <source address="10.1.1.1"/>

    <reject/>

  </rule>


</zone>


改完配置文件后重载一下防火墙服务


$ sudo firewall-cmd --reload