firewalld 防火墙
1、firewalld简介
CentOS 7 默认的防火墙管理工具,firewalld 和 iptables 内部结构都指向 netfilter 这个强大的网络过滤子系统,以实现包过滤防火墙功能。 支持动态更新、加入防火墙zone概念,支持IPv4和IPv6地址。
2、firewalld的区域
firewalld将所有的网络数据流量划分为多个区域,从而简化防火墙管理。根据数据包的源IP地址或传入网络接口等条件,将数据流量转入相应区域的防火墙规则。
区域介绍:
区域 | 默认策略规则 |
---|---|
trusted | 允许所有的数据包 |
home | 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh、mdns、ipp-client、amba-client 与 dhcpv6-client 服务相关,则允许流量 |
work | 拒绝流入的流量,除非与流出的流量数相关;而如果流量与 ssh、ipp-client 与 dhcv6-client 服务相关则允许流量 |
public | 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh、dhcpv6-client 服务 相关则允许流量 |
external | 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量 |
block | 拒绝流入的流量,除非与流出的流量相关 |
drop | 拒绝流入的流量,除非与流出的流量相关 |
3、firewalld防火墙基础命令
3.1 firewall-cmd 命令行工具: firewalld包,默认安装。主要参数如下:
参数 | 作用 |
---|---|
– get-default-zone | 查询默认的区域名称 |
–set-default-zone=<区域名称> | 设置默认的区域,使其永久生效 |
–get-zones | 显示可用的区域 |
–add-source= | 将源自此 IP 或子网的流量导向指定的区域 |
–remove-source= | 不再将源自此 IP 或子网的流量导向某个指定区域 |
–list-all | 显示当前区域的网卡配置参数、资源、端口以及服务等信息 |
–list-all-zones | 显示所有区域的网卡配置参数、资源、端口以及服务等信息 |
–add-port=<端口号/协议> | 设置默认区域允许该端口的流量 |
–remove-port=<端口号/协议> | 设置默认区域不再允许该端口的流量 |
3.2 查看firewalld防火墙运行状态:
- systemctl status firewalld
- firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
3.3 firewall防火墙的启停命令
systemctl start firewalld #启动firewall
systemctl restart firewalld #重启firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
systemctl enable firewalld.service #设置开机启用防火墙
3.4 查看防火墙规则
firewall-cmd --list-all
3.5 查看所有的防火墙策略
firewall-cmd --list-all-zones
3.6 重新加载配置文件
firewall-cmd --reload
3.7 查看生效策略
firewall-cmd --list-all
4、firewall防火墙规则设置
4.1 firewall防火墙添加允许规则
1. 允许全部网段访问本机8080端口:firewall-cmd --permanent --zone=public --add-port=8080/tcp
参数说明:--permanent永久生效,没有此参数重启后失效。--zone=public指定public区域。
2. 允许全部网段访问本机端口段:firewall-cmd --permanent --zone=public --add-port=5080-5081/udp
3. 允许[指定IP]访问本机5080端口:firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.34.31" port protocol="tcp" port="5080" accept"
4. 允许[指定IP]访问本机全部tcp端口:firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.34.31" port protocol="tcp" port="0-65535" accept"
5. 允许[指定IP]访问本机全部端口:firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.34.31" accept"
6. 允许[指定IP段]访问本机5080-5090端口:firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.34.31" port protocol="tcp" port="5080-5090" accept'
7. 允许http服务:firewall-cmd --add-service=http
......
注意:添加或者修改完规则后必须热加载才能生效:firewall-cmd --reload
4.2 firewall防火墙添加禁止规则
1. 禁止[指定IP]访问本机8080端口:firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.34.31" port protocol="tcp" port="8080" reject'
2. 屏蔽[指定IP] (reject):firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=192.168.34.31 reject"
3. 屏蔽[指定IP段] (drop):firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address='x.x.x.x/24' drop"
......
注意:添加或者修改完规则后必须热加载才能生效:firewall-cmd --reload
4.3 firewall防火墙删除添加的规则
1. 删除端口:firewall-cmd --permanent --zone=public --remove-port=8080/tcp
2. 删除IP+端口:firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.34.31" port protocol="tcp" port="5080" accept"
......
注意:添加或者修改完规则后必须热加载才能生效:firewall-cmd --reload