centos7默认使用firewall作为防火墙,其使用方式已经变化。 基于iptables的防火墙被默认不启用,但仍然可以继续使用。 管理工具是firewall-cmd,centos7内核版本是3.10,此版本的内核里防火墙过滤机制是firewalld,使用firewall来管理netfiler,不过底层调用的命令仍然是iptables等。因为这几种daemon是冲突的,所以建议禁用其他几种服务 1.firewall区域

丢弃区域,如果使用丢弃区域,任何进入的数据包将被丢弃。

阻塞区域,如果使用阻塞区域会拒绝进入的网络连接。

公共区域,只接受那些被选中的连接。

外部区域,这个区域相当于路由器的启用伪装(masqierading)选项。

隔离区域,如果想要只允许给部分服务器能被外部访问,可以在DMZ区域中定义。

工作区域,在这个区域,我们只能定义内部网络。

家庭区域,这个区域专门用于家庭环境。

内部区域,这个区域和工作区域类似。

信任区域,信任区域允许所有网络通信通过。

2.Firewall的原则

一个源只能属于一个zone,不能同时使用多个zone

3.一个接口只能属于一个zone,不能同时属于多个zone

如果以上原则都不满足,那么缺省的zone将被应用

一般应用

4.获取防火墙的状态

Firewall-cmd --state

5.不改变条件重新加载防火墙

Firewall-cmd --reload

如果使用--complete-reload 状态信息将会丢失。

6.获取所有支持的服务

Firewall-cmd --get-services

想要列出默认有效的服务,也可以进入下面的目录也能够取得

cd /usr/lib/firewall/services/

如果自己想添加一个服务,首先任选一个服务复制一下。把复制过来的文件重命名。 修改端口号和头部,描述,协议。

7.获取所有支持的icmp协议

Firewall-cmd --get-icmptypes

8.列出全部启用的区域的特性

firewall-cmd --list-all-zones

9.查看默认区域

firewall-cmd --get-default-zone

10.设置默认区域

firewall-cmd --set-default-zone=区域名

public是默认区域

在文件/etc/firewall/firewalld.conf中定义成defaultzone=public

11.获取活动的区域

firewall-cmd --get-active-zones

12.根据接口获取区域即需要查看那个区域和这个接口绑定即查看某个接口是属于那个zone

Firewall-cmd --get-zone-of-interface=接口名

13.将接口增加到区域

Firewall-cmd {-zone区域} --add-interface=接口名

14.修改接口所属区域

Firewall-cmd {-zone区域} --change-interface=接口名

15.从区域中删除一个接口

Firewall-cmd {-zone区域} --remove-interface=接口名

16.查询区域中是否包含某接口

Firewall-cmd {-zone区域} --query-interface=接口名

17.列举区域中启用的服务

Firewall-cmd {-zone区域} --list-services

如果区域被省略了,将使用默认区域

18.启用应急模式阻断所有网络连接,以防出现紧急状况

Firewall-cmd --panic-on

禁用应急模式

Firewall-cmd --panic-off

查询应急模式

Firewall-cmd --query-panic

2.处理永久区域

1.获取永久选项所支持的服务

Firewall-cmd --permanent --get-services

2.获取永久选项所支持的icmp类型列表

Firewall-cmd --permanent --get-icmptypes

3.获取支持的永久区域

Firewall-cmd --permanent --get-zones

4.查看富规则

Firewall-cmd --list-rich-rules

netfilter防火墙总是容易受到规则顺序的影响,因为一条规则在链中没有固定的位置