防火墙(firewall)

what

1、简介

1、Centos7 默认的防火墙是 firewall,替代了以前的 iptables

2、firewall 使用更加方便、功能也更加强大一些

3、Firewalld与iptables对比

- firewalld 是 iptables 的前端控制器

- iptables 静态防火墙 任一策略变更需要reload所有策略,丢失现有链接

- firewalld 动态防火墙 任一策略变更不需要reload所有策略 将变更部分保存到iptables,不丢失现有链接

- firewalld 提供一个daemon和service 底层使用iptables

- 基于内核的Netfilter

2、基本概念

2.1 Zone
  • 区域如同进入主机的安全门,每个区域都具有不同限制程度的规则
  • 网络连接的可信等级,一对多,一个区域对应多个连接
  • 默认情况下,public区域是默认区域,包含所有接口(网卡)
drop 	拒绝所有的连接
block	拒绝所有的连接
public	 只允许指定的连接 (默认区域)
external	 只允许指定的连接
dmz		 只允许指定的连接
work	 只允许指定的连接
home	 只允许指定的连接
internal	 只允许指定的连接
trusted	 允许所有的连接
2.2 运行时配置和永久配置
–-permanent    永久配置 //需要--reload 重启才能生效
–-runtime     运行时配置(默认)

how

1、安装

centos 默认自带firewall,如果没有则需要自行安装

#yum -y install firewalld firewall-config

2、服务使用

systemctl 选项 firewalld

选项:
    stop:关闭
    start:开启
    restart:重启
    status:状态
    is-enabled:查看是否开机自启
    enable:  开机自启
	disable: 关闭开机自启

3、命令的使用(firewalld-cmd)

firewall 可以看成整个防火墙服务,而 firewall-cmd 可以看成是其中的一个功能,可用来管理端口

3.1 域操作
--get-zones 				查看所有可用区域
--get-default-zone					显示网络接口的默认区域
--set-default-zone				设置网络接口的默认区域
--get-active-zones					显示已激活的所有区域
--get-zone-of-interface		显示指定接口绑定的区域

[–-zone=区域类型] --add-interface=接口(网卡)		为指定接口绑定区域
[–-zone=区域类型] --change-interface=接口(网卡)		为指定的区域更改绑定的网络接口
[–-zone=区域类型] --remove-interface=接口(网卡)		为指定的区域删除绑定的网络接口

–query-interface=接口(网卡)							查询区域中是否包含某接口
--list-all-zones										显示所有区域及其规则

[–-zone=区域类型] --list-all							显示所有指定区域的所有规则

eg:

#为指定接口绑定区域(为ens33绑定work区域)
firewall-cmd --zone=work --add-interface=ens33
3.2 服务操作
[–-zone=区域类型] --list-services			显示指定区域内允许访问的所有服务
[–-zone=区域类型] --add-service			为指定区域设置允许访问的某项服务
[–-zone=区域类型] --remove-service	删除指定区域已设置的允许访问的某项服务
[–-zone=区域类型] --query-service			查询指定区域中是否启用了某项服务

eg:

要启用或禁用 HTTP 服务:
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --zone=public --remove-service=http --permanent
firewall-cmd --reload

注意:开启服务等同于开放服务的端口,两者可选其一

3.3 端口/协议 操作
--list-ports       显示指定区域内允许访问的所有端口

--add-port        为指定区域设置允许访问的端口号
--remove-port     删除指定区域已设置的允许访问端口号

eg:

允许或者禁用 12345 端口的 TCP 流量。
firewall-cmd --zone=public --add-port=12345/tcp --permanent
firewall-cmd --zone=public --remove-port=12345/tcp --permanent
firewall-cmd --reload
3.4 端口转发
--query-masquerade     检查是否允许 NAT 转发
--add-masquerade       开启 NAT 转发
--remove-masquerade    禁止防火墙 NAT 转发 

--add-forward-port     增加nat端口转发规则
--remove-forward-port  删除nat端口转发规则\

语法:
port=portid : proto=protocol : toport=portid : [toaddr=address[/mask]]

eg:

#将本机80端口转发到192.168.1.1的8080端口上
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.1 --permanent