1、从CentOS7开始,默认使用firewall来配置防火墙,没有安装iptables(旧版默认安装)。
2、firewall的配置文件是以xml的格式,存储在 /usr/lib/firewalld/ 和 /etc/firewalld/ 目录中。
(1)系统配置目录,目录中存放定义好的网络服务和端口参数,系统参数,不要修改。
1 /usr/lib/firewalld/ 2 /usr/lib/firewalld/services 3 /usr/lib/firewalld/zones
(2)用户配置目录
1 /etc/firewalld/ 2 /etc/firewalld/services 3 /etc/firewalld/zones
3、特性
(1)firewalld是centos7的一大特性,最大的好处有两个:
1️⃣ drop(丢弃),任何接受的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网路连接。
2️⃣ block(限制),任何接收的网络连接都被IPv4的icmp-host-prohibited信息和IPv6的icmp6-adm-prohibited信息所拒绝。
3️⃣ public(公共),在公共区域内使用,不能相信网络内的其他计算机不会对你的计算机造成危害,只能接收经过选取的连接。
4️⃣ external(外部),特别是为路由器启动了伪装功能的外部网。你不能相信来自网络的其他计算机,不能相信他们不会对你的计算机造成危害,只能接收经过选择的连接。
5️⃣ dmz(非军事区),用于你的非军事区内的电脑,此区域内可公开访问,可以有限的进入你的内部网络,仅仅接收经过选择的连接。
6️⃣ work(工作),用于工作区。你可以基本相信网络内的其他计算机不会危害到你。仅仅接收经过选择的连接。
7️⃣ home(家庭),用于家庭网络。你可以基本相信网络内的其他计算机不会危害到你。仅仅接收经过选择的连接。
8️⃣ internal(内部),用于内部网络。你可以基本相信网络内的其他计算机不会危害到你。仅仅接收经过选择的连接。
9️⃣ trusted(信任),可接受所有的网络连接。
说明:firewalld 的缺省区域是 public。
(2)firewalld有图形界面和工具界面
(3)firewalld的字符界面管理工具是 firewall-cmd
二、配置防火墙
设置防火墙的方式有两种:firewall命令 、 直接修改配置文件
1、firewall命令
例如:对外开放/停止3306端口,供外部的计算机访问。该命令方式添加的端口,可在/etc/firewalld/zones中的对应配置文件中得到体现
#开放 firewall-cmd --zone=public --add-port=3306/tcp --permanent #删除 firewall-cmd --zone=public --remove-port=3306/tcp --permanent #别忘记重启防火墙 systemctl restart firewalld
说明:
2、直接修改配置文件
比如:修改 /etc/firewalld/zones/public.xml
Public For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.
如上,需要开放的端口,已经添加再public这个区域里了。
三、firewall常用命令
1、查看状态
service firewalld status 或 systemctl status firewalld 或 firewall-cmd --state
2、启动、停止、重启
# 启动 service firewalld start 或 systemctl start firewalld # 停止 service firewalld stop 或 systemctl stop firewalld # 重启 service firewalld restart 或 systemctl restart firewalld
3、开机自启动
# 关闭开机自启动 systemctl disable firewalld # 开启开机自启动 systemctl enable firewalld
4、查看防火墙规则
firewall-cmd --list-all
四、其他命令
1、其他基本命令
firewall-cmd --version #查看版本 firewall-cmd --help #查看帮助 firewall-cmd --panic-on #拒绝所有包 firewall-cmd --panic-off #取消拒绝状态 firewall-cmd --query-panic #查看是否拒绝 firewall-cmd --reload #重新加载防火墙,并不中断用户连接(firewalld特性之一动态添加规则) firewall-cmd --complete-reload #重新加载防火墙并中断用户连接(类似于重启服务)
2、zone相关
firewall-cmd --get-zones #显示支持的区域列表 firewall-cmd --get-active-zones #查看当前的区域 firewall-cmd --get-default-zone #查看默认区域 firewall-cmd --set-default-zone=home #设置默认区域为 home firewall-cmd --zone=public --list-interfaces #显示显示公共区域(public)所有接口 firewall-cmd --zone=public --list-all #显示公共区域(public)所有设置 firewall-cmd --get-zone-of-interface=ens33 #查看指定接口 ens33 所属区域 firewall-cmd --zone=internal --change-interface=ens33 #临时修改网络接口 ens33 为内部区域(internal),永久修改加上 --permanent 参数 firewall-cmd --zone=public --add-interface=ens37 #为公共区域(public)增加一个接口 ens37
3、service相关
firewall-cmd --get-service #显示服务列表 firewall-cmd --list-service #显示当前服务 firewall-cmd --enable service=ssh #允许SSH服务通过 firewall-cmd --disable service=ssh #禁止SSH服务通过 firewall-cmd --enable service=samba --timeout=600 #临时允许 samba 服务通过 600 秒 firewall-cmd --permanent --zone=internal --add-service=http #添加 http 服务到内部区域(internal) firewall-cmd --zone=work --add-service=smtp #把 smtp 服务加入工作区域(work) firewall-cmd --zone=work --remove-service=smtp #从工作区域(work)移除 smtp 服务
4、地址伪装
firewall-cmd --zone=external --query-masquerade #查询外部区域(external)是否能伪装ip,结果为yes firewall-cmd --zone=external --add-masquerade #外部区域(external)启用IP伪装(masquerade) firewall-cmd --zone=external --remove-masquerade #外部区域(external)禁用用IP伪装
5、端口转发
# 打开端口转发,首先需要打开IP地址伪装 firewall-cmd --zone=external --add-masquerade # example 1:把外部区域(external)的 22 端口 转发至 3753 firewall-cmd --zone=external --add-forward-port=22:porto=tcp:toport=3753 # example 2:把外部区域(external)的 22 端口转发到 192.168.1.20 的同一端口 firewall-cmd --zone=external --add-forward-port=22:porto=tcp:toaddr=192.168.1.20 # example 3:把外部区域(external)的 22 端口转发到 192.168.1.20 的 52222 端口 firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=52222:toaddr=192.168.1.20