一.firewalld和iptables的关系
firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。
firewalld的配置模式
firewalld的配置文件以xml格式为主(主配置文件firewalld.conf例外),他们有两个存储位置
1、/etc/firewalld/ 用户配置文件
2、/usr/lib/firewalld/ 系统配置文件,预置文件
我们知道每个zone就是一套规则集,但是有那么多zone,对于一个具体的请求来说应该使用哪个zone(哪套规则)来处理呢?这个问题至关重要,如果这点不弄明白其他的都是空中楼阁,即使规则设置的再好,不知道怎样用、在哪里用也不行。
对于一个接受到的请求具体使用哪个zone,firewalld是通过三种方法来判断的:
1、source,也就是源地址 优先级最高
2、interface,接收请求的网卡 优先级第二
3、firewalld.conf中配置的默认zone 优先级最低
这三个的优先级按顺序依次降低,也就是说如果按照source可以找到就不会再按interface去查找,如果前两个都找不到才会使用第三个,也就是firewalld.conf中配置的默认zone。
在此之前需要先关闭iptables 打开firewalld防火墙
二.使用命令接口访问防火墙
firewall-cmd --state ##查看火墙状态
firewall-cmd --get-active-zones ##查看火墙目前所允许的域
firewall-cmd --get-default-zone ##默认数据所流通时所用的规则
firewall-cmd --get-zones ##所有的域
firewall-cmd --zone=public --list- ##查看public域的信息
firewall-cmd --all-zones ##所有域的信息
firewall-cmd --list-all ##火墙所与寻的策略
firewall-cmd --get-services ##列出火墙中可以用名称显示的服务
三.域的设定不一样造成的效果不一样
下载一个 hpptd
systemctl start hpptd
echo westos>/var/www/html/index.html 将westos倒入到http的根目录下可以看见
firewall-cmd --set-default-zones=srusted (trusted是所有都可以)
ip登陆查看
四.对ip和网络接口的控制
给desktop添加一个新的网卡
两个网卡配置如下:
将域改回来发现httpd不能访问了
firewall-cmd --add-source=172.25.30.250 --zone=trusted ##只有172.25.254.30.250/24的ip访问时是用的trusted域,trusted域可以访问任何
在主机172.25.30.250测试
firewall-cmd --remove-source=172.25.30.250 --zone=trusted ##删除ip172.25.30.250
firewall-cmd --remove-source=172.25.30.250/24 --zone=trusted ##删除网段172.25.30.250/24、
测试 172.25.30.135 失败
五.修改端口默认走的区域:
firewall-cmd --list-interfaces ##查看系统生效的网络接口
firewall-cmd --get-zone-of-interface=eth1 ##查看eth1的接口默认走的区域
firewall-cmd --get-zone-of-interface=eth0 ##查看eth0的接口默认的区域
firewall-cmd --change-interface=eth0 --zone=trusted ##修该eth0接口的区域为trusted
firewall-cmd --remove-interface=eth0 --zone=trusted ##将trusted从eth0端口移除
firewall-cmd --add-interface=eth0 --zone=public ##添加public域到eth0端口
六.保存火墙策略
firewall-cmd --permanent --add-cource=172.25.30.111
firewall-cmd --reload ##刷新策略是其生效
firewall-cmd --list-all ##查看系统生效的册策略
七.用配置文件更改策略
grep 172.25.30.111 -r /etc ##过滤/etc下的配置文件172.25.30.111
vim /etc/firewalld/zones/public.xml ##打开配置文件 进行修改添加http策略查看是否生效
systemctl restart firewalld ##刷新防火墙查看是否生效
firewall-cmd --list-all 生效
用端口的方式来
添加端口
firewall-cmd --add-port=8080/tcp --zone=public
访问权力的更改
firewall-cmd --remove-service=ssh ##临时更改ssh端口
firewall-cmd --reload ##刷新策略之后
firewall-cmd --list-all ##查看火墙允许的策略发现又从新生效了
firewall-cmd --permanent --remove-service=ssh ##永久删除ssh端口
firewall-cmd --reload ##刷新策略之后
firewall-cmd --list-all ##查看火墙允许的策略发现消失
但是已经连接的ssh 不会中断 还可以使用命令
firewall-cmd --complete-reload 永久关闭并中断当前连接