千家信息网

iptables系列之基础原理

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,Linux网络防火墙netfilter :frame 过滤,内核中的过滤框架,规则生效的位置框架iptables:附加在netfilter上,生成防火墙规则,真正实现数据报文过滤,NAT,mangle
千家信息网最后更新 2025年01月21日iptables系列之基础原理

Linux网络防火墙

netfilter :frame 过滤,内核中的过滤框架,规则生效的位置框架

iptables:附加在netfilter上,生成防火墙规则,真正实现数据报文过滤,NAT,mangle等规则生成的工具


防火墙:工作在主机或者网络的边缘,对于进出的报文进行检查监控,并根据事先定义好的规则(其中有匹配标准和处理办法),一旦符合标准,对这个报文进行相应的处理规则的组件称为防火墙


iptables的实现实际上是基于报文的过滤,实例如下:

1.IP:源地址,目标地址

TCP:源端口,目标端口

UDP:源端口,目标端口

ICMP:icmp报文类型


发展历程:

linux2.0

ipfw/firewall

linux2.2

ipchain/firewall

linux2.4

iptables/netfilter



netfilter的过滤有下面五个规则链

PREROUTING

INPUT

FORWARD

OUTPUT

POSTROUTING


四种表

filter,过滤表

INPUT,OUTPUT,FORWARD


nat,地址转换表

prerouting,output,postrouting


mangle(拆分,修改,封装) 表

prerouting,forwarding,output,postrouting


raw表

prerouting,output



iptables:

500条规则

能否使用自定义链?

可以使用自定义链,但是只在被调用的时候才能发挥作用,而且如果没有自定义链中的任何规则匹配,还应该有返回机制


*用户可以删除自定义空链

*默认链无法删除


每个规则都有两个内置的计数器

被匹配的报文个数

被匹配的报文大之和


规则内包含:匹配标准,处理动作

匹配标准:

1.通用匹配

-s,--src 源地址

-d,--dst 目标地址

-p(tcp,udp,icmp)指定协议

-i INTERFACE指定数据报文流入的接口(ethX)

可用于定义标准的链,PREROUTING ,INPUT,FORWARD

-o INTERFACE 指定数据报文流出的接口

可用于标准定义的链,OUTPUT,POSTROUTING,FORWARD,

2.扩展匹配

a.隐含扩展:不用特别指明哪个模块进行的扩展,因为此时使用-p(tcp/udp/icmp)

-p tcp 指定目标端口,源端口

--tcp-flags mask comp :只检查mask 指定的标志位,是逗号分隔的标志位列表;comp:此列表中出现的标记位必须为1,comp中没出现,而mask中出现的,必须为0

可根据ACK,FIN,RST,SYN等标志位的值来盘端报文的类型,例如当SYN=1,其余为0,则这个报文时TCP/IP的第一次握手

-p-icmp

--icmp-type -8 被ping通

--icmp-type -1能够发出ping 报文

-p-udp

指定目标端口以及源端口


b. 显示扩展:必须指明由哪个模块进行的扩展,在iptables会用-m选项即可完成功能

使用额外的匹配机制

-m EXTENSTION --spe-opt

state:状态扩展 -m state --state NEW -ij ACCEPT

结合ip_constrack追踪会话的状态

NEW:新连接请求

ESTABLISHED:已建立的连接

INVALID:非法连接

RELATED:相关联的


-m multiport :离散的多端口匹配扩展

--source-ports

--destination-ports

--ports

-m iprange 指定一段地址

--src-range

--dst-range


-m connlimit 连接数限制

! --connlimit-above n

-m limit

--limit RATE速率限定



#iptables-save> /etc/sysconfig/iptables.2021

#iptables-restore < /etc/sysconfig/iptables.2021


命令

管理规则

-A:附加一条规则,添加在链的尾部

-I CHAIN [num]:插入一条规则,插入为对应CHAIN上的第num条

-D CHAIN [num]:删除指定链中的第Num条规则

-R CHAIN [num]:替换指定的规则

管理链

-F [CHAIN]:flush用于清空指定规则链,如果省略CHAIN ,则可以删除对应表中的所有链

-P CHAIN :设定指定链的默认策略

-N :自定义一个新的空链

-X:删除一个自定义的空链

-Z:置零指定链中所有规则的计数器

-E:重命名自定义的链

查看类

-L:显示指定表中的规则

-n:以数字形式显示主机地址和端口号

-x:显示计数器的精确值

-v:显示链和规则的详细信息 -vv:

--line-numbers:显示规则号码


执行的动作(target)

-j指定

ACCEPT放行,允许通过

DROP丢弃

REJECT拒绝

DNAT目标地址转换

SNAT源地址转换

REDIRECT(端口重定向)

MASQUERADE:地址伪装 MAC表的PREROUTING链实现

MARK打标记

LOG 日志


iptables不是服务,但有服务脚本:脚本服务的主要作用在于管理保存的规则

装载或移除iptable/netfilter相关的内核模块

iptables_nat,iptales_filter,iptable_mangle,iptables_raw,ip_nat,


保存规则:

#service iptables save

/etc/sysconfig/iptables


#iptables-save> /etc/sysconfig/iptables.2021

#iptables-restore < /etc/sysconfig/iptables.2021

















0