firewalld和iptables的关系
Firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不firewalld和iptables的结构以及使用方法不一样罢了。
firewalld的配置模式
firewalld的配置文件以xml格式为主,(主配置文件firewalld。conf例外),他们有两个存储
1、 /etc/firewalld 用户主配置文件
2、/etc/lib/firewalld 系统配置文件,预置文件
我们知道每个zone就是一套规则集,但是有那么多zone,对于一个具体的请求来说应该使用哪个zone(哪套规则)来处理呢?这个
问题至关重要,如果这点不弄明白其他的都是空中阁楼,即使规则设置的再好,不知道怎样用、在哪里用也不行、
对于一个接受的请求具体使用哪个zone,firealld是通过三种方式来判断:
1、source,也就是源地址 优先级最高
2、 interface , 接收请求的网卡 优先级第二
3、 firewalld.conf 中配置的默认zone 优先级最低
这三个优先级按顺序一次降低,也是说如果按照source可以找到就不会再按interface去查找发,如果前两个都找不到才会使用第三
个,也就是在前说的firewalld.conf中配置默认zone。
安装firewalld,运行、停止、禁用firewalld
root执行 #yum -y install firewalld
启动 # systemctl start firewalld
查看状态 #systemctl status firewalld 或者 firewalld-cmd --state
停止 #systemctl disables firewalld
禁用 #systemctl stop firewalld
配置firewalld
查看版本:$ firewall-cmd --version
查看帮助:$ firewall-cmd --help
查看设置:
显示状态:$ firewall-cmd --state
查看区域信息: $ firewall-cmd --get-active-zones
查看指定接口所属区域:$ firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:# firewall-cmd --panic-on
取消拒绝状态:# firewall-cmd --panic-off
查看是否拒绝:$ firewall-cmd --query-panic
更新防火墙规则:# firewall-cmd --reload
# firewall-cmd --complete-reload
两者的区别就是第一个无需断开连接,就是firewalld特性之一动态添加规则,第二个需要断开连接,类似重启服务
将接口添加到区域,默认接口都在public
# firewall-cmd --zone=public --add-interface=eth0
永久生效再加上 --permanent 然后reload防火墙
设置默认接口区域
# firewall-cmd --set-default-zone=public
立即生效无需重启
打开端口(貌似这个才最常用)
查看所有打开的端口:
# firewall-cmd --zone=dmz --list-ports
加入一个端口到区域:
# firewall-cmd --zone=dmz --add-port=8080/tcp
若要永久生效方法同上
打开一个服务,类似于将端口可视化,服务需要在配置文件中添加,/etc/firewalld 目录下有services文件夹,这个不详细说了,详情参考文档
# firewall-cmd --zone=work --add-service=smtp
移除服务
# firewall-cmd --zone=work --remove-service=smtp