2.Linux系统-centos7.6 防火墙firewalld详解
1.firewalld了解
CentOS 7.6默认的防火墙管理工具是firewalld,它取代了之前的iptables防火墙。firewalld属于典型的包过滤防火墙或称之为网络层防火墙,与iptables一样,都是用来管理防火墙的工具(属于用户态)来定义防火墙的各种规则功能,内部结构都指向netfilter这一强大的网络过滤子系统(属于内核态)以实现包过滤防火墙功能。
firewalld支持动态更新,同时支持IPv4和IPv6,可以通过字符管理工具(Firewall-cmd)和图形化管理工具(Firewall-config)进行管理。它还加入了“区域”(zone)的概念,将所有网络流量分为多个区域(zone),然后根据数据包的源IP地址或传入的网络接口条件等将流量传入相应区域,每个区域都定义了自己打开或者关闭的端口和服务列表。其中默认区域为public。
firewalld基于区域,根据不同的区域来设置不同的规则,从而保证网络的安全。与硬件防火墙的设置相类似。
此外,firewalld提供了支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具,这使得其成为动态的,允许创建、更改和删除规则,而无需在每次更改规则时重新启动防火墙守护程序。
2.firewalld相关命令
2.1 firewalld 启动,状态,开启
[root@zbx-server ~]# systemctl stop firewalld #关闭防火墙 [root@zbx-server ~]# systemctl status firewalld #查看防火墙状态 [root@zbx-server ~]# systemctl start firewalld #开启防火墙
2.2 查看防火墙的配置
[root@zbx-server ~]# firewall-cmd --state running [root@zbx-server ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
2.3开放和关闭防火墙端口
[root@zbx-server ~]# firewall-cmd --list-port #查看防火墙端口 [root@zbx-server ~]# firewall-cmd --permanent --add-port=8080/tcp #开放8080端口:--permanent 表示这个规则是永久的,即使重启系统也不会消失,如果你想要临时添加规则而不是永久的,可以去掉 --permanent 参数,这样规则只在当前会话中有效, 重启系统后会失效。;--add-port=80/tcp 表示添加一个允许TCP协议通过端口80的规则 success [root@zbx-server ~]# firewall-cmd --list-ports #查看防火墙端口,没有生效,需要重新加载--reload才能生效 [root@zbx-server ~]# firewall-cmd --reload #--reload,需要重新加载才能生效 success [root@zbx-server ~]# firewall-cmd --list-ports #查看防火墙端口 8080/tcp [root@zbx-server ~]# firewall-cmd --permanent --remove-port=8080/tcp #移除防火墙端口 success [root@zbx-server ~]# firewall-cmd --reload #重新加载防火墙,使配置生效 success [root@zbx-server ~]# firewall-cmd --list-ports #查看防火墙端口
2.4 放开某个端口段
[root@zbx-server ~]# firewall-cmd --permanent --zone=public --add-port=1000-2000/tcp success [root@zbx-server ~]# firewall-cmd --reload success [root@zbx-server ~]# firewall-cmd --list-ports 1000-2000/tcp
2.5 开放和禁止某个IP访问
开放IP:192.168.142.90
禁止IP:10.10.10.8
[root@zbx-server ~]# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="192.168.142.90" accept' success [root@zbx-server ~]# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="10.10.10.8" drop' success [root@zbx-server ~]# firewall-cmd --reload success [root@zbx-server ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: ssh dhcpv6-client ports: 1000-2000/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: rule family="ipv4" source address="192.168.142.90" accept rule family="ipv4" source address="10.10.10.8" drop
移除以上规则
[root@zbx-server ~]# firewall-cmd --permanent --remove-rich-rule='rule family=ipv4 source address="192.168.142.90" accept' success [root@zbx-server ~]# firewall-cmd --permanent --remove-rich-rule='rule family=ipv4 source address="10.10.10.8" drop' success [root@zbx-server ~]# firewall-cmd --reload success [root@zbx-server ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: ssh dhcpv6-client ports: 1000-2000/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: [root@zbx-server ~]#
2.6 放开某个IP段的访问
[root@zbx-server ~]# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.0.0.0/24 accept' success [root@zbx-server ~]# firewall-cmd --reload success [root@zbx-server ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: ssh dhcpv6-client ports: 1000-2000/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: rule family="ipv4" source address="10.0.0.0/24" accept [root@zbx-server ~]#