(1). 前言

Centos7之后,防火墙就变成了,Firewall,特意抽时间学习下.

(2). firewall重要概念

阻塞区域(block)     :  任何传入的网络数据包都将被阻止。
工作区域(work)      :  相信网络上的其他计算机,不会损害你的计算机。
家庭区域(home)      :  相信网络上的其他计算机,不会损害你的计算机。
公共区域(public)    :  不相信网络上的任何计算机,只有选择接受传入的网络连接。
隔离区域(DMZ)       :  隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用。对于隔离区域,只有选择接受传入的网络连接。
信任区域(trusted)   :  所有的网络连接都可以接受。
丢弃区域(drop)      :  任何传入的网络连接都被拒绝。
内部区域(internal)  :  信任网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。
外部区域(external)  :  不相信网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。

(3). firewall配置文件

在/usr/lib/firewalld/zones/目录下:默认提供了九个zone配置文件:block.xml、dmz.xml、drop.xml、external.xml、 home.xml、internal.xml、public.xml、trusted.xml、work.xml.
在/etc/firewalld/zones目录下,默认只有一个public.xml.
如果给另外一个zone做一些改动,并永久保存,那么会自动生成对应的配置文件.
比如:给work zone增加一个端口:
firewall-cmd --permanent --zone=work --add-port=80/tcp
此时就会生成一个/etc/firewalld/zones/work.xml的配置文件

(4). 通过服务名称管理防火墙

在/usr/lib/firewalld/services/目录中,保存了另外一类配置文件,每个文件对应一项具体的网络服务,如http服务等.在配置文件中记录了项服务所使用的:tcp/udp端口.

我们可以手工管理firewall的规则:
1. 拷贝/usr/lib/firewalld/services/的xml到/etc/firewalld/services目录下(比如:http.xml,重命名为:http-8080.xml,修改配置文件内的端口为:8080).
2. 编缉:/etc/firewalld/zones/public.xml,添加一行:<service name="http-8080"/>
3. 重新加载防火墙配置:firewall-cmd --reload
4. 上面3步的操作,相当于这条命令:firewall-cmd --zone=public --add-service=http --permanent

(5). firewall常用命令

1.查看防火墙状态
firewall-cmd --state
如果显示 not running  表示已经关闭防火墙。

2.关闭防火墙:
systemctl stop firewalld.service

3.禁止开机自启动:
systemctl disable firewalld.service

4.开启防火墙:
systemctl start firewalld.service

5.设置开机自启动:
systemctl enable firewalld.service

6.重启防火墙:
systemctl restart firewalld.service

7.查看防火墙状态:
systemctl status firewalld.service

8.开放80端口对外开放
firewall-cmd --zone=public --add-port=80/tcp --permanent

9.删除开放的80端口开放
firewall-cmd --zone=public --remove-port=80/tcp --permanent
 
10.显示详细
firewall-cmd --list-all
 
11.查看public区加载的服务
firewall-cmd --zone=public --list-services

12.查看public区打开的端口
firewall-cmd --zone=public --list-ports

13.查看支持zones
firewall-cmd --get-zones

14.查询系统支持哪些服务
firewall-cmd --get-services

15.添加端口范围 
firewall-cmd --zone=public --add-port=80-65535/tcp --permanent

16. 端口转发格式如下: 
# firewalld-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>
17.端口转发(请求本机8080端口,转发到:80端口)
firewall-cmd --add-forward-port=port=8080:proto=tcp:toport=80 --permanent
firewall-cmd --remove-forward-port=port=8080:proto=tcp:toport=80 --permanent

18.端口转发(请求本机的8080端口,转发到:10.211.55.5的80端口)
firewall-cmd --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=10.211.55.5 --permanent

(6). 总结