Linux防火墙的iptables五链

Linux防火墙很多年的产品迭代过程是ipfw->ipchains->iptables>nftables(4.0)。而我们现在用的是iptables这代产品。

iptables说明

是一种功能强大的信息包过滤工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在链(chain)中。

Linux在内核中设置了五个位置能实现包处理,任何报文到达这五个位置都要检查和我们设置的规则是否相符,是否满足,满足以后怎么处理,如没有符合的条件就按照默认处理机制去处理。因用户是不能操作内核的,内核中的所有接口都是通过系统调用向外提供的,所以Linux开发了一个在用户空间专门让用户通过系统调用操作内核的工具,可以用这个工具写内容送到内核这五个位置上,帮我们来生成规则,这个工具在用户空间上叫做iptables,在内核空间上叫做netfilter。

iptables五链

Linux内核中五个能过滤报文的位置称为五个钩子,分别是 prerouting、input、output、forward、postrouting,此后在钩子上定义规则。当iptables引用这些钩子时不能使用钩子名称,要使用与钩子名同名的全大写字母——链。

这五个链分别是

  • PREROUTING:报文进入路由表之前
  • INPUT:通过路由表后目标IP为本机
  • FORWARD:通过路由表后目标IP不为本机
  • OUTPUT:由本机产生,向外转发
  • POSTROUTING:发送到网卡接口之前
图片.png

流入的报文数据先在PREROUTING上做一些处理,然后在路由决策上判断报文中目标IP是本机还是其他主机,如果是本机发送到INPUT处理,是其他主机发送到FORWARD进行转发,到这一步的全部流程我们称之为前半场或上半场。之后本机处理好报文数据向外发送时,或者本机进程主动访问外部主机发送报文时都要发给OUTPUT来处理,无论是通过FORWARD进行报文转发或是来自OUTPUT过滤后的本机报文都要在次通过路由决策来判断经由主机的哪块网卡发送报文,每一块网卡都有下一条,都有下一台主机,路由来决策一条最佳的路线。路由过后,数据报文还在本地之前,可通过POSTROUTING对数据最后做一次处理。从上半场之后的全部步骤称为后半场或下半场。

按照报文流向区分:

  • 流入本机:PREROUTING --> INPUT
  • 由本机流出:OUTPUT --> POSTROUTING
  • 转发:PREROUTING --> FORWARD --> POSTROUTING

iptables四表

上面的五链是按照hook钩子来区分的,而四表是按照对数据包的操作来区分。4个表:filter,nat,mangle,raw,默认表是filter(没有指定表的时候就是filter表)。表的处理优先级:raw>mangle>nat>filter。

  • filter:过滤,防火墙
    PREROUTING, OUTPUT
  • nat:修改源IP端口或目标IP或端口
    PREROUTING,[INPUT,]OUTPUT,POSTROUTING
  • mangle:拆解修改报文再封装
    PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
    raw:关闭nat表上的连接追踪机制
    PREROUTING, OUTPUT

iptables数据包流程

图片.png

基本步骤如下:

  1. 数据包到达网络接口,比如 eth0。
  2. 进入 raw 表的 PREROUTING 链,作用是在连接跟踪之前事先处理数据包。
  3. 如果进行了连接跟踪,在此处理。
  4. 进入 mangle 表的 PREROUTING 链,在此可以修改数据包,比如 TOS 等。
  5. 进入 nat 表的 PREROUTING 链,可以在此做DNAT,但不要做过滤。
  6. 决定路由,看是交给本地主机还是转发给其它主机。

这里分两种不同的情况,一种是数据包转发给其它主机,这时候它会依次经过:

  1. 进入 mangle 表的 FORWARD 链,这里也比较特殊,这是在第一次路由决定之后,在进行最后的路由决定之前,我们仍然可以对数据包进行某些修改。
  2. 进入 filter 表的 FORWARD 链,在这里我们可以对所有转发的数据包进行过滤。需要注意的是:经过这里的数据包是转发的,方向是双向的。
  3. 进行路由决定。
  4. 进入 mangle 表的 POSTROUTING 链,到这里已经做完了所有的路由决定,但数据包仍然在本地主机,我们还可以进行某些修改。
  5. 进入 nat 表的 POSTROUTING 链,在这里一般都是用来做 SNAT ,不要在这里进行过滤。
  6. 进入出去的网络接口。完毕。

另一种情况是,数据包就是发给本地主机的,那么它会依次穿过:

  1. 进入 mangle 表的 INPUT 链,这里是在路由之后,交由本地主机之前,我们也可以进行一些相应的修改。
  2. 进入 filter 表的 INPUT 链,在这里我们可以对流入的所有数据包进行过滤,无论它来自哪个网络接口。
  3. 交给本地主机的应用程序进行处理。
  4. 处理完毕后进行路由决定,看该往那里发出。
  5. 进入 raw 表的 OUTPUT 链,这里是在连接跟踪处理本地的数据包之前。
  6. 连接跟踪对本地的数据包进行处理。
  7. 进入 mangle 表的 OUTPUT 链,在这里我们可以修改数据包,但不要做过滤。
  8. 进入 nat 表的 OUTPUT 链,可以对防火墙自己发出的数据做 NAT 。
  9. 进入 filter 表的 OUTPUT 链,可以对本地出去的数据包进行过滤。
  10. 再次进行路由决定。
  11. 进入 mangle 表的 POSTROUTING 链,同上一种情况的第9步。注意,这里不光对经过防火墙的数据包进行处理,还对防火墙自己产生的数据包进行处理。
  12. 进入 nat 表的 POSTROUTING 链,同上一种情况的第10步。
  13. 进入出去的网络接口。完毕。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容

  • 今天上午去看的两个展厅,风格较为不同。第一个南山安全教育体验馆,面向个体(中小学生、中青年群体),较为注重现场的交...
    莎莎了啦阅读 285评论 0 0
  • 窗外 涂了橘色的云 云下的城市 我们如同蝼蚁 而我却拼命地想你 那些摩托车的声音 人们吵嚷的声音 炒菜的香味 和着...
    漠北青云阅读 251评论 0 1
  • 在家陪父母。闲敲棋子落灯花。
    神奇魔刀小姐姐阅读 125评论 0 0
  • 这几天忙着收拾东西,即使在家,专心跟小妞儿待在一起的时间也很少,常常是她追着我,拼命喊:要妈妈,要妈妈! 我下意识...
    山间竹音阅读 231评论 0 0