Iptables

简介

iptables是用户空间命令行程序,用于配置Linux 2.4.x及更高版本的包过滤规则集。由两个组件netfilter 和 iptables 组成

4个规则表(优先级raw > mangle >nat > filter)

raw表:确定是否对该数据包进行状态跟踪;对应iptable_raw,表内包含两个链:OUTPUT、PREROUTING
mangle表:为数据包的TOS(服务类型)、TTL(生命周期)值,或者为数据包设置Mark标记,以实现流量×××、策略路由等高级应用。其对应iptable_mangle,表内包含五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
nat表:修改数据包中的源、目标IP地址或端口;其对应的模块为iptable_nat,表内包括三个链:PREROUTING、POSTROUTING、OUTPUT
filter表:数据包过滤;其对应的内核模块为iptable_filter,表内包含三个链:INPUT、FORWARD、OUTPUT

5种规则

INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
POSTROUTING链:在进行路由选择后处理数据包(对数据链进行源地址修改转换)
PREROUTING链:在进行路由选择前处理数据包(做目标地址转换)
 
 
建立规则和链语法如下

iptables [-t table] command [match] [target]

[-t table] 选项允许使用标准表之外的任何表,有三种可用的表选项: filter (默认值)、 nat 和 mangle
 
 
命令(command)
插入规则、将规则添加到链的末尾或删除规则。

-A 或 --append : 该命令将一条规则附加到链的末尾。

iptables -A INPUT -s 10.120.123.1 -j ACCEPT

规则附加到 INPUT 链的末尾,确定来自源地址 10.120.123.1 的信息包可以 ACCEPT 。

-D 或 --delete :
指定要匹配的规则或者指定规则在链中的位置编号,该命令从链中删除该规则。

iptables -D INPUT --dport 21 -j DROP 
iptables -D OUTPUT 6

第一条命令从 INPUT 链删除规则,它指定 DROP 前往端口 21 的信息包。第二条命令只是从 OUTPUT 链删除编号为6 的规则。

-P 或 --policy : 该命令设置链的缺省目标,即策略。 所有与链中任何规则都不匹配的信息包都将被强制使用此链的策略。

 iptables -P INPUT DROP

将丢弃所有与 INPUT 链中任何规则都不匹配的信息包。
-N 或 --new-chain : 用命令中所指定的名称创建一个新链。

iptables -N allowed-chain

-F 或 --flush :该命令删除所有链中的所有规则。此参数用于快速清除。

 iptables -F FORWARD 
 iptables -F

-L 或 --list : 列出指定链中的所有规则。

iptables -L allowed-chain

 
 
匹配(match)
match 部分如源和目的地地址、协议等

-p 或 --protocol : 该通用协议匹配用于检查某些特定协议。 协议示例有 TCP 、 UDP 、 ICMP 、用逗号分隔的任何这三种协议的组合列表以及 ALL (用于所有协议)。 ALL 是缺省匹配。可以使用 ! 符号,它表示不与该项匹配。

iptables -A INPUT -p TCP
iptables -A INPUT -p UDP
iptables -A INPUT -p ICMP
iptables -A INPUT -p TCP, UDP
iptables -A INPUT -p ! TCP

-s 或 --source : 该源匹配用于根据信息包的源 IP 地址来与它们匹配。

iptables -A OUTPUT -s 10.120.123.9 
iptables -A OUTPUT -s 10.120.123.0/24 
iptables -A OUTPUT -s ! 10.120.0.0/16

-d 或 --destination : 该目的地匹配用于根据信息包的目的地 IP 地址来与它们匹

iptables -A INPUT -d 10.120.123.9  
iptables -A INPUT -d 10.120.123/24 
iptables -A INPUT -d ! 10.120.0.0/16

目标(target)

ACCEPT : 被接受(允许它前往目的地) 该目标被指定为 -j ACCEPT 。
DROP : 被会阻塞,并且不对它做进一步处理。 该目标被指定为 -j DROP 。
REJECT : 与 DROP 目标相同, REJECT 不会在服务器和客户机上留下死套接字。REJECT 将错误消息发回给信息包的发送方。该目标被指定为 -j REJECT 。

iptables -A FORWARD -p TCP --dport 80 -j REJECT
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章