Ros资源网

Centos7系统防火墙基本配置方法

相对于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 提供了以下几个级别:

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