iptables与firewalld的管理

本文详细介绍了Linux中的iptables和firewalld两种火墙管理工具的切换与使用。讲解了iptables的命令、火墙默认策略、数据包状态以及NAT表中的SNAT和DNAT。同时,探讨了firewalld的开启、域管理、高级规则以及NAT功能。通过实例展示了如何设置和管理火墙策略,以确保网络安全。
摘要由CSDN通过智能技术生成

一、火墙介绍

在Linux中火墙策略是基于netfilter实现的。
1、netfilter:内核上有个安全插件netfilter(访问控制列表),这个列表里有许多详细的规则,当对这个规则允许或拒绝时,可以控制其他主机是否能访问,极大的提高了安全性。
2、iptables:管理netfilter的工具,通过iptables往netfilter表格里面写网络安全策略。
3、iptables | firewalld:对iptables进行管理,用iptables或firewalld手段来写网络安全策略。

二、火墙管理工具切换

在rhel8中默认使用的是firewalld

1、firewalld —> iptables

dnf install iptables-services -y
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl mask firewalld.service
systemctl enable --now iptables.service

在这里插入图片描述

2、iptables —> firewalld

systemctl stop iptables.service
systemctl disable iptables.service
systemctl mask iptables.service
systemctl unmask firewalld.service
systemctl enable --now firewalld.service

在这里插入图片描述

三、iptables的使用及火墙默认策略

1、火墙策略的永久保存

iptables策略记录文件:/etc/sysconfig/iptables

  • 永久保存策略:
iptables-save > /etc/sysconfig/iptables
service iptables save

在这里插入图片描述

2、火墙默认策略

默认策略中的5条链

input输入(目的地址为本机)
output输出(原地址为本地,向外发送)
forward实现转发
postrouting路由之后(发送到网卡之前)
prerouting数据包进入路由之前

默认策略的3张表

filter经过本机内核的数据
(input、output、forward)
过滤,防火墙,过滤数据包
nat不经过内核的数据
(postrouting、prerouting、input、output)
用于网络地址转换(IP、端口)
manglefilternat表不够用时
(input、output、forward、postrouting、prerouting)
拆解报文,作出修改,封装报文

以下图片取自https://blog.csdn.net/weixin_46833747/article/details/108230122,感谢大佬的文章!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、iptables的命令

-F清空iptables
(如不保存,服务重启后,策略会恢复)
-t指定表名称
(默认查看filter表)
-n不做解析
-L查看
-A添加策略
-p协议
--dport目的地端口
--sport来源端口
-s来源
-j动作
ACCEPT:允许
DROP:丢弃
REJECT:拒绝
SNAT:源地址转换
DNAT:目的地地址转换
-N新建链
-E更改链名称
-X删除链
-D删除规则
-I插入规则
-R更改规则
-P更改默认规则

(1)清空iptables表

iptables -F
iptables -nL

在这里插入图片描述(2)查看指定表

iptables -t nat -nL

在这里插入图片描述(3)允许指定ip访问

iptables -t filter -A INPUT -s 172.25.250.250 -j ACCEPT
iptables -nL

在这里插入图片描述(4)-I INPUT 2:插入指定次序规则(INPUT 默认第一行)

iptables -t filter -A INPUT -s 172.25.250.240 -j ACCEPT
iptables -t filter -I INPUT 2 -s 172.25.250.230 -j ACCEPT
iptables -nL

在这里插入图片描述(5)指定tcp协议和dport

iptables -t filter -I INPUT -s 172.25.250.120 -p tcp --dport 80 -j ACCEPT
iptables -nL

在这里插入图片描述(6)删除规则

iptables -t filter -D INPUT 3
iptables -nL

在这里插入图片描述(7)新建链

iptables -N skkk
iptables -nL

在这里插入图片描述(8)删除链

iptables -X skkk

在这里插入图片描述

以上操作均没有保存在永久策略文件中,要保存须service iptables save或者service iptables save

4、数据包状态

RELATED建立过连接的
ESTABLISHED正在连接的
NEW新的

火墙的策略是从上到下依次匹配,当匹配到适合自己的状态时,便不会向下匹配,通过对策略数据包状态的编写来优化火墙。
-m:扩展匹配,可加载扩展
(1)添加一个规则,设定火墙允许已建立和正在建立连接的数据包通过;
(2)添加一个规则,状态为新的数据包,访问回环接口的允许访问(lo :允许回环接口);
(3)添加一个规则,状态为新的数据包,使用 tcp协议,访问22端口 ,允许访问;
(4)添加一个规则,状态为新的数据包,拒绝所有主机接入。

iptables -F
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 -p tcp --dport 22 -j ACCEPT  ##允许所有主机都可通过22端口[ssh服务]进入此主机
iptables -A INPUT -m state --state NEW -j REJECT  ##拒绝所有主机接入
iptables -nL

在这里插入图片描述

5、NAT表中的SNAT和DNAT

  • 实验环境:
真机 ip172.25.250.250
westosa主机双网卡ens3:172.25.250.136
ens9:172.25.36.1
westosb主机ens3:172.25.36.2
  • 开启内核路由功能,使双网卡处于不同网段的ip可以互相通信
    sysctl -a:显示系统所有参数
sysctl -a | grep ip_forward
vim /etc/sysctl.conf
 
net.ipv4.ip_forward = 1  ##开启内核路由功能

sysctl -p  ##使修改生效

