firewalld防火墙

iptables是自2.4内核以来,linux自带的防火墙软件。但在centos7里,又出现了一个叫firewalld的防火墙软件,它和iptables一样都是通过内核的netfilter来实现的。也就是说iptables和firewalld都是用于维护规则,只不过使用方式有所不同。在centos7里iptables,firewalld都可以使用,但不要用混乱了。

linux centos防火墙保存规则_加载

firewalld配置文件

firewalld文件作用

  • 人性化管理规则
  • 通过服务组织端口分组更加高效,如果一个服务使用若干网络端口,则服务的配置文件就相当于提供了到这些端口的规则管理的批量操作快捷方式。

路径:/usr/lib/firewalld/services说明: firewalld服务默认在此目录下定义了127种服务,可以直接使用。

路径:/usr/lib/firewalld/zones说明: 区域配置文件

路径:/etc/firewalld/zones说明: 默认区域配置文件,配置文件中指定了编写完成的规则

firewalld zones

zone: 简单来说就是防火墙方案,就是一套规则集, 你可以配置多套规则集,按需求切换使用。

# firewall-cmd --get-zones
work drop internal external trusted home dmz public block

zone

说明

drop

拒绝所有外部连接请求

block

拒绝所有外部连接,允许内部发起的连接

public

适用公共环境,拒绝所有外部连接请求,但指定外部连接可以进入

external

特别适用路由器启用了伪装功能的外部网。拒绝所有外部连接请求,只能接收经过选择的连接。

dmz

用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。(受限制的公共连接可以进入)

work

适用于工作网络环境,概念和workgoup一样,也是指定的外部连接允许用于工作区

home

类似家庭组,用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接。

internal

用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接

trusted

可接受所有的网络连接

查看当前使用的zone

# firewall-cmd --get-default-zone 
public

修改当前使用的zone

# firewall-cmd --set-default-zone=work
# firewall-cmd --set-default-zone=public

查看当前使用的zone的规则

# firewall-cmd --list-all

指定查看work这个zone的规则

# firewall-cmd --zone=work --list-all
注意:只要没有使用--zone=指定的zone,都代表默认zone

小结: 默认zone是public,规则默认只允许ssh和ping进来,其它都拒绝。出去访问别的服务器,本机的firewalld是允许的。

firewall-cmd

命令语法

# firewall-cmd [--zone=zone] 动作 [--permanent]

如果不指定–zone选项,则为当前所在的默认区域,–permanent选项为是否将改动写入到区域配置文件中

firewalld状态查询及规则重载

# firewall-cmd --state
#查看状态
# firewall-cmd --reload
#重新加载防火墙,中断用户连接,临时配置清除掉,加载配置文件中的永久配置
# firewall-cmd --complete-reload
#重新加载防火墙,不中断用户的连接(防火墙出严重故障时使用)
# firewall-cmd --panic-on
#紧急模式,强制关闭所有网络连接

firewalld命令中的动作

获取操作
# firewall-cmd  xxx
--get-icmptypes      ##查看支持的所有ICMP类型
--get-zones          ##查看所有区域
--get-default-zone   ##查看当前的默认区域
--get-active-zones   ##查看当前正在使用的区域
--get-services       ##查看当前区域支持的服务
--list-services      ##查看当前区域开放的服务列表
--list-services --zone=home  ##查看指定域开放的服务列表
--list-all           ##查看默认区域内的所有配置,类似与iptables -L -n
--list-all-zones     ##查看所有区域所有配置
更改区域操作
# firewall-cmd  xxx
--set-default-zone=work ##更改默认的区域
新建规则
# firewall-cmd  xxx
--add-interface=eth0 ##将网络接口添加到默认的区域内
--add-port=12222/tcp --permanent ##添加端口到区域开放列表中
--add-port=5000-10000/tcp --permanent ##将端口范围添加到开放列表中;
--add-service=ftp --permanent ##添加服务到区域开放列表中(注意服务的名称需要与此区域支持的服务列表中的名称一致)
--add-source=192.168.1.1 ##添加源地址的流量到指定区域
--add-masquerade ##开启SNAT(源地址转换)
删除规则
# firewall-cmd  xxx
--remove-service=http ##在home区域内将http服务删除在开放列表中删除
--remove-interface=eth0 ##将网络接口在默认的区域内删除
--remove-source=192.168.1.1 ##删除源地址的流量到指定区域

firewalld放行web服务策略配置

# firewall-cmd --get-default-zone 

# firewall-cmd --list-all
# firewall-cmd  --add-port=80/tcp --permanent
或
# firewall-cmd  --add-service=http --permanent
# firewall-cmd --reload