Iptables四表五链及规则组成

2024-04-02 11:58

本文主要是介绍Iptables四表五链及规则组成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

iptables组成:四张表 + 五条链(Hook point) + 规则

Iptables和Netfilter的关系:
Netfilter: Netfilter是linux操作系统核心层内部的一个数据包处理模块
Hook point: 数据包在Netfilter中的挂载点(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING )
Iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。。真正实现防火墙功能的是 netfilter,它是Linux内核中实现包过滤的内部结构。netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
在这里插入图片描述
Iptables四表五链
四表:filter、natmanagleraw,默认是filter表。表的处理优先级:raw>managle>nat>filter

filter过滤数据包
nat网络地址转换(端口映射、地址映射等。)
mangle用于对特定数据报的修改。
raw优先级最高,设置raw时一般是为了不再让iptables做数据报的链接跟踪处理,提高性能。

五链:PREROUTINGINPUTFORWARDOUTPUTPOSTROUTING

PREROUTING数据包进入路由表之前,对数据包做路由选择前应用此链路中的规则,所有的数据包进来的时候都先由这个链处理
INPUT通过路由表后目的为本机,进来的数据报应用此规则链上的策略
FORWARD通过路由表后,目标地址不为本机,做转发数据报时应用此规则链上的策略
OUTPUT由本机产生的外出的数据包向外转发时,应用此规则链中的策略
POSTROUTING数据报做路由选择后发送后到网卡接口之前应用此链中的规则,所有的数据包出来的时候都先由这个链处理

表与链之间的包含关系:

filterINPUT、FORWARD、OUTPUT
natPREROUTING(DNAT)、OUTPUT、POSTROUTING(SNAT)
manglePREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
rawPREROUTING、OUTPUT

数据包在4张表和5条链的流向:
在这里插入图片描述
iptables规则组成
数据包访问控制:ACCEPT、DROP、REJECT
数据包改写:SNAT、DNAT
信息记录:LOG

iptables [-t TABLE] COMMAND CHAIN [num] 匹配标准 -j 处理办法

在这里插入图片描述
command

管理规则:

-A:附加一条规则,添加在链的尾部
-I CHAIN [num]:插入一条规则,插入为对应CHAIN上的第num条,不指定默认为第一条
-D CHAIN [num]:删除指定链中的第num条规则
-R CHAIN [num]:替换指定的规则

管理链:

-F [CHAIN]:flush,情况指定规则链,如果省略CHAIN,则可以实现删除对应表中的所有链
-P CHAIN:设定指定链的默认策略    iptables -P INPUT DROP
-N:自定义一个新的空链
-X:删除一个自定义的空链
-Z:置零指定链中所有规则的计数器
-E:重命名自定义的链

查看类:

-L:显示指定表中的规则-n:以数字格式显示主机地址和端口号-v:显示链及规则的详细信息-x:显示计数器的精确值--line-numbers:显示规则号码

匹配保准:
通用匹配:

-s,--src :指定源地址
-d,--dst :指定目标地址
-p{tcp|udp|icmp} :指定协议
-i interface :指定数据报文流入的接口(eth0)可用于定义标准的链:PREROUTING,INPUT,FORWARD
-o interface :指定数据报文流出的接口可用于标准定义的链:OUTPUT,POSTROUTING,FORWARD

隐含扩展匹配:不用特别指明由哪个模块进行的扩展,因为此时使用{tcp|udp|icmp}

-p tcp--sport PORT[-PORT]: 源端口--dport PORT[-PORT]: 目标端口--tcp-flags mask comp: 只检查mask指定的标志位,是逗号分隔的标志位列表;comp:此列表中出现的标记位必须为1,comp中没出现,而mask中出现的,必须为0;--tcp-flags SYN,FIN,ACK,RST SYN = --syn--syn
-p icmp  (ping)--icmp-type 0: echo-reply   ping应答8: echo-request ping请求iptables -A INPUT -p icmp --icmp-type 8 -s 192.168.239.0/24 -j DROP iptables -A INPUT -p icmp --icmp-type any -s 192.168.239.0/24 -j DROP-p udp--sport--dport	

