一、需求:
在某大型企业内网对服务器进行防火墙配置达到如下效果:
1、只允许11.0.44.240-11.0.44.248 9个地址对该服务器的完全访问无限制
2、只允许11.0.44.240-11.0.44.248 地址 ping服务器(icmp协议)
二、环境:
Centos 7.3 和 firewall 防火墙
三、操作:
1、删除一切相关配置文件和清楚规则
[root@localhost /]# find /etc/firewalld/ -name *.xml -exec rm -rf {} \; #删除防火墙目录下的所有xml文件
[root@localhost /]# iptables -P INPUT ACCEPT # 确保iptables防火墙input为允许 非常重要
[root@localhost /]# iptables -F # 清除iptables 所有规则
遇到的坑(大坑和小坑):
大坑
centos 7版本默认开启了两个防火墙 分别是firewall 和 iptables 两个防火墙配置的策略都生效。之前iptables INPUT 被设置成了DROP,规则允许了 指定的IP地址访问。iptable -F后允许的规则被清除,INPUT DROP没有改变,设备在机房不在本地,不能被远程控制、管理和相关应用了。 所以在 iptables -F 前一定要,iptables -P INPUT ACCEPT。
小坑
发现在配置防火墙时firewall 一会生效 restart后 又不生效,检查多次策略配置没问题,后来发现/etc/firewalld/目录下有几个xml文件影响了防火墙,删除后一切ok终于搞定。
2、移除public zone的ssh和dhcpv6-client
防火墙public zone为默认区,开放了 ssh 和 dhcpv6-client服务
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@localhost /]# firewall-cmd --permanent --remove-service=ssh
success
[root@localhost /]# firewall-cmd --permanent --remove-service=dhcpv6-client
success
3、增加指定IP 允许访问权限
[root@localhost /]#firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="11.0.44.240/29" accept' #指定了11.0.44.240-11.0.44.247 8个ip允许访问
[root@localhost /]#firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="11.0.44.248" accept'
[root@localhost /]#firewall-cmd --permanent --add-rich-rule='rule family="ipv4" protocol value="icmp" source ddress="11.0.44.248" accept' #指定了11.0.44.248 ip允许icmp
[root@localhost /]#firewall-cmd --permanent --add-rich-rule='rule family="ipv4" protocol value="icmp" source NOT address="11.0.44.240/29" reject' #指定了11.0.44.240-11.0.44.247 8个ip允许icmp
success
[root@localhost /]#firewall-cmd --reload #加载规则列表
[root@localhost /]#firewall-cmd --list-all #列出所有规则
[root@localhost /]#systemctl restart firewalld #重启firewalld服务