一.Firewalld防火墙概述
动态防火墙后台程序firewalld提供了一个动态管理的防火墙,用以支持网络"zones",以分配对一个网络及其相关链接和界面一定程度的信任。它具备对IPv4和IPv6防火墙设置的支持。它支持以太网桥,并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口。
系统提供了图像化的配置工具firewall-config,system-config-firewall.提供命令行客户端firewall-cmd,用以配置firewalld永久性或非永久性运行时间的改变。依次用iptables工具与执行数据包筛选的内核中的Netfilter通行
数据包的流通有三道防线:
1.server服务本身
如果服务端口没开,数据出不来的。
2.perm 权限(rwx)
服务端口开了,数据可以进来,但是权限被限制。
3.selinux
firewall表格数据能否通过
底层命令iptables 网络过滤功能
input output限制数据包的进出
二.Firewalld启动和控制管理
yum install -y firewalld firewall-config
systemctl start firewalld ##打开防火墙
systemctl enable firewalld ##防火墙开机自启
systemctl disable firewalld ##防火墙开机不自启
systemctl stop firewalld ##关闭防火墙
systemctl mask firewalld ##冻结防火墙
三.Firewalld所有的域
四.使用命令行接口配置防火墙
firewall-cmd --state ##查看防火墙状态
firewall-cmd --get-active-zones ##查看防火墙正在使用活跃的域
firewall-cmd --get-default-zone ##查看防火墙默认使用的域
firewall-cmd --set-default-zone=dmz ##设置默认域为dmz(非军事区)
firewall-cmd --get-zones ##查看防火墙所有的域
firewall-cmd --zone=public --list-all ##查看public域的信息
firewall-cmd --zone=work --list-all ##查看work域的信息
firewall-cmd --list-all-zones ##查看所有的域的信息
firewall-cmd --get-services ##查看防火墙支持的服务名称
systemctl start httpd
firewall-cmd --permanent --add-service=http ##防火墙永久允许http服务
firewall-cmd --reload ##刷新防火墙
此时所有机器都可以访问服务端的http服务
firewall-cmd --permanent --remove-service=http ##防火墙永久移除http服务
firewall-cmd --reload ##刷新防火墙
此时所有机器都不可以访问服务端的http服务
firewall-cmd --permanent --zone=trusted --add-source=172.25.254.77 ##特定ip永久添加
firewall-cmd --reload
172.25.254.77可以访问,其他未添加的ip主机不可以访问
firewall-cmd --permanent --remove-source=172.25.254.77 --zone=trusted
firewall-cmd --zone=block --add-source=172.25.254.77
firewall-cmd --reload
172.25.254.77主机ping不通172.25.254.110。但是给回应:
firewall-cmd --remove-source=172.25.254.77 --zone-drop
firewall-cmd --zone=drop --add-source=172.25.254.77
firewall-cmd --reload
172.25.254.77主机ping不通172.25.254.110。但是不给回应,卡到那个界面不动了
firewall-cmd --remove-interface=eth0 --zone=public
firewall-cmd --change-interface=eth0 --zone=public
firewall-cmd --list-all
firewall-cmd --change-interface=eth0 --zone=trusted
firewall-cmd --list-all --zone=trusted
服务是/usr/lib/firewalld/services/目录中以xml文件格式写的
http服务是以http.xml文件控制的
设置http8080这个服务
firewall-cmd --permanent --remove-service=ssh
可以正常使用ssh服务
firewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload ##ssh服务移除后,不影响之前连接的ssh服务
firewall-cmd --complete-reload ##ssh服务移除之后,影响之前和之后的ssh服务。已经连接ssh服务shell会卡到那