iptables:强大的防火墙工具

iptables是内置于多数发行版中的网络防火墙包过滤器。我也不知道该怎么解释,,别看很轻量化,但是功能很强大~
iptables的引入是用来替换掉老的ipchains,ipclains在Linux内核2.2系列中使用,用来作为封包过滤和防火墙的功能。但是ipchains的功能和定制化很局限。在Linux内核2.3系列开始引入了netfilter项目,其中iptables防火墙就是这个项目的一部分,在2.4内核中iptables取代了先前的ipchains作为内置的包过滤器。
对于iptables的历史我没有深究,这篇博客重点在于iptables的用法和规则设定。在网上简单了解一下发现,Linux包过滤功能的历史并不长,本篇参考了以下几个地方的内容:

iptables工作机制

iptables分为五个规则链:

  • PREROUTING 数据包进入路由表之前
  • INPUT 数据包入口
  • FORWARD 转发关卡
  • OUTPUT 数据包出口
  • POSTROUTING 数据包离开路由后
    这五个规则链是五个钩子函数(hook),只要是经过本机的数据包,一定会经过这五个链中的一个。那么就可以通过配置过滤规则来实现特定的场景。

和四个表:

  • filter 一般的过滤功能
  • nat 用于nat功能(端口转发、地址映射等)
  • mangle 对数据包进行修改(TOS、TTL)
  • raw 优先级最高,为了不让iptables做数据包的连接跟踪处理,以提高性能。
主机数据流

其中每个表对应多个链,都有不同,这是每个表的默认规则链:

  • filter:INPUT;FORWARD;OUTPUT;
  • nat:PREROUTING;POSTROUTING;OUTPUT;
  • mangle:PREROUTING;POSTROUTING;INPUT;OUTPUT;FORWARD;
  • raw:OUTPUT;PREROUTING;

iptables的策略

规则链确定了作用的位置;而表则划分出了不同的功能。filter表主要是过滤的功能,针对特定的IP、端口、网段进行限制;nat表主要定义地址转换的功能等。
iptables的策略主要分为两种:“通”策略和“堵”策略:

  1. 通策略,默认门是关着的,即默认规则为DROP,根据需要进行放行。
  2. 堵策略,默认门是开着的,即默认规则为ACCEPT,根据需要拦截数据包。

注意iptables的规则是严格按照先后顺序执行的,所以要将比较严格的规则前置,检查规则的时候是由上向下的顺序。
此外,iptables还支持自定义链,必须跟某种特定的链关联起来,在此先不做讨论。

iptables规则语法

iptables的命令格式:

iptables -t [tables] COMMAND chain rules -j ACTION
  • -t tables:四个表,缺省是filter表,可忽略此选项
  • COMMAND:命令,定义对规则采取的操作
  • chain:指定是在哪一条链上的操作
  • rules:指定匹配规则
  • -j ACTION:指定做出如何的处理

E.g.
禁止123.123.123.123地址对本机80端口的访问:

iptables -t filter -A INPUT -s 123.123.123.123 -p tcp --dport 80 -j DROP
iptables -t filter -A INPUT -s 123.123.123.123 -p tcp --dport 80 -j REJECT

默认OUTPUT链为“关”:

iptables -P OUTPUT DROP

查看详细规则:

iptables -L -n -v

COMMAND部分详解

链管理命令(立即生效)

-P:设置默认策略:开&&关

iptables -P OUTPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P OUTPUT REJECT

决定OUTPUT链默认接收或丢弃。不同的是REJECT是直接丢弃,而DROP是悄悄丢弃数据包。这在扫描端口的时候会有差别。

-F:清空规则链

iptables -t nat -F
iptables -F INPUT

分别是清空nat表的规则和清空filter表的INPUT链规则。
注意:由于是立即生效的命令,因此在清空filter表时先确定没有默认DROP的链,否则敲完回车后就会将你拒之门外了。有控制台还好,没有的话就麻烦的很了

-N:新建一个自定义链

iptables -N inboard_tcp_web

-X:用于删除用户自定义的空链
删除空链,因此删除之前最好先执行iptables -F

-E:用来给自定义链重命名

iptables -E oldname newname

-Z:清空链。清空链以及链默认规则的计数器:1.匹配数据吧个数;2.多少字节。

iptables -Z

规则管理命令

-A:追加规则。当前链的规则后新加一条规则。(iptables执行有前后顺序)
-I [num]:插入规则。插入为第几条规则

iptabels -t filter -I 1 -s 192.168.1.106 -p tcp --dport 80 -j DROP

-R [num]:替换。替换(修改)为第几条规则。相当于bash中的mv命令。
-D [num]:删除。删除第几条规则。

查看规则命令

iptables -L

