参考文档(写的很详细)
https://www.liquidweb.com/kb/an-introduction-to-firewalld/
下面的命令将配置192.168.1.0/24
整个网段的IP允许访问服务器的22
端口
// 先移除默认开启的没有访问限制的ssh服务
# firewall-cmd --permanent --remove-service=ssh
// 添加复杂规则,只允许指定IP段访问22端口
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'
// 使上面配置生效
# firewall-cmd --reload
// 查看当前配置信息
# firewall-cmd --list-all
备注:
source address
也可以设置为单个IP地址,例如192.168.1.1
port
可以为单个端口或端口范围,例如1-10000
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --remove-port=3306/tcp
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --remove-service=http
firewall-cmd --permanent --add-source=192.168.1.100
注: 白名单中的IP可以任意访问所有服务器可用的端口 这个白名单的作用不是这样的,有待继续研究
firewall-cmd --permanent --add-source=192.168.1.0/24
firewall-cmd --permanent --remove-source=192.168.1.100
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject"
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.0/24' reject"
除了上面的命令添加规则外,还可以直接编辑/etc/firewalld/zones/public.xml
文件(改完后记得执行firewall-cmd --reload
生效)