Linux修炼之旅第七章!
今天来介绍火墙的管理策略firewalld和iptables,介绍两者的基础命令和高级规则。下面我们就开始吧
文章目录
- Linux修炼之旅第七章!
- 一、火墙管理及工具切换
- 二、firewalld
- 1.firewalld的开启
- 2.firewall的图形管理界面
- 3.关于firewalld的域
- 4.firewalld的管理命令
- 关于trusted,block和drop
- 5.firewalld的高级规则
- 6.firewalld中的NAT
- 三、iptables
- 1.iptables命令
- 2.iptables对于读取规则的优化策略
- 3.iptables的nat模式
实验开始前先配置好实验环境
配置两台主机
一台为双网卡主机
同时拥有172.25.254网段和1.1.1网段
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/d84f9786330d9e41.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/e88efe5b0a13a7fa.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
一、火墙管理及工具切换
本章主要介绍两种比较主流的火墙管理方式
iptables和firewalld
相较于firealld,iptables使用起来更复杂,但是管理起来更精确。
两者的使用需要切换
如何切换呢
首先介绍firewalld转换到iptables
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
二、firewalld
1.firewalld的开启
systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl unmask firewalld
systemctl enable --now firewalld
2.firewall的图形管理界面
安装
dnf install firewall-config-0.8.0-4.el8.noarch -y
如果没有启用服务清参照上面的开启步骤开启firewall服务
使用指令
firewall-config
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/c72d78d7317a9e8e.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
firewall的模块在
/usr/lib/firewalld/
firewall的配置在
/etc/firewalld/
3.关于firewalld的域
关于firewall中的域的解释
trusted
home
work
public
dmz
block
drop
internal
external
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
命令效果
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/5b97d3b808d031e2.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
关于trusted,block和drop
全信任域
firewall-cmd --set-default-zone=trusted
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/ea91d84a82557da5.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
block拒绝所有
firewall-cmd --set-default-zone=block
![请添加图片描述](https://img.php1.cn/3cd4a/1e618/bdf/129913486c37ddf6.jpeg)
drop丢弃
firewall-cmd --set-default-zone=drop
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/2fdc212433a29829.png)
查看所有可以设定的服务
firewall-cmd --get-services
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/e88efe5b0a13a7fa.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
指定数据来源访问指定域
firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block
指定只有172.25.254网段的主机可以访问
命令中是block,看到的效果与上一布中的bolck效果相同
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/99b88427bc9ce0dc.webp)
如果想要解除,直接用命令删除即可
firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block
移除后又回到了drop状态
![请添加图片描述](https://img.php1.cn/3cd4a/9b0d/ae9/2d998ad7838fbf16.jpeg)
关于网卡的指令
firewall-cmd --permanent --remove-interface=ens10 --zone=public
firewall-cmd --permanent --add-interface=ens10 --zone=drop
firewall-cmd --permanent --change-interface=ens10 --zone=public
如果以上面的代码为实验的话,就不可以通过ssh服务来实验,会导致连接直接断开。
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/5287a7b3296ea13e.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
5.firewalld的高级规则
高级规则的效果,下面通过一个实验来进行说明
首先在服务主机中开启高级规则,限制除了172网段的80主机以外的主机,任何服务都被拒绝
现在设定高级规则,满足上述要求
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/ddcc574beb16294e.jpeg)
1网段的主机本来可以访问,设定完毕后不被允许
172网段的80主机没问题
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/bdd1ca32a69bc8b2.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
6.firewalld中的NAT
SNAT
简单来说,就是通过开启地址伪装策略来对访问的用户进行控制,比如1网段的主机通过172网段的服务主机来连接别的172网段主机,那么在172的测试主机上就会显示服务主机的172网段ip,具体实验效果如下:
首先设置1网段的客户主机的网关为服务主机的1网段ip地址为网关
在服务主机中开启地址伪装策略
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload
然后用1网段的主机来连接172网段的测试机
![请添加图片描述](https://img.php1.cn/3cd4a/189d8/b64/5b34b53b79a39fdd.jpeg?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
可以看到记录中连接的主机使服务主机的ip而非真正连接主机的1网段主机
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/72fd2c126203a875.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
DNAT
DNAT的效果则是可以让服务主机变成一个中继站,使连接到服务主机的地址直接跳转到设置好的另一个ip中,下面看看实验效果
设定跳转的地址为1.1.1.200
firewall-cmd --pernament --add-forword-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.200
firewall-cmd --reload
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/a1be7872e8d4934f.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
可以看到原本访问服务主机,但是自动转到了1.1.1.200主机上
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/99b88427bc9ce0dc.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
三、iptables
实验开始之前先从firewalld切换至iptables,具体步骤见第一节中。
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/5b97d3b808d031e2.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
开启iptables服务
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/ed19db63ee478b98.png)
1.iptables命令
iptables-t -n -L -A -p --dport -s -j ACCEPT DROP REJECT SNAT DNAT -N -E -X -D -I -R -P
iptables -nL
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/6789f68dabde0aed.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
上面这个指令可以对状态进行查看,利用这个指令并开启监视,对其他命令进行测试
iptables -D INPUT 2
删除INPUT中的第二条规则
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/6789f68dabde0aed.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
iptables -I -s 172.25.254.80 -j REJECT
插入规则
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/ed19db63ee478b98.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
iptables -N shy
新建链
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/5b97d3b808d031e2.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
iptables -E shy SHY
链更名
![请添加图片描述](https://img.php1.cn/3cd4a/9b0d/ae9/2d998ad7838fbf16.jpeg?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
iptables -X SHY
删除链
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/1e3db12dd78db092.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
iptables -P INPUT DROP
更改默认规则为丢弃
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/5287a7b3296ea13e.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
iptables -P INPUT ACCEPT
更改默认规则为通过
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/60405fda58cd0acd.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
2.iptables对于读取规则的优化策略
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/d34245582687a4e6.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
3.iptables的nat模式
第二部分的内容中firewall的nat功能相同,介绍iptables下的nat功能
snat
iptables -t nat POSTROUTING -o ens3 -j SNAT --to-source 172.25.254.100
sysctl -a | grep ip_forword
看看开启时候成功
net.ipv4.ipforward=1表示 成功
如果不是1
则编辑文件
vim /etc/sysctl.conf
在最后写入
net.ipv4.ipforward=1
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/0ef126b5295c089b.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
这样就配置好了snat,效果类似于内网可以访问外网了
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/b386c433a16f5497.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
![请添加图片描述](https://img.php1.cn/3cd4a/1eebe/cd5/d942b7ec373849c3.webp?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)
dnat
dnat与snat刚好相反,让外网访问内网,只需访问双网卡服务器
配置双网卡服务器
iptables -t nat -A PREROUTING -i ens3 -j DNAT --to-dest 1.1.1.200
查看
iptables -t nat -nL
实验效果
用172网段的80主机访问双网卡服务器,查看到的是1网段的ip
![请添加图片描述](https://img.php1.cn/3cd4a/1e618/c5a/d5d40da532c3a782.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56m644Gv6auY,size_20,color_FFFFFF,t_70,g_se,x_16)