iptables火墙策略的基本使用

1.火墙介绍

1.netfilter介绍
Netfilter时新一代的Linux防火墙机制,是linux内核的一个子系统。其重要工具模块IPTables从用户态的iptables连接到内核态的Netfilter的架构中,Netfilter与IP协议栈是无缝契合的,并允许使用者对数据报进行过滤、地址转换、处理等操作。他是一种表格。

2.iptables    往 netfilter 中写内容的工具

3.管理 iptable 策略的方式
1.iptables   2.firewalld

2.火墙管理工具切换

在rhel8中默认使用的是firewalld管理

firewalld----->iptables

dnf install iptables-services -y
systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld             冻结服务
systemctl enable --now iptables      开启iptables服务

在这里插入图片描述
iptales -------> fiewalld

systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl enable --now firewalld

3. iptables 的使用

iptables 的查看:
在这里插入图片描述
这些信息都保存在 /etc/sysconfig/iptables  中       ##iptables 策略记录文件

iptables 的清除:

iptables -F

在这里插入图片描述
里面的内容都被刷掉了。重启服务后又刷新出 /etc/sysconfig/iptables 中的策略内容
在这里插入图片描述

永久保存 iptables 策略
当我们执行 iptables -F 后,执行以下命令

iptales-save > /etc/sysconfig/iptables      或者    service iptables save

在这里插入图片描述
可以看出策略内容已经被永久更改,因为策略文件已经被改过了。

4.火墙默认策略

默认策略中的5条链

input            ##输入
output           ##输出
forward           ##转发
postrouting         ##发生在路由之后,对应SNAT
prerouting         ##发生在路由之前,对应DNAT

SNAT: 改变数据包的源地址。当内网数据包到达防火墙后,防火墙会使用外部地址替换掉数据包的源IP地址(目的IP地址不变),使网络内部主机能够与网络外部主机通信。

DNAT: 改变数据包的目的地址。当防火墙收到来自外网的数据包后,会将该数据包的目的IP地址进行替换(源IP地址不变),重新转发到内网的主机。

默认的3张表

filter         #经过本机内核的数据(input,output,forward)
nat         #不经过内核的数据(postrouting,prerouting,input,output)
mangle       #当filter和nat表不够用时使用(input,output,forward,postrouting,prerouting)

5.iptables命令

参数:

-t     ##指定表名称
-n     ##不做解析,显示IP地址
-L     ##查看
在这里插入图片描述
在这里插入图片描述
由于刚才 -F 清刷掉了数据,所以暂时没有内容 。


-A              ##添加策略
-p              ##协议
–dport            ##目的地端口
-s              ##来源
-j              ##动作
     ACCEPT              #允许
     DROP               #丢弃
     REJECT              #拒绝
     SNAT               #源地址转换
     DNAT               #目的地地址转换

-D              ##删除规则
-I              ##插入规则
-R              ##更改规则
-P              ##更改默认规则


在这里插入图片描述
在这里插入图片描述
此时连接和访问都被拒绝。
在这里插入图片描述
执行 iptables -D INPUT 1 删除规则。1是指第一条。


在这里插入图片描述
DROP 不同于REJECT 的是,REJECT会给与回应直接拒绝,而DROP会使在访问时一直尝试连接。一般情况下在拒绝时我们是用REJECT
在这里插入图片描述


在这里插入图片描述
当我们把第二条设置为允许 10主机时,
在这里插入图片描述
还是无法访问的,因为iptables火墙策略的规则是从上到下依次读取,当第一条条件与当前资源匹配,则不回去询问第二条,无论第二条是否匹配。
在这里插入图片描述
我们可以使用 -I 插入,默认插入位置为第一条。此时我们在尝试用另外一台主机访问。
在这里插入图片描述
就可以建立连接了。
当我们只想让 ssh 连接时,我们可以只开放22 端口:
在这里插入图片描述
在这里插入图片描述


更改第一条策略:
在这里插入图片描述
就将端口改为80端口了。


当没有策略时会使用默认策略,在这里插入图片描述
那我们如何更改它:
在这里插入图片描述
且只能改为 ACCEPT , DROP , REJECT


-N              ##新建链
-E              ##更改链名称
-X              ##删除链
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


当我们只想要只能访问本机的dns 和Apache服务时,我们应做如下设定;

  iptables -A INPUT -i lo -j ACCEPT 
  iptables -A INPUT -p tcp --dport=80 -j ACCEPT 
  iptables -A INPUT -p tcp --dport=443 -j ACCEPT 
  iptables -A INPUT -p tcp --dport=53 -j ACCEPT 
  iptables -A INPUT -j REJECT 

在这里插入图片描述
然而在企业中,火墙策略可能有成千上万条,当我们所需要的的规则在最后一条时,就会造成延迟,为了解决这一问题,我们需要建立数据包状态。

数据包状态
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 -p tcp --dport 80 -j ACCEPT
新数据包访问80端口允许
iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
新数据包访问443端口允许
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
访问53端口允许
iptables -A INPUT -m state --state NEW ! -s 192.168.0.10 -p tcp --dport 22 -j ACCEPT
除了10主机以外的主机访问22端口允许,!意为除了
iptables -A INPUT -m state --state NEW -j REJECT
新数据宝状态为拒绝
service iptables save             永久刷新策略

在这里插入图片描述


nat表:

一、dnat snat
我们先设定双网卡主机
在这里插入图片描述
设定一台主机的网关为 172.25.254.20 :
在这里插入图片描述
然后用另外两台不同网段的主机互相ping:
在这里插入图片描述
ping不通。
查看内核路由功能开启了没有:
在这里插入图片描述
1为开启,然后我们编写火墙策略


二、snat   源地址转换

iptables -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 192.168.0.20

在这里插入图片描述
可以ping通。
我们在从172.25.254.30 主机 ssh 192.168.0.10
在这里插入图片描述
可见源地址转换成功。


我们从 192.168.0.10 主机 ssh 192.168.0.20 主机时,连接的就是20主机本身,我们想在连接20主机时,转换到 172.25.254.30主机。

dnat     目的地地址转换

iptables -t nat -A PREROUTING -i ens160 -p tcp --dport 22 -j DNAT --to-dest 172.25.254.30

在这里插入图片描述
在这里插入图片描述可见连接192.168.0.20主机时,实际访问到的是172.25.254.30主机,目的地地址转换成功。

发布了36 篇原创文章 · 获赞 13 · 访问量 1450

猜你喜欢

转载自blog.csdn.net/thermal_life/article/details/104989557
今日推荐