相对于Centos6防火墙使用的是iptables,而Centos7使用的是filewall,它底层还是使用 iptables 对内核命令动态通信包过滤的,简单理解就是firewall是centos7下管理iptables的新命令。
一、systemctl命令操作防火墙
1、启动防火墙:systemctl start firewalld.service
2、关闭防火墙:systemctl stop firewalld.service
3、重启防火墙:systemctl restart firewalld.service
4、显示防火墙状态:systemctl status firewalld.service
5、开机启动防火墙:systemctl enable firewalld.service
6、开机禁用防火墙:systemctl disable firewalld.service
7、查看防火墙是否开机启动:systemctl is-enabled firewalld.service
二、Firewall区域管理
firewall引入了zone区域概念,firewall 能将不同的网络连接归类到不同的信任级别,Zone 提供了以下几个级别:
- block (阻塞区域)拒绝所有外部发起的连接,返回icmp-host-prohibited,允许内部发起的连接
- dmz (隔离区域)允许受限制的进入连接
- drop (丢弃区域)丢弃所有进入的包,而不给出任何响应
- external (外部区域)只有指定的连接会被接受,一般用于路由转发
- home (家庭区域)允许受信任的计算机被限制的进入连接,类似 homegroup
- internal (内部区域)信任网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。
- public (公共区域)不相信网络上的任何计算机,只有选择接受传入的网络连接。
- trusted(信任区域)信任所有连接
- work (工作区域)允许受信任的计算机被限制的进入连接,类似 workgroup
1、显示支持的区域列表:firewall-cmd --get-zones
2、查看域详情列表:firewall-cmd --list-all-zones
3、查看默认区域:firewall-cmd --get-default-zone
4、设置默认区域:firewall-cmd --set-default-zone=home
5、查看某个区域列表:firewall-cmd --zone=home --list-all
6、查看活动的区域:firewall-cmd --get-active-zones
7、创建自己的区域:firewall-cmd --permanent --new-zone=myself
8、删除区域:firewall-cmd --permanent --delete-zone=myself
三、Firewall服务端口管理
以下带有--permanent永久生效的策略记录(除查看)执行后,必须执行"--reload"参数后才能立即生效,否则要重启后再生效。不带--permanent的命令立即生效,但是reload或者restart后失效。
1、显示防火墙状态:firewall-cmd --state
2、显示服务列表:firewall-cmd --get-services (查看已被firewall提供的一些常用服务)
3、查看某域的服务:firewall-cmd --zone=public --permanent --list-services
PS:(1)加了--permanent 表示永久服务,不加显示所有服务,包含临时服务。(2)不加--zone表示默认区域
4、添加某域的服务:firewall-cmd --zone=public --permanent --add-service=http
5、移除某域的服务:firewall-cmd --zone=public --permanent --remove-service=http
PS:(1)不加--permanent表示临时增加,reload或者restart后失效。(2)不加--zone表示默认区域
6、添加端口:firewall-cmd --zone=home --permanent --add-port=5000/tcp
7、删除端口:firewall-cmd --zone=home --permanent --remove-port=5000/tcp
8、多端口添加:firewall-cmd --zone=home --permanent --add-port=5000-5005/tcp
PS:(1)不加--permanent表示临时增加,reload或者restart后失效。(2)不加--zone表示默认区域。(3)端口后面tcp和udp表示协议
9、查看区域端口情况:firewall-cmd --zone=public --permanent --list-ports
PS:(1)加了--permanent 表示永久服务,不加显示所有服务,包含临时服务。
10、查询服务是否被允许:firewall-cmd --zone=public --query-service=ssh
PS:(1)不加--zone表示默认区域。
11、端口转发
将80端口的流量转发至8080:firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080
将80端口的流量转发至192.168.1.1:firewall-cmd --permanent --zone=public --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.1
将80端口的流量转发至192.168.1.1的8080端口:firewall-cmd --permanent --zone=public --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.1:toport=8080
PS:(1)不加ip地址,默认转发到本地的端口。(2)不加--zone表示默认区域。(3)不加--permanent表示临时增加,reload或者restart后失效。
12、手动编写服务
可以将某个程序需要的端口写在一个自己编写的服务里,然后直接添加这个服务就可以了,这样会很方便。
/usr/lib/firewalld/services创建自己的服务,格式可以拷贝/etc/firewalld/services任意一个服务的。
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Myself Service</short>
<description>This is a myself service</description>
<port protocol="tcp" port="5000"/>
<port protocol="tcp" port="5001"/>
<port protocol="tcp" port="9095"/>
</service>
查找服务:firewall-cmd --get-services |grep myself
13、重新加载配置:firewall-cmd --reload
评论前必须登录!
注册