防火墙-iptables

本文详细介绍了RHEL系统中iptables防火墙的工作原理及配置方法,包括iptables的基本概念、命令格式、规则设置,以及如何实现主机型和网络型防火墙功能。同时,还讲解了扩展匹配的使用和nat表的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RHEL7使用的firewalld防火墙,但是底层仍然调用的是iptables防火墙
RHEL6及其以下使用的iptables防火墙。

iptables防火墙主要是对到达主机的数据包进行过滤。

1、开启iptables防火墙

systemctl stop firewalld
systemctl disable firewalld
yum -y install iptables-service
systemctl start iptables

2、iptables的组成:(4张表,5条链)

# 每个表都有5条链,链中可以自定义规则
# 遵循匹配即停止原则
# 在最后如果得不到匹配,就执行默认动作

表:
	raw表:给数据包做状态跟踪
	mangle表:给数据包做标记
	nat表:给数据包做地址转换
	filter表:过滤数据包

链:
	INPUT:进入防火墙主机的包
	OUTPUT:从防火墙主机发出的包
	FORWARD:经过防火墙主机的包
	POSTROUTING:路由后处理
	PREROUTING:路由前处理

3、命令格式:

iptables -t 表名 选项 链名 规则 -j 动作

动作:
	DROP:丢弃数据包,没有提示
	REJECT:拒绝接受数据包,有提示
	ACCEPT:接受数据包
	LOG:写入日志
	SNAT:源地址转换
	DNAT:目标地址转换

选项:
	-Ln:显示规则。端口,ip以数字的形式显示
	iptables -t filter -Ln --line-number	#--line-number显示行号

	-F:清空规则
	iptables -t filter -F

	-A:添加规则
	iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT	#给filter表的INPUT链添加规则,-p代表协议,--dport代表目的端口。表示接受tcp,端口为22的数据包(ssh请求)

	-I:插入规则
	iptables -t filter -I INPUT 1 -s 192.168.80.0/24 -p tcp --dport 22 -j ACCEPT	#在第1条规则之前插入新规则,-s表示源ip。表示仅接受192.168.80.0/24网段的主机发送的tcp,端口为22的数据包。-d表示目的ip

	-D:删除规则
	iptables -t filter -D INPUT 2	#删除filter中INPUT链的第2条规则

	-P:修改默认动作
	iptables -t filter -P INPUT DROP	#修改filter表的INPUT链的默认动作为DROP


	# 永久生效
	iptables-save /etc/sysconfig/iptables-config 

4、主机型防火墙:

# 自己保护自己,对filter表中的INPUT链添加规则
例:不允许其他主机ping本机
iptables -t filter -A INPUT -p icmp --icmp-type echo-request -j DROP	#丢弃icmp的echo-request类型的数据包。不允许ping
iptables -t filter -A INPUT -p icmp ! --icmp-type echo-request -j ACCEPT	#接受除icmp的echo-request之外类型的数据包。允许ping之外的其他请求

5、网络型防火墙:

# 架设在两个网络之间,对filter表中的FORWARD链添加规则
现架设有三台主机A,B,C。其中C作为防火墙
A:网卡:192.168.80.135,网关192.168.80.136
B:网卡:192.168.70.137,网关192.168.70.136
C:网卡1:192.168.80.136,网卡2:192.168.70.136

在这里插入图片描述

主机A通过主机C来访问主机B

# 添加网关
A:route add default gw 192.168.80.136
B:route add default gw 192.168.70.136

# 查看网关
route -n #

开启路由转发:
C:echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t filter -P FORWARD DROP	#默认动作修改为DROP
iptables -t filter -A FORWARD  -p tcp --dport 80 -j ACCEPT	#--dport目的端口
iptables -t filter -A FORWARD  -p tcp --sport 80 -j ACCEPT	#--sport源端口

6、扩展匹配:(简化规则)

-m mac	#mac地址匹配
-m multiport	#多端口匹配
-m iprange	#ip范围匹配

例:
# 丢弃192.168.80.50-192.168.80.100的ip发送的ping数据包
iptables -t filter -A FORWARD -p icmp -m iprange --src-range 192.168.80.50-192.168.80.100 -j DROP	#--src-range代表源ip,--dst-range代表目的ip

例:丢弃mac地址为00:0a:25:7c:aa:ab发送的ping数据包
iptables -t filter -A FORWARD -p icmp -m mac --mac-source 00:0a:25:7c:aa:ab -j DROP

例:允许目标端口为22,80,3306的数据包通过本机
iptables -t filter -A FORWARD -p tcp -m multiport --dports 22,80,3306 -j ACCEPT	#--dports目标端口

例:允许源端口为22,80,3306的数据包通过本机
iptables -t filter -A FORWARD -p tcp -m multiport --sports 22,80,3306 -j ACCEPT	#--sports源端口

7、nat表的应用:

内网所有主机通过一个ip地址访问外网

在这里插入图片描述

只需要修改nat表的POSTROUTING链,使用SNAT动作。

echo 1 > /proc/sys/net/ipv4/ip_forward	#开启路由转发

iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -p tcp --dport 80 -j SNAT --to-source 192.168.70.136	
#将源地址修改为防火墙主机的外网ip192.168.70.136

# 在实际工作中主机的ip是动态分配的

iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o eth2 -j MASQUERADE
# -o指明了外网ip的网卡,MASQUERADE表示动态获取外网网卡的ip

写总结的第六十六天!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值