子命令:

  • -v/vv/vvv 详细信息
  • -x 计数器显示精确值,不做单位换算
  • –line-numbers 显示规则行号
  • -t nat 显示指定位置的信息

关于规则匹配

地址匹配

  • -s:匹配源地址 IP | IP/Mask | 0.0.0.0/0.0.0.0
  • 感叹号!表示取反
  • -d:匹配目的地址
  • -p:匹配通信协议(TCP/UDP/ICMP)
  • -i eth0:指定数据包流入的网卡
  • -o eth1:指定数据包流出的网卡

协议匹配

-p tcp:匹配TCP通信协议:

  • --dport XX/XX-XX 指定目的端口,只能表示连续端口,不可指定非连续端口号
  • --sport XX/XX-XX 指定源端口,同上

-p tcp --tcp-flags 指定TCP的标志位(SYN,ACK,FIN,PSH,RST,URG)。一般格式如下:

iptables -A INPUT -p tcp --tcpflags syn,ack,fin,rst  syn  ...
iptables -A INPUT -p tcp --syn  ...

一般分为前后两部分:syn,ack,fin,rst表示受检查的标志位;syn表示匹配必须为1的标志位,而且其他的必须为零。常用来匹配三次握手的第一个数据包。另一种写法是直接写成--syn

-p udp:匹配UDP通信协议(同tcp):

  • --dport XX/XX-XX 指定目的端口,只能表示连续端口,不可指定非连续端口号
  • --sport XX/XX-XX 指定源端口,同上

-p icmp:匹配icmp数据包,通常是ping包:

  • -p icmp --icmp-type 8 回显icmp请求
  • -p icmp --icmp-type 0 回显icmp应答

E.g.
以下操作中INPUT,OUTPUT默认丢弃
开放本机icmp请求权限:

iptables -A OUTPUT -s 192.168.1.100 -p icmp --icmp-type 8 -j ACCEPT

但是此时仍无反应,接下来开放本机的icmp应答权限:

iptables -A INPUT -d 192.168.1.100 -p icmp --icmp-type 0 -j ACCEPT

这时候就会成功ping通外部机器。但是此时外部主机是ping不通本机的,这就需要分别在INPUT和OUTPUT上做相反的规则,在此不做赘述。

-m 启用扩展模块:

  • -m multiport -p tcp --dport 21,22,23,80 启用多端口扩展模块
  • -m state --state NEW,ESTABLISH 增加状态检测模块

ACTION部分

DROP:悄悄丢弃。一般使用DROP,效果与REJECT相同,可以隐藏身份和防火墙结构。
REJECT:明示拒绝,端口扫描显示被拒绝。
ACCEPT:接收数据包。

这三个是常用动作,续更…

状态检测

通常,对于整个TCP协议来讲,是一个保持连接的通信协议。在三次握手四次挥手过程中,第一次握手称之为NEW连接;从第二次握手以后,标志位ack都等于1,称之为已建立的连接:ESTABLISH;类似FTP连接,监听端口独立于数据传输端口而存在,包括20,21两个端口,我们称之为RELATED;对于我们无法识别的状态,称之为INVALID。

  • NEW 新建立的连接
  • ESTABLISH 已存在的连接
  • INVALID 无法识别的连接
  • RELATED 有联系的连接(没用过,不深究)

这样做,可以指定源地址可以连接,禁用其他连接:

iptables -A INPUT -s 192.168.1.106/24 -d 192.168.1.100 -p tcp --dport 22 -m state --state NEW,ESTABLISH -j ACCEPT
iptables -A OUTPUT -d 192.168.1.106 -m state --state ESTABLISH -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

在OUTPUT链仅开放192.168.1.106的规则太严格了,如果需要其他连接,可以改成这样:

iptables -R OUTPUT 1 -m state --state ESTABLISH -j ACCEPT
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • 1.安全技术 (1)入侵检测与管理系统(Intrusion Detection Systems): 特点是不阻断任...
    尛尛大尹阅读 2,438评论 0 2
  • 防火墙的概念iptables的简介iptables命令网络防火墙NATfirewalld服务 一、防火墙的概念 (...
    哈喽别样阅读 1,789评论 0 1
  • 1 概述 iptables命令中,需要根据匹配的条件作出相应的动作,本文将结合例子,讲解匹配条件 匹配条件分为基本...
    ghbsunny阅读 4,046评论 0 0
  • 一.防火墙概念 (一)安全技术介绍 (1) 入侵检测与管理系统(Intrusion Detection Syste...
    楠人帮阅读 1,429评论 0 3
  • 情绪是情感的产物,有感情的人都会通过情绪来表达内心的真实感受。人类,动物的行为本质上都受情绪的控制,但二者最大的...
    黑白嘿嘿嘿阅读 230评论 0 0