作者:MIKO_CHEUNG2011 | 来源:互联网 | 2023-08-09 23:54
一、防火墙富规则 firewalld中的富规则更有针对性,优先级在所有的防火墙策略中也是最高的,下面为firewalld富语言规则帮助手册
[root@ web01 ~]# man firewall-cmd [root@ web01 ~]# man firewalld.richlanguagerule[source][destination]service|port|protocol|icmp-block|icmp-type|masquerade|forward-port|source-port[log][audit][accept|reject|drop|mark]rule [family="ipv4|ipv6"] source address="address[/mask]" [invert="True"] service name="service name" port port="port value" protocol="tcp|udp" protocol value="protocol value" forward-port port="port value" protocol="tcp|udp" to-port="port value" to-addr="address" accept | reject [type="reject type"] | drop#富语言规则相关命令 --add-rich-rule='' #在指定的区域添加一条富语言规则 --remove-rich-rule='' #在指定的区删除一条富语言规则--query-rich-rule='' #找到规则返回0,找不到返回1 --list-rich-rules #列出指定区里的所有富语言规则# 查看防火墙配置 [root@web01 services]# firewall-cmd --list-all publictarget: defaulticmp-block-inversion: nointerfaces: sources: services: dhcpv6-client sshports: protocols: masquerade: yesforward-ports: port=6666:proto=tcp:toport=22:toaddr=172.16.1.5source-ports: icmp-blocks: rich rules:
1.实例一 允许10.10.0.1主机能够访问http服务,允许172.16.1.0/24能访问111端口
[root@web01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.10.0.1 service name=http accept' success[root@web01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.1.0/24 port port=111 protocol=tcp accept' success[root@web01 ~]# firewall-cmd --list-all public (active)target: defaulticmp-block-inversion: nointerfaces: eth0 eth1sources: services: sshports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: rule family="ipv4" source address="10.10.0.1" service name="http" acceptrule family="ipv4" source address="172.16.1.0/24" port port="111" protocol="tcp" accept#.测试连接 # 内网网段都可以访问 telnet 172.16.1.7 111 # 内网网段都可以访问 telnet 172.16.1.2 111[D:\~]$ telnet 172.16.1.* 111 #只要在这个网段都可以
2.实例二 默认public区域对外开放所有人能通过ssh服务连接,但拒绝172.16.1.0/24网段通过ssh连接服务器
[root@web01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.1.0/24 service name=ssh reject' success[root@web01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.1.0/24 service name=ssh drop' success#drop和rejectdrop # 直接丢弃,不返回任何内容 reject # 拒绝,会返回拒绝的内容
3.实例三 使用firewalld,允许所有人能访问http,https服务,但只有10.10.0.1主机可以访问ssh服务
[root@web01 ~]# firewall-cmd --add-service={http,https} success[root@web01 ~]# firewall-cmd --remove-service=ssh success[root@web01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.10.0.1 service name=ssh accept'
4.实例四 当用户来源IP地址是10.10.0.1主机,则将用户请求的6666端口转发至后端172.16.1.5的22端口
[root@web01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.10.0.1 forward-port port=6666 protocol=tcp to-port=22 to-addr=172.16.1.5'[root@web01 ~]# firewall-cmd --add-masquerade success
6.查看富规则 [root@web01 ~]# systemctl restart firewalld #启动防火墙[root@web01 ~]# firewall-cmd --list-rich-rules #查看富规则1[root@web01 ~]# firewall-cmd --list-all #查看富规则2
7.禁ping [root@web01 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 protocol value=icmp drop'
二、防火墙备份 我们的防火墙规则,配置永久生效后,会保存在/etc/firewalld/zones/目录下, #名字随便写 只要在/zones/*.xml就行 我们如果要进行同样的防火墙配置,只需要讲该文件推送到新的服务器,并启动防火墙即可 如果要备份,备份的也是/etc/firewalld/zones/目录 [root@web01 ~]# systemctl restart firewalld #启动防火墙 [root@web01 services]# cat /etc/firewalld/zones/public.xmlPublic 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.
九、防火墙内部共享上网 在指定的带有公网的IP的实例上启动firewalld防火墙的NAT地址转换,以此达到内部主机上网
# 1、防火墙备份 我们的防火墙规则,配置永久生效后,会保存在/etc/firewalld/zones/目录下, 我们如果要进行同样的防火墙配置,只需要讲该文件推送到新的服务器,并启动防火墙即可 如果要备份,备份的也是/etc/firewalld/zones/目录# 2、防火墙内部共享上网 在指定的带有公网的IP的实例上启动firewalld防火墙的NAT地址转换,以此达到内部主机上网
1.开启IP伪装 [root@lb01 ~]# firewall-cmd --add-masquerade [root@lb01 ~]# firewall-cmd --add-masquerade --permanent
2.开启内核转发 [root@lb01 ~]# cat /etc/sysctl.conf net.ipv4.ip_forward = 1#CentOS 6 系统需要手动开启,CentOS 7 默认就是开启的[root@lb01 ~]# sysctl -p #生效启动
3.修改内网服务器的网卡 [root@web01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1 GATEWAY=172.16.1.5 #增加一个网关 DNS1=114.114.114.114#重启网卡 [root@web01 ~]# ifdown eth1 && ifup eth1
4.测试 [root@web01 ~]# ip a3: eth1: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:8e:6b:4b brd ff:ff:ff:ff:ff:ffinet 172.16.1.7/24 brd 172.16.1.255 scope global noprefixroute eth1valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe8e:6b4b/64 scope link valid_lft forever preferred_lft forever[root@web01 ~]# ping www.baidu.com PING www.a.shifen.com (112.80.248.75) 56(84) bytes of data. 64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=1 ttl=127 time=11.7 ms 64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=2 ttl=127 time=9.53 ms