二十四、Linux的防火墙策略管理
实验环境
主机A :IP 172.254.0.11 白色框
主机B: 内网:IP:172.254.0.10 外网:192.254.0.109 黑色框
主机C :IP 192.168.0.110 黑色框
24.1 防火墙介绍
24.1.1 防火墙介绍
防火墙是一组规则。当数据包进出受保护的网络区域时,进出内容(特别是关于其来源、目标和使用的协议等信息)会根据防火墙规则进行检测,以确定是否允许其通过。
24.1.2 防火墙管理工具
iptables 是 Linux 系统上管理防火墙规则的工具。另一方面,firewalld 也是 Linux 机器上管理防火墙规则的工具。
iptables和firewalld将用户的安全设定执行到内核的netfilter中,他们的作用都是用于维护规则,而真正使用规则干活的是netfilter。
24.1.3 防火墙管理工具的安装以及切换
- 防火墙管理工具的安装
- 防火墙管理工具的切换
24.2 防火墙策略的永久保存
- 方法一:修改配置文件
iptables-save > /etc/sysconfig/iptables
当做实验时可将原来的文件保存 - 方法二:直接保存:
service iptables save
24.3 iptables的使用
24.3.1 三表五链
- 三表:链的集合
标的名称 | 存放的链 |
---|---|
filter | INPUT;OUTPUT;FORWARD (过滤数据包) |
nat | PREROUTING;POSTOUTING ;INPUT ;OUTPUT(用于网络地址转换) |
mangle | INPUT ; OUTPUT;FORWARD ;POSTROUTING ;PREROUTING |
表的含义:
查看三表:
- 五链:规则的集合
链的名称 | 解释 |
---|---|
PREROUTING | 数据包进入路由表之前,对数据包做路由选择前应用此链路中的规则 |
INPUT | 进来的数据包应用此规则链中的规则 |
FORWARD | 转达数据包应用此条数据包的规则 |
OUTPUT | 外出的数据包应用此规则链中的规则 |
POSTROUTING | 数据包做路由选择后发送到网卡接口之前应用此条链中的规则 |
24.3.2 iptables的基本命令
- iptables策略记录文件 :/etc/sysconfig/iptables
- iptables常用命令
iptables的常用命令 | 意义 |
---|---|
-t | 指定表名(默认的表名为filter表) |
-n | 不做解释 |
-L | 查看 |
-A | 添加策略(策略顺序依次叠加) |
-P | 指定协议 |
–dport | 指定目的端口号 |
-s | 源地址 |
-j | 指定动作“ACCEPT允许”“DROP 丢弃”“REJECT 拒绝”“SNAT 源地址转换”“DNAT ,目的地址转换” |
-N | 新建链 |
-E | 更改链的名称 |
-X | 删除链 |
-D | 删除指定规则 |
-I | 插入规则(可指定具体的位置,默认在第一条插入) |
-R | 更改规则 |
-P | 更改默认规则(只能设定为ACCEPT以及DROP) |
-F | 清除所有规则 |
-m | 扩展各种模块 |
- 举例
24.3.3 state模块
state模块是iptables的扩展模块,可以让iptables实现 连接追踪机制 ,它把’‘连接’'分为四种状态。通过state模块判断报文是为了回应我们之前发出的报文还是主动向我们发送的报文,可以防止恶意攻击主动连接到你的主机;还可对RELATED,ESTABLISHED,我们所信任的数据包,指定防火墙规则,避免多条规则检测等待,提高数据传输效率。
数据包状态 | 意义 |
---|---|
NEW | 这个数据包是一条接收到的第一个数据包 |
ESTABLISHED | 正在建立的连接,只要一个数据包发送并接到应答,那么这个连接中的其他数据包的状态就为此状态 |
RELATED | 此状态数据包是指被动生产的响应数据包,而且这个数据包不属于现在任何连接的数据包,是和一个已建立的连接相关的 |
INVALID | 一个呗无法识别或者这个包没有任何状态,一般这种数据包都是被拒绝的 |
- 让防火墙允许通过ssh访问主机和不能通过ssh访问主机
设置防火墙使得172.254.0.11不能通过ssh访问172.254.0.10
重新设置防火墙可以重新使用ssh访问
24.3.4 iptables-NAT表的地址转换
24.3.4.1 SNAT源地址转换
- 在主机A设定网关
- 设置开启机子的内核路由功能
- 在主机B设置地址转换
- 主机A就可以ping通主机C。
24.3.4.2 DNAT目的地址转化
- 在主机B上设置DNAT
24.4 firewalld
24.4.1 firewalld的域
- 域的介绍
域 | 意义/允许那种服务 |
---|---|
trusted | 接受所有的网络连接 |
home | 用于家庭网络;允许接受ssh mdns ipp-client samba-client dhcp-client |
work | 工作网络 ; ssh ipp-client dhcp-cilent |
public | 公共网络; ssh dhcp-client |
dmz | 军级网络 ;ssh |
block | 拒绝所有 |
drop | 丢弃 ;所有数据全部丢弃无任何回复 |
internal | 内部网络; ssh mdns ipp-client samba-client dhcp-client |
external | ipv4网络地址伪装转发; sshd |
libvirt |
- 域的查看:
24.4.2 firewalld的基本管理命令
- firewalld的配置目录
- firewalld的模块目录
- 基本命令
命令 | 意义 |
---|---|
irewall-cmd --state | 查看火墙状态 |
firewall-cmd --get-active-zones | 查看火墙中生效的域 |
firewall-cmd --get-default-zone | 查看默认域 |
firewall-cmd --list-all | 查看默认域中的火墙策略 |
firewall-cmd --list-all --zone=work | 查看指定域的火墙策略 |
firewall-cmd --set-default-zone=trusted | 设定默认域 |
firewall-cmd --get-services | 查看所有可以设定的服务 |
firewall-cmd --permanent --remove-service=cockpit | 移除服务( --permanent #永久) |
firewall-cmd --reload | 重新加载火墙的规则配置 |
firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block | 指定数据来源访问指定域 |
firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block | 删除自定域中的数据来源 |
firewall-cmd --permanent --remove-interface=ens224 --zone=public | 删除指定域的网络接口 |
firewall-cmd --permanent --add-interface=ens224 --zone=block | 添加指定域的网络接口 |
firewall-cmd --permanent --change-interface=ens224 --zone=public | 更改网络接口到指定域 |
- 设定默认域
- 查看所有设定服务
- 指定数据来源访问指定域-将某地址加入拒绝域
- 删除指定域中的数据来源-删除拒绝域中的某地址实现正常通信
24.4.3 firewalld的高级规则
- 设定拒绝172.168.0.11 拒绝通过ssh访问
- 移除上述设定实现正常访问
24.4.4 firewalld的NAT规则
24.4.4.1 SNAT源地址转换
- 在主机B设定地址伪装功能
- 主机A可以连接主机C
- 在主机C上查看发现连接地址为主机B
24.4.4.2 DNAT目的地址转换
- 在主机B上设置端口转发规则,将22端口的数据包目的地址转换为主机A的地址
- 用主机C连接主机B时,发现地址显示为主机A