显示扩展匹配:使用额外的匹配机制,必须指明由哪个模块进行的扩展,在iptables 中使用-m选型可完成此功能

-m state:状态扩展结合ip_conntrack追踪会话状态NEW:新连接请求ESTABLISHED:已建立的链接INVALID:非法链接RELATED:相关联的 (ftp,需要加载模块)iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTiptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT-m multiport:离散的多端口匹配扩展--source-ports--destination-ports--ports-m multiport --destination-ports 21,22,80 -j ACCEPT			-m iprange   指定范围--src-range--dst-rangeiptables -A INPUT -p tcp -m iprange --src-range 172.16.100.3-172.16.100.100 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT-m connlimit  连接数限制! --connlimit-above n iptables -A INPUT -d 192.168.2.102 -p tcp --dport 80 -m connlimit ! --connlimit-above 2 -j ACCEPT iptables -A INPUT -d 192.168.2.102 -p tcp --dport 80 -m connlimit --connlimit-above 2 -j DROP -m limit--limit rate[/second|/minute|/hour|/day]--limit-burst number    the default is 5iptables -A INPUT -d 192.168.2.102 -p tcp --dport 80 -m limit --limit 5/minute --limit-burst 3 -j ACCEPT -m string--algo {bm|kmp}--string pattern 

动作(target):

ACCEPT:放行
DROP:丢弃
REJECT:拒绝
DNAT:目标地址转换
SNAT:源地址转换
REDIRECT:端口重定向
MASQUERADE:地址伪装
LOG:日志     --log-prefix  prefix
MARK:打标记-j SNAT --to-source ipaddr[-ipaddr][:port[-port]]iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source 172.16.100.1iptables -t nat -L  查看-j DNAT--to-destination [ipaddr][-ipaddr][:port[-port]]iptables -t nat -A PREROUTING -d 172.16.100.7 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.7:8080-j MASQUERADE (外网地址动态获取时使用)

保存规则

# /etc/init.d/iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

常用示例
1.设置链的默认策略

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

2.允许回环访问

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

3.允许外部主机ping内部主机

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
#iptables -A INPUT -p icmp --icmp-type any -s 192.168.239.0/24 -j DROP

4.匹配端口范围

iptables -A INPUT -p tcp --dport 18:80 -j DROP
iptables -A INPUT -p tcp -m multiport --dport 21,22,23 -j DROP

5.防攻击

connlimit模块
作用:用于限制每一个客户端ip的并发连接数
参数:–connlimit-above n //限制并发个数

iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT 	(并发访问控制)

limit模块
作用:限速,控制流量
参数:–limit rate[/second|/minute|/hour|/day]
–limit-burst number the default is 5

iptables -A INPUT -p icmp -m limit --limit 5/minute --limit-burst 3 -j ACCEPT 
iptables -A INPUT -p icmp -j REJECT

6.局域网机器共享上网

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.19

7.外部地址和端口映射到内部地址和端口

iptables -t nat -A PREROUTING -d 10.0.0.19 -p tcp --dport 80  -j DNAT --to-destination 192.168.1.20:8080

这篇关于Iptables四表五链及规则组成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/869919

相关文章

Adblock Plus官方规则Easylist China说明与反馈贴(2015.12.15)

-------------------------------特别说明--------------------------------------- 视频广告问题:因Adblock Plus的局限,存在以下现象,优酷、搜狐、17173黑屏并倒数;乐视、爱奇艺播放广告。因为这些视频网站的Flash播放器被植入了检测代码,而Adblock Plus无法修改播放器。 如需同时使用ads

关联规则(一)Apriori算法

