防火墙(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