linux中的火墙策略优化
实验环境
一台单网卡主机westosb
ip 1.1.1.211
一台双网卡主机westosa
ip 172.25.254.111
1.1.1.111
hostnamectl set-hostname westosa.westos.org
2 cd /etc/sysconfig/network-scripts/
3 ls
4 rm -fr ifcfg-westos
编写ens3网卡配置文件
[[email protected] network-scripts]# cat ifcfg-ens3
DEVICE=ens3
ONBOOT=yes
BOOTPROTO=none
IPADDR=172.25.254.111
PREFIX=24
复制网卡文件
cp ifcfg-ens3 ifcfg-ens11 ##复制网卡文件
编写ens11网卡配置文件
[[email protected] network-scripts]# cat ifcfg-ens11
DEVICE=ens11
ONBOOT=yes
BOOTPROTO=none
IPADDR=1.1.1.111
PREFIX=24
删除多余网络
nmcli connection delete Wired\ connection\ 1
更新网络
nmcli connection reload
查看是否成功
[[email protected] ~]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# ls
ifcfg-ens11 ifcfg-ens3
ping 172.25.254.11 ##都可以ping通
ping 1.1.1.211 ##可以ping通
火墙管理工具切换
在rhel8中默认使用的是firewalld
如果需要使用iptables来管理火墙,需要进行如下操作:
firewalld----->iptables
dnf install iptables-services -y ##在westosa中从软件仓库中安装火墙管理软件iptables-services
systemctl stop firewalld ##停止firewalld服务
systemctl disable firewalld ##关闭firewalld服务
systemctl mask firewalld ##冻结(mask)firewalld服务
systemctl enable --now iptables
iptables -------> fiewalld
dnf install firewalld -y
systemctl stop iptables ##停止iptables服务
systemctl disable iptables ##关闭iptables服务
systemctl mask iptables ##冻结(mask)iptables服务
systemctl unmask firewalld ##解锁(unmask)后开启firewalld服务
systemctl enable --now firewalld ##开启firewalld服务
firewalld
systemctl stop iptables ####停止firewalld服务
systemctl disable iptables ##关闭firewalld服务
systemctl mask iptables ##冻结(mask)firewalld服务
systemctl unmask firewalld ##解锁(unmask)后开启firewalld服务
systemctl enable --now firewalld ##开启firewalld服务
火墙的图形管理
dnf install firewall-config-0.8.0-4.el8.noarch -y
在Applications--->Sundry--->Firewall打开
2、关于firewalld的域
firewalld通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流,具体划分区域如下:
区域 区域策略描述
trusted (信任) 接受所有的网络连接
home(家庭网络) 仅仅接受家庭网络内经过选择的连接
work (工作网络) 仅仅接受工作网络内经过选择的连接
public (公共网络) 仅仅接受公共区域内经过选择的连接
dmz (非军事区) 此区域内可公开访问有限内部网络,仅仅接收经过选择的连接
block (限制) 拒绝所有网络连接
drop (丟弃) 所有接收的网络数据包全部丢弃无任何回复
internal (内部网络) 仅仅内部网络接受经过选择的连接
external (外部网络) 即经过ipv4网络地址伪装转发的外部网络,只能接收经过选择的连接
3、关于firewalld的设定原理及数据存储
/etc/firewalld ##火墙配置目录
/lib/firewalld ##火墙模块目录
4.、firewalld的管理命令
firewall-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 ##移除服务
firewall-cmd --reload
firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block ##指定数据来源访问指定域
firewall-cmd --reload
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 ##更改网络接口到指定域
5、firewalld的高级规则
实验:
dnf install httpd -y ##下载http
53 firewall-cmd --permanent --add-service=http ##将http添加到火墙允许访问服务
54 firewall-cmd --reload ##重载火墙服务
**** 64 firewall-cmd --direct --get-all-rules ##查看高级规则
**** 65 firewall-cmd --direct --add-rule ipv4 filter INPUT 1 ! -s 172.25.254.11 -p tcp --dport 80 -j REJECT ##设定高级规则:只有172.25.254.11可以访问本机http
firewall-cmd --reload ##reload之后设置的规则会被清空,不想清空,设置永久规则,--add-forward-rule
注意: direct命令进行高级规则设定时,必须先开启对应的服务,如果服务本身不被允许,相应的高级规则设定后仍无法生效
6、firewalld中的NAT
SNAT
vim /etc/sysconfig/network ##先设置单王卡网关
//
GATEWAY=1.1.1.111
//
78 firewall-cmd --permanent --add-masquerade ##开启火墙的地址伪装功能即可
80 firewall-cmd --reload ##刷新火墙使设定生效
此时在1.1.1网段的虚拟机westosb中可以ping通172.25.254网段的真实主机
DNAT目的地地址转换
注意: 进行DNAT转换时,防火墙的地址伪装功能必须打开
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.211 ##在防火墙中添加策略,将所有通过22端口输入、使用tcp协议的访问请求数据包转发给虚拟机westosb 1.1.1.211的22端口
firewall-cmd --reload
firewall-cmd --remove-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.211 ##在防火墙中添加策略,将所有通过22端口输入、使用tcp协议的访问请求数据包转发给虚拟机westosb 1.1.1.211的22端口
w -i ##查看是谁刚才访问的本机
火墙默认策略—三表五链
默认策略中的5条链
默认策略中的5条链 含义
input 输入
output 输出
forward 转发
postrouting 路由之后
prerouting 路由之前
默认策略中的3张表
默认表 表中存放数据
filter 经过本机内核的所有数据(input output forward)
nat 不经过内核的数据(postrouting prerouting input output)
mangle 当filter和nat表不够用时使用,表中记录对链数据的补充解释说明(input output forward postrouting prerouting)
iptables命令
iptables
-t ##指定表名称
-n ##不做解析
-L ##查看
-A ##添加策略
-p ##指定协议
--dport ##指定目的地端口
-s ##指定来源
-j ##指定动作
ACCEPT ##允许
DROP ##丢弃
REJECT ##拒绝
SNAT ##源地址转换
DNAT ##目的地地址转换
-F ##清空表中策略
-N ##新建链
-E ##更改链名称
-X ##删除链
-D ##删除规则
-I ##插入规则
-R ##更改规则
-P ##更改默认规则
实验
需要使用iptables来管理火墙,进行如下操作:
firewalld----->iptables
dnf install iptables-services -y
111 systemctl stop firewalld
112 systemctl disable firewall
113 systemctl disable firewalld
114 systemctl mask firewalld
systemctl unmask iptables ##如果iptables被冻结(mask)的话执行此条命令
118 systemctl enable --now iptables
实验iptables命令:
119 iptables -t filter -L ##-L查看指定filter表,可以看到表中包含的经过本机内核的数据链input、output、forward
120 iptables -t filter -nL ##-nL查看指定filter表,可以看到表中的源地址、目的地地址未做解析
121 iptables -t filter -F ##使用-F参数清空filter表
122 iptables -t filter -nL ##-nL查看filter表可以看到表中无数据
123 systemctl restart iptables.service ##重启iptables服务可以重新查看到表中数据
125 iptables -nL ##-nL不指定表名称时默认查看的是filter表
124 iptables -t filter -nL ##使用-t参数可以指定其他需要进行操作的表
iptables -A INPUT -j ACCEPT ##在filter表的INPUT链中添加策略
iptables -nL ##-nL查看filter表可以看到添加成功
iptables -D INPUT 1 ##删除在INPUT链中添加的策略
火墙数据通过优化策略
1、跟踪数据包状态
防火墙中传输的数据包有以下三种状态,为了提高火墙数据传输速度,我们可以跟踪防火墙中数据包状态,根据数据包的状态设定火墙策略:
数据包状态 含义
RELATED 建立过连接的
ESTABLISHED 正在连接的
NEW 新的
实验:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ##接受所有建立过连接、正在连接的数据包
147 iptables -A INPUT -m state --state NEW -i lo -j ACCEPT ##接受所有来自本机回环接口的新的数据包
148 iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT ##接受所有通过22端口、使用tcp协议进行访问请求的新的数据包
149 iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT ##接受所有通过80端口、使用tcp协议进行访问请求的新的数据包
150 iptables -A INPUT -m state --state NEW -j ACCEPT ##拒绝其他所有新的数据包(-m参数表示指定特殊匹配模式)
151 iptables-save > /etc/sysconfig/iptables
iptables -nL
SNAT源地址转换
SNAT源地址转换是在路由之后POSTROUTING链中进行的
iptables -F ##-F清空之前filter表的设定,避免影响实验效果
163 iptables -t nat -nL
164 iptables -t nat -A POSTROUTING -o ens3 -j SNAT --to-source 172.25.254.111 ##在nat表的POSTROUTING链中添加策略,指定对所有从ens3接口(254网段)输出的数据SNAT转换其源地址为172.25.254.111
做完规则设定后还要检查内核路由功能是否开启
165 sysctl -a | grep ip_forward ##检查内核路由功能是否开启
//
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0
//
166 vim /etc/sysctl.conf
//
net.ipv4.ip_forward =1
//
167 sysctl -p ##使开启设定生效
此时在虚拟机westosb(1.1.1.211)中可以ping通真实主机,也可以远程连接上真实主机,连接后显示的是从westosa的172.25.254.111连接的真实主机。
上一篇: 利用numpy+matplotlib绘图的基本操作教程
下一篇: Linux中的火墙策略优化