此篇文章转自 http://blog.sina.com.cn/s/blog_6a17628d0100v83b.html 个人觉得比课本上讲的更通俗易懂! 1.  挖掘关联规则 1.1   什么是关联规则 一言蔽之,关联规则是形如X→Y的蕴涵式,表示通过X可以推导“得到”Y,其中X和Y分别称为关联规则的先导(antecedent或left-hand-side, LHS)和后

电子电气架构---私有总线通信和诊断规则

电子电气架构—私有总线通信和诊断规则 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。 无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事.而不是让内心的烦躁、

iptables持久化命令:netfilter-persistent save

在Linux上,使用netfilter-persistent命令可以保存iptables防火墙规则,确保它们在系统重启后仍然有效。以下是如何使用netfilter-persistent来保存iptables规则的步骤: 打开终端:首先,你需要打开Linux系统的终端。保存规则:使用netfilter-persistent save命令可以保存当前的iptables规则。这个命令会调用所有插件,将

Python中的单下划线和双下划线使用规则

引言 Python 遵循一些关键的命名规则,这些规则涉及到使用单个或双下划线。通过这些规则,你可以在应用程序接口(API)中区分可访问的和不可访问的标识符,编写适用于继承的稳健类,以及防止命名冲突等。 遵守这些规则,你的代码将显得更贴近 Python 的风格,并且在其他 Python 程序员看来更加统一。这项技能在你为其他开发者编写代码时尤为重要。 本文[1]将带你了解: 基于使用下划线

【0324】Postgres内核 Shared Buffer Access Rules (共享缓冲区访问规则)说明

0. 章节内容 1. 共享磁盘缓冲区访问机制 (shared disk buffers) 共享磁盘缓冲区有两套独立的访问控制机制:引用计数(a/k/a pin 计数)和缓冲区内容锁。(实际上,还有第三级访问控制:在访问任何属于某个关系表的页面之前,必须持有该关系表的适当类型的锁。这里不讨论关系级锁。) Pins 在对缓冲区做任何操作之前,必须“对缓冲区pin”(即增加其引用计数, re

[mysql]SQL语言的规则和规范

规则 是什么呢,规则就是我们最基本,每时每刻都要遵守的比如人行道靠右,不能逆行, 规范 呢就是锦上添花,如果你不这么做,是不那么道德,不那么好的,就像小学生见到老师要问好,不问好可以吗,当然也是可以的,但是这样就不那么礼貌了。但是也不会开除你, 规范是建议。规则: USE dbtest2 SELECT * FROM emp 我们之前使用cmd操作的时候,是不是必须要先选择一个数据

AI聊天应用不能上架?Google play对AI类型应用的规则要求是什么?

随着生成式AI模型的广泛应用,很多开发者都有在开发AI应用或将其整合到应用中。我们知道,谷歌是非常注重应用生态的,去年开始就推出了一些针对生成式AI应用的政策,对AI应用的内容质量和合规性问题提出了一些要求。 几天前,还有开发者聊到,现在AI类型应用(如AI聊天)上架越来越难了。 (可斯信进qun与众多开发者交流上架经验) 这很可能是没了解清楚Google play 对AI应用的一些

【计算机组成原理】计算机系统层次结构

计算机系统层次结构 计算机系统是一个层次结构系统,每一层都通过向上层用户提供一个抽象的简洁接口而将低层的实现细节隐藏起来。计算机解决应用问题的过程就是不同抽象层进行转换的过程 计算机系统抽象层的转换 下图描述了从最终用户希望计算机完成的应用(问题)到电子工程师使用器件完成基本电路设计的整个转换过程 通常用自然语言对应用(问题)进行描述,但计算机硬件只能理解机器语言,要将一个自然语言描述

在目标检测模型中使用正样本和负样本组成的损失函数。

文章目录 背景例子说明1. **样本和标签分配**2. **计算损失函数**3. **组合损失函数** 总结 背景 在目标检测模型中,损失函数通常包含两个主要部分: 分类损失(Classification Loss):用于评估模型对目标类别的预测能力。定位损失(Localization Loss):用于评估模型对目标位置的预测准确性。 例子说明 假设我们有一个目标检测模