Linux中的火墙策略优化
防火墙
作用:
- 极大地提高一个内部网络的安全性,并通过过滤不安全的服务而降低风险。
- 对网络存取和访问进行监控审计。
- 防止内部信息的外泄。
火墙管理工具的切换(linux)
火墙管理工具:firewalld和iptables
-
firewalld切换iptabels
- dnf install iptables-services -y
- systemctl stop firewalld
- systemctl disable firewalld
- systemctl mask firewalld
- systemctl enable --now iptables
-
iptables切换firewalld
- dnf install firewalld -y
- systemctl stop iptables
- systemctl disable iptables
- systemctl mask iptables
- systemctl enable --now firewalld
火墙默认策略
-
默认策略的5条链
input 输入 output 输出 forward 转发 postrouting 路由之后 prerouting 路由之前 -
默认的3张表
filter 经过本机内核的数据(input output forward) nat 不经过内核的数据(postrouting,prerouting,input,output) mangle 当filter和nat表不够用时使用(input output forward postrouting,prerouting,)
firewalld管理工具的使用方法
-
开启firewalld服务
- systemctl stop iptables
- systemctl disable iptables
- systemctl mask iptables
- systemctl unmask firewalld
- systemctl enable --now firewalld
-
关于firewall的域
firewall-cmd --get-zones 查看所有的域 firewall-cmd --get-active-zones 查看当前火墙生效的域 firewall-cmd --list-all-zones 查看所有的域的详细信息 firewall-cmd --list-all --zone=域名 查看指定域名的详细信息 firewall-cmd --get-default-zone 查看默认域 firewall-cmd --set-default-zone=trusted 设定默认域
| firewalld所有的域 | 用途 |
|---|---|
| trusted | 接受所有的网络连接 |
| home | 用于家庭网络,允许接受ssh mdns ipp-client samba-client dhcp-client |
| work | 工作网络 ssh ipp-client dhcp-client |
| public | 公共网络 ssh dhcp-client |
| dmz | 军级网络 ssh |
| block | 拒绝所有 |
| drop | 丢弃 所有数据全部丢弃无任何回复 |
| internal | 内部网络 ssh mdns ipp-client samba-client dhcp-client |
| external | ipv4网络地址伪装转发 sshd |
-
关于firewalld的设定原理及数据存储
/etc/firewalld ##火墙配置目录
/lib/firewalld ##火墙模块目录 -
firewalld的管理命令
| firewall-cmd --get-services | 查看所有可以设定的服务 |
|---|---|
| firewall-cmd --permanent --remove-service=cockpit | 永久添加cockpit服务 |
| firewall-cmd --permanent --remove-service=cockpit | 永久移除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 | 更改网络接口到指定域 |
-
添加服务和移除服务
-
指定数据来源访问指定域
-
更改指定域的网络接口
- firewalld的高级规则
| firewall-cmd --direct --get-all-rules | 查看高级规则 |
|---|---|
| firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.103 -p tcp --dport 22 -j REJECT | 拒绝ip为172.25.254.103的主机用SSH连接我的主机 |
| firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -s 172.25.254.103 -p tcp --dport 22 -j REJECT | 删除这条规则 |
-
firewalld 中的 NAT
-
SNAT(地址伪装功能)
作用:能够使在建立过网关的两台主机之间,可以互相的ping通,但是在本访问的主机上,显示的是做地址伪装主机的ip
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload -
DNAT(目的地地址转换)
作用:当其他主机访问做了DNAT的主机时,会访问到另一个ip地址,
firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toaddr=1.1.1.103
firewall-cmd --reload
-
注: 如果在每条命令后面加入–permanent 指的是永久保存,需要firewall-cmd --reload 重新加载一下,如果命令后不加–permanent则在每次刷新之后,所写的火墙策略就会失效。
iptables工具
-
iptables常用命令
iptables 后的参数 作用 -t 指定表名称 -n 不做解析 -L 查看 -F 刷新 -A 添加策略 -p 协议 –dport 目的地端口 -s 来源 -j 动作 -j ACCEPT 允许 -j DROP 丢弃 -j REJECT 拒绝 -j SNAT 源地址转换 -j DNAT 目的地地址转换 -N 新建链 -E 更改链名称 -X 删除链 -D 删除规则 -I 插入规则 -R 更改规则 -P 更改默认规则
-
查看火墙策略或者刷新火墙策略(-nL 默认显示filter表里面的策略)
-
新建链,更改链名和删除链以及修改链的默认规则
-
火墙策略的添加,修改以及删除
- 数据包状态
| RELATED | 建立过连接的 |
|---|---|
| ESTABLISHED | 正在连接的 |
| NEW | 新的 |
火墙的基本策略:
- iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT ##所有建立过连接的或者正在连接的数据包都被接受
- iptables -A INPUT -m state --state NEW -i lo -j ACCEPT ##属于自身回环的新数据包都被接受
- iptables -A INPUT -m state --state NEW -j REJECT ##其他所有新的数据包会被拒绝(也可以另外写)
- 永久保存(如果没有永久保存的话,一重启服务所有写的策略都失效了)
iptables-save > /etc/sysconfig/intables
- nat 表中的dnat 和snat
-
snat
iptable -t nat -A POSTROUTING -o enp1s0 -j SNAT --to-source 172.25.254.203 -
dnat
iptables -t nat -A PREROUTING -i enp1s0 -j DNAT --to-dest 1.1.1.103