在这里插入图片描述
(1)SNAT(源地址转换)
172.25.36网段无法直接ping172.25.250网段,须将westosb的网关设定为172.25.36.1,再做SNAT。

-o = --out-interface name
iptables -F  ##清空iptables表,防止之前设定对实验的影响
iptables -t nat -A POSTROUTING -o ens3 -j SNAT --to-source 172.25.250.136  ##路由之后
iptables -t nat -nL

172.25.36网段可以ping通172.25.250网段
在这里插入图片描述
也可以通过ssh连接,实现源地址伪装,w -i:显示登录来源
在这里插入图片描述
(2)DNAT(目的地地址转化)
真机无法访问westosb主机,可以通过访问双网卡的westosa主机,让westosa主机将需求转发给westosb主机,须做DNAT。

-i = --in-interface name
iptables -t nat -A PREROUTING -i ens3 -j DNAT --to-dest 172.25.36.2
iptables -t nat -nL

在这里插入图片描述用真机连接westosa主机,连接到的是westosb主机
在这里插入图片描述

四、firewalld的使用

1、firewalld的开启

systemctl stop iptables.service
systemctl disable iptables.service
systemctl mask iptables.service
systemctl unmask firewalld.service
systemctl enable --now firewalld.service

2、firewald的域

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
externalipv4网络地址伪装转发 sshd

实验:

dnf install httpd -y
systemctl enable --now httpd
echo skk.linux.com > /var/www/html/index.html
curl http://172.25.250.136

(1)当默认域设定为trusted

firewall-cmd --set-default-zone=trusted
firewall-cmd --list-all

在这里插入图片描述此时其他主机都可以访问
在这里插入图片描述(2)当默认域设定为public

firewall-cmd --set-default-zone=public
firewall-cmd --list-all

在这里插入图片描述此时,其他主机不可以访问,但可以通过ssh连接
在这里插入图片描述(3)当默认域设定为block

firewall-cmd --set-default-zone=block
firewall-cmd --list-all

在这里插入图片描述此时其他主机不能做任何操作
在这里插入图片描述

3、firewalld的设定原理及数据存储

(1) 火墙当前域的设定状态文件/etc/firewalld/firewalld.conf
firewalld服务将域的工作方式设定完成在/usr/lib/firewalld当中有已经封装好的域的配置文件
(2)火墙的应用模块在/usr/lib/firewalld/services
在这里插入图片描述

4、firewalld的管理命令

firewall-cmd --state  ##查看火墙状态
firewall-cmd --list-all  ##查看默认域中的火墙策略
firewall-cmd --get-active-zones  ##查看当前火墙中生效的域
firewall-cmd --get-default-zone  ##查看默认域
firewall-cmd --set-default-zone=trusted  ##设定默认域
firewall-cmd --list-all --zone=dmz  ##查看指定域的火墙策略

在这里插入图片描述
在这里插入图片描述--permanent :表示永久设定,如果不加 --permanent 则即改即生效,但是 reload 之后就失效了;如果加了 --permanent ,则需要 reload (重新加载火墙策略)才能生效

firewall-cmd --get-services  ##查看所有可以设定的服务
firewall-cmd --permanent --add-service=westos  ##添加服务
firewall-cmd --reload  ##重新加载服务
firewall-cmd --permanent --remove--service=westos  ##移除服务

在这里插入图片描述
在这里插入图片描述

firewall-cmd --permanent --add-source 172.25.36.0/24 --zone=trusted  ##指定数据来源访问指定域
firewall-cmd --permanent --remove-source 172.25.36.0/24 --zone=trusted  ##删除自定域中的数据来源
firewall-cmd --permanent --remove-interface=ens3 --zone=public #删除指定域的网络接口
firewall-cmd --permanent --add-interface=ens3 --zone=block #添加指定域的网络接口
firewall-cmd --permanent --change-interface=ens3 --zone=public #更改网络接口到指定域

设定默认域为block,设定36网段的主机在访问westosa时为trusted
在这里插入图片描述westosb主机为172.25.36网段,所以可以访问,真机则不可以
在这里插入图片描述
修改ens3到public
在这里插入图片描述更改后真机不可以访问,但可以通过ssh连接
在这里插入图片描述

5、firewalld的高级规则

firewall-cmd --direct --get-all-rules  ##查看高级规则
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 ! -s 172.25.250.250 -p tcp --dport 80 -j REJECT  ##添加规则
firewall-cmd --permanent --direct --remove-rule ipv4 filter INPUT 1 ! -s 172.25.250.250 -p tcp --dport 80 -j REJECT  ##删除规则

先将之前实验的规则进行修改,将域改为trusted,允许所有访问
在这里插入图片描述设定高级规则,除了172.25.250.250主机,其他主机都拒绝访问
在这里插入图片描述
真机可以访问,其他主机不能访问
在这里插入图片描述

6、firewalld中的NAT

  • 实验环境和上面iptables的SNAT和DNAT实验环境一致

(1)SNAT,双网卡主机开启地址伪装

firewall-cmd --permanent --add-masquerade  ##开启地址伪装
firewall-cmd --reload

此时172.25.36网段主机就可以ping通172.25.250网段主机
在这里插入图片描述(2)DNAT,在地址伪装基础上,做目的地址转换

firewall-cmd --permanent --add-masquerade  ##开启地址伪装
firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toaddr=172.25.36.2  ##做目的地址转换
firewall-cmd --reload

在这里插入图片描述用真机连接westosa主机,连接到的是westosb主机
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值