1. 简介
Centos7
默认的防火墙是 firewall
,替代了以前的 iptables
查看 firewall
版本:
firewall-cmd --version
2. 安装firewall 防火墙
# 安装前检查是否已经安装
yum -y install firewalld
3. firewalld 服务基本使用
firewall
与 iptables
一样都是服务,所以可以使用 systemctl
服务管理工具来操作
# 查看防火墙状态
systemctl status firewalld
# 关闭防火墙,停止 firewall 服务
systemctl stop firewalld
# 开启防火墙,启动 firewall 服务
systemctl start firewalld
# 重启防火墙,重启 firewall 服务
systemctl restart firewalld
# 查看 firewall 服务是否开机启动
systemctl is-enabled firewalld
# 开机时自动启动 firewall 服务
systemctl enable firewalld.service
# 开机时自动禁用 firewall 服务
systemctl disable firewalld.service
4. firewalld防火墙配置文件介绍
- 人性化管理规则
- 通过服务组织端口分组更加高效,如果一个服务使用若干网络端口,则服务的配置文件就相当于提供了到这些端口的规则管理的批量操作快捷方式
路径: /usr/lib/firewalld/services
说明: firewalld
服务默认在此目录下定义了127种服务,可以直接使用
路径: /usr/lib/firewalld/zones
说明: 区域配置文件
路径: /etc/firewalld/zones
说明:默认区域配置文件,配置文件中指定了编写完成的规则
5. firewalld zones介绍
Zone:简单来说就是防火墙方案,就是一套规律集,你可以配置多套规则集,按需求切换使用
# 查看所有的规则集,默认只有一套使用
firewall-cmd --get-zones
zone | 说明 |
---|---|
drop | 拒绝所有外部连接请求 |
block | 拒绝所有外部连接,允许内部发起的连接 |
public | 适用于公共环境,拒绝所有外部连接请求,但指定外部连接可以进入 |
external | 特别适用路由器启用了伪装功能的外部网。拒绝所有外部连接请求,只能接收经过选择的连接 |
dmz | 用于您的非军事区内的电脑,此区域可公开访问,可以有限的进入您的内部网络,仅仅接收经过选择的连接。(受限制的公共连接可以进入) |
work | 适用于工作网络环境,概念和workgroup一样,也是指定的外部连接允许用于工作区 |
home | 类似家庭组,用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接 |
internal | 用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接 |
trusted | 可接受所有的网络连接 |
# 查看当前使用的zone
firewall-cmd --get-default-zone
# 查看当前规则集里面的规则
firewall-cmd --list-all
# 查看指定zone为work的规则,其他zone类似
firewall-cmd --zone=work --list-all
默认zone是public,规则默认只允许ssh和ping近来,其他都拒绝。出去访问别的服务器,本机的firewall是允许的.
# 修改当前使用的zone
firewall-cmd --set-default-zone=work
6. firewall-cmd 命令介绍
1. 命令语法
firewall-cmd [--zone=zone] 动作 [--permanent]
如果不指定--zone选项,则为当前所在的默认区域,--permanent选项是否将改动写入到区域配置文件中
2. firewalld状态查询及规则重载
# 查看状态
firewall-cmd --state
# 重新加载防火墙,中断用户连接,临时配置清除掉,加载配置文件中的永久配置
firewall-cmd --reload
# 重新加载防火墙,不中断用户的连接(防火墙出严重故障时使用)
firewall-cmd --complete-reload
# 紧急模式,强制关闭所有网络连接
firewall-cmd --panic-on
3. firewalld命令中的查询动作
# 查看支持的所有ICMP类型
firewall-cmd --get-icmptypes
# 查看所有区域
firewall-cmd --get-zones
# 查看当前的默认区域
firewall-cmd --get-default-zone
# 查看当前正在使用的区域
firewall-cmd --get-active-zones
# 查看当前区域支持的服务
firewall-cmd --get-services
# 查看当前区域开放的服务列表
firewall-cmd --list-services
# 查看指定区域的服务列表
firewall-cmd --list-services --zone=home
# 查看默认区域内的所有配置,类似与iptables -L -n
firewall-cmd --list-all
# 查看所有区域所有配置
firewall-cmd --list-all-zones
# 查看已打开的所有端口
firewall-cmd --zone=public --list-ports
4. firewalld命令中的更改区域操作
# 更改默认区域
firewall-cmd --set-default-zone=work
5. firewalld命令中的新建规则
# 将网络接口添加到默认的区域内
firewall-cmd --add-interface=eth0
# 添加端口到区域开放列表中
firewall-cmd --add-port=12222/tcp --permanent
# 将端口范围添加到开放列表中
firewall-cmd --add-port=5000-10000/tcp --permanent
# 添加服务到区域开放列表中(注意服务名称需要和此区域支持的服务列表中的名称一致)
firewall-cmd --add-service=ftp --permanent
# 添加原地址的流量到指定区域
firewall-cmd --add-source=192.168.1.1
# 开启SNAT(原地址转换)
firewall-cmd --add-masquerade
6. firewalld命令中的删除规则
# 在home区域将http服务移除
firewall-cmd --remove-service=http
# 将网络接口在默认的区域内删除
firewall-cmd --remove-interface=eth0
# 删除源地址的流量到指定区域
firewall-cmd --remove-source=192.168.1.1
# 关闭 9876 端口
firewall-cmd --zone=public --remove-port=9898/tcp --permanent
7. firewalld放行WEB服务策略配置示例
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent
或者
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload