iptables限制,iptable规则
通过项目中的接口配置IP后,它在IPtables中设置。这个要求很简单,所以我们应该借此机会研究Iptables。
http://blog . 163 . com/xychenbaihu @ yeah/blog/static/1322229655201212705752493/http://hi . Baidu . com/kexinxing 77/blog/item/fcd 2 af 3 B2 bb 800 eeb 311 c 7 ce . html http://blog . . net/test _ me/article/details/5572195
Iptables—过滤数据包—命令(-A,-I,-D,-R,-L,等等。),参数(-p,-s,-d,- sport,- dport,-i,-o等。)、actions -j(接受、丢弃、拒绝、重定向等。)
2012-02-27 13:20:51分类:Linux常用工具字体大小订阅
Iptables指令
语法:
iptables [-t table]命令[match] [-j目标/跳转]
t参数用于指定规则表。有三个内置的规则表:nat、mangle和filter。
当没有指定规则表时,它总是被视为过滤器。
每个规则表的功能如下:
这个nat规则表有两个规则链,路由前和路由后。其主要功能是进行一对一翻译、一对多翻译、多对多翻译等。因为翻译的特性,需要目的地址翻译的包不需要源地址翻译,反之亦然。因此,为了提高重写数据包的速率,在防火墙运行时,每个数据包将只通过这个规则表一次。如果我们在这个数据表中定义包过滤的规则,将无法多次比较同一个包。因此,除了URL转换之外,此规则表不应用于其他目的。
这个规则表有三个规则链:路由前、路由前和路由后。除了在翻译URL时重写数据包之外,在一些特殊应用中,可能需要重写数据包(TTL、TOS)或设置标记(标记数据包以便后续过滤)。此时,必须在mangle规则表中定义这些任务。因为使用率不高,这里不打算讨论mangle的用法。
这个过滤规则表是默认规则表,它有三个规则链:输入、转发和输出。顾名思义,这个规则表用于过滤数据包(例如,丢弃、记录、接受或拒绝)。我们将在这个规则表中构建所有的基本规则。
主要包括:命令表用于添加(-A,-I)删除(-D)修改(-R)查看(-L)规则等。
常用的参数用来指定协议(-p),源地址(-s),源端口(- sport),目的地址(-d),目的端口(- dport),
设置入网卡(-i)、出网卡(-o)等包信息(即包的种类);
用于描述要处理的包的信息。
常见的处理操作使用-j来指定数据包的处理(接受、丢弃、拒绝、重定向等。).
1.常用命令列表:常用命令(-A添加规则,-D删除规则,-R修改规则,-I插入规则和-L查看规则)
命令-a,-附加
iptables示例-输入.
说明向规则链(这里是输入规则链)添加规则(追加方法)将使该规则成为规则链中的最后一个规则。
命令-d,-删除
示例iptables-dinput-dport80-jdrop
iptables -D输入1
要从规则链中删除规则,您可以输入完整的规则或直接指定要删除的规则编号。
Command-r,-replace
iptables-r输入1-s192.168.0.1-jdrop示例
说明替换现有规则不会改变规则替换后的顺序。(1是位置)
命令-I,-插入
示例iptables-I输入1-d端口80-j接受
说明插入了一个规则,这个位置(这里是位置1)原来的规则会被一个序列后移。
命令-l,-list
iptables -L输入示例
列出规则链中的所有规则。
命令-f,-flush
iptables -F输入示例
删除规则链(这里是输入规则链)中的所有规则。
命令-z,-零
iptables -Z输入示例
解释数据包计数器被重置为零。数据包计数器用于统计同一数据包出现的次数,是过滤阻断攻击不可或缺的工具。
命令-n -N,-新-链
允许的iptables -N示例
解释新的规则链。
命令-x -X,-删除-链
允许的iptables -X示例
删除规则链。
命令-p,-策略
iptables -P输入压降示例
解释过滤策略。即不符合过滤条件的数据包,默认处理方式。
命令-e -E,-重命名-链
示例iptables -E允许不允许
描述自定义规则链的名称。
2.常用的包比较参数:(-p协议,-s源地址,-d目的地址,- sport源端口,- dport目的端口,-i入网卡,-o出网卡)
参数-p,-协议(指定协议)
示例iptables -A输入-p tcp(指定协议)-p所有协议,-p!Tcp删除除tcp之外的所有协议。
说明匹配的协议类型是否匹配。可以用!用于反向比较的运算符,例如:-p!tcp,
是指除了tcp以外的其他类型,包括udp、icmp等。如果要比较所有类型,可以使用all关键字,例如:-p all。
参数-s -s,- src,- source(指定源地址,指定源端口- sport)
示例:iptables -A输入-s 192.168.1.1
解释用于比较数据包的源IP。可以比较单机,也可以比较网络。比较网络时请用数字表示屏蔽。
比如:-s 192.168.0.0/24,比较IP的时候可以用!用于反向比较的运算符,
示例:-s!192.168.0.0/24。
参数-d -d,- dst,- destination(指定目标地址,指定目标端口- dport)
示例:iptables -A输入-d 192.168.1.1
解释用于匹配数据包的目的IP,并以与上述相同的方式进行设置。
参数-I -i,- in-interface -i eth所有网卡
示例:iptables -A输入-i eth0
说明数据包来自哪个网卡,用通配符做大范围对比。
比如:-i eth表示所有以太网卡,也可以用!用于反向比较的运算符,
比如:-我!eth0 .
参数-o -o,- out-interface(指定出口网卡)
示例:iptables -A FORWARD -o eth0
它用于描述从哪个网卡发送数据包。设置方法同上。
参数- sport,- source-port-port
示例:iptables-a输入-p TCP-sport22
解释用于匹配数据包的源端口号,它可以匹配单个端口或一个范围。
例如:- sport 22:80,这意味着从22到80的所有端口都被视为符合要求的部件。
如果要匹配不连续的多个端口,必须使用- multiport参数,如下所述。匹配端口号的时候可以用!反向比较的运算符。
参数- dport,- destination-port-port
示例:iptables-a input-p TCP-dport22
解释用于匹配数据包的目的端口号,并以与上述相同的方式进行设置。
参数- tcp-flags(仅过滤tcp中的部分数据包,如SYN包、ACK包、FIN包、RST包等。)
例如iptables-p TCP-TCP-flags syn、fin、ack syn
比较TCP数据包的状态标志。参数分为两部分。第一部分列出了要比较的标志。
第二部分列出了已经设置的上述标志,未列出的标志必须为空。TCP状态标志包括SYN(同步)、ACK(确认),
FIN(结束)、RST(复位)、URG(紧急)、PSH(强制推送)等。可以在参数中使用,除此之外,关键字ALL和也可以使用。
没有对比。比较旗帜的时候可以用!操作子线反向比较。
参数- syn
示例:iptables -p tcp - syn
说明是否是请求连接的TCP包,以及iptables-p TCP-TCP-flags syn,
FIN,ACK SYN完全一样的功能,如果用的话!运算符可用于匹配未经请求的连接数据包。
参数-mmultiport-source-port
例如iptables-a输入-p TCP-m多端口-源端口22,53,80,110
此描述用于匹配不连续的源端口号。一次最多可以匹配15个端口。可以用!
反向比较的运算符。
参数- m多端口-目的端口
例如iptables-a输入-p TCP-m多端口-目的端口22,53,80,110
描述用于匹配多个不连续的目的端口号。设置方法同上。
参数-m多端口
例如iptables-a输入-p TCP-m多端口-端口22、53、80、110
解释此参数是特殊的,用于比较具有相同源端口号和目的端口号的数据包。它的设置方式与上面相同。
注意:在本例中,如果源端口号为80,目的端口号为110,则此数据包不合格。
参数-icmp-类型
示例:iptables-a input-p icmp-icmp-type 8
解释用于比较ICMP的类型号。您可以使用代码或数字进行比较。
请调用iptables -p icmp - help查看有哪些代码可用。
参数-极限-极限
示例:iptables-a输入-m限制-限制3/小时
用于比较某段时间内数据包的平均流量。上面的例子是用来比较的:每小时的平均流量是
一次不超过3包。除了每小时平均次数,还可以每秒、每分钟、每天平均一次。
默认值为每小时一次,参数如下:/秒、/分、/天。除了密封的数量之外
外部,设置该参数也会在条件满足时暂停数据包比较,避免黑客利用flood。
攻击方法,导致服务被阻塞。
参数限制突发
示例iptables-a输入-m限制-限制-突发5
说明是用来比较一瞬间大量数据包的数量。上面的例子是用来比较同时涌入的数据包是否超过数量。
5(这是默认值)后,超过这个上限的印章将直接报废。使用效果同上。
参数- m mac - mac-source
iptables示例-a输入-m MAC-MAC-source 00:00:00:01
此参数用于比较数据包的源网络接口的硬件地址。此参数不能用于输出和路由后规则。这是因为数据包发送到网络后,网卡驱动程序才能通过ARP通信协议找到目的地的MAC地址。因此,iptables在比较数据包时不知道数据包将被发送到网络接口。
参数标记
示例iptables-t angle-a input-m mark-mark 1
它用于指示数据包是否由某个数字表示。当数据包比对成功后,我们可以用一个数字来标记数据包,这个数字最多不能超过4294967296。
参数- m所有者-uid-所有者
示例iptables-a输出-m所有者-uid-所有者500
说明来自本地机器的数据包是否由特定用户生成,从而避免使用服务器。
Root或其他身份将敏感数据发送出去,可以减少系统被黑客攻击的损失。可惜这个功能没法比。
来自其它主机的数据包。
参数- m所有者-GID-所有者
示例iptables-a output-m owner-GID-owner 0
描述用于比较来自本地机器的数据包是否由特定用户群生成,使用时间同上。
参数- m所有者-PID-所有者
示例iptables-a output-m owner-PID-owner 78
描述用于比较来自本地机的包是否由特定的trip生成,使用时间同上。
参数- m所有者-sid-所有者
示例iptables-a output-m owner-sid-owner 100
描述来自本地计算机的数据包是否是特定连接的响应数据包(会话ID)。使用时
机器同上。
参数-m状态-状态
示例iptables-a输入-m状态-状态相关,已建立
描述用于比较在线状态。有四种在线状态:无效、已建立、新建和相关。
无效表示数据包的连接编号(会话ID)无法识别或编号不正确。
ESTABLISHED表示数据包属于已建立的连接。
NEW表示数据包想要启动连接(重置连接或重定向连接)。
RELATED表示数据包属于已建立的连接,这是一个新连接。例如,FTP数据连接必须源自FTP连接。
3.常见处理操作:(-j指定对满足条件的数据包的处理。常见的操作包括接受报告、丢弃报告、拒绝报告并通知对方、重定向数据包等。)
j参数用于指定要执行的处理操作。常用的处理动作有:接受、拒绝、丢弃、重定向、伪装、日志、DNAT、SNAT、镜像、排队、返回、标记,分别描述如下:
接受释放数据包。在这个处理之后,它将跳到下一个规则链,而不比较其他规则。
REJECT阻塞数据包并发送数据包以通知另一方。可以发送的数据包有几种选择:ICMP端口不可达、ICMP回应回复或tcp重置(该数据包将要求另一方关闭连接)。经过这个处理后,过滤过程将直接中断,而不比较其他规则。
示例:iptables-a forward-p TCP-dport 22-j reject-reject-with TCP-reset
丢弃的数据包将不会被处理。经过这样的处理后,不会再比较其他规则,直接中断过滤过程。
将数据包重定向到另一个端口(PNAT)。在这个处理之后,它将继续比较其他规则。
该函数可用于实现透明代理或保护web服务器。
示例:iptables-t NAT-a routing-p TCP-d port 80-j重定向到端口8080
伪装将数据包源IP重写为防火墙NIC IP,并可以指定相应的端口范围。在这个处理之后,它将直接跳转到下一个规则(mangleostrouting)。该功能与SNAT略有不同。执行IP伪装时,不需要指定要伪装成哪个IP,IP将直接从网卡读取。使用拨号连接时,IP通常由ISP公司的DHCP服务器分配。化妆舞会在这个时候特别有用。
示例:iptables-t NAT-a posting-p TCP-j伪装到端口1024-31000
在/var/LOG中记录与数据包相关的消息。有关详细信息,请参考/etc/syslog.conf配置文件。在这个处理之后,将不断地比较规则。
示例:iptables-a input-p TCP-j log-log-prefix input packets
t SNAT重写包的源IP是一个特定的IP或IP范围,可以指定端口对应的范围。在这个处理操作之后,它将直接跳转到下一个规则(mangleostrouting)。
例如:iptables-t NAT-a posting-p TCP-o eth 0-j snat-to-source 194 . 236 . 50 . 155-194 . 236 . 50 . 160:1024-32000
DNAT将分组目的地IP重写为特定的IP或IP范围,并且可以指定对应于端口的范围。经过这样的处理后,会直接跳转到下一个协议(filter:input或者filter:forward)。
示例:iptables-t NAT-a routing-p TCP-d 15 . 45 . 23 . 67-d port 80-j dnat-to-destination 192 . 168 . 1 . 1-192 . 168 . 1 . 10:80-100
镜像数据包,即源IP与目的IP交换后,将数据包发回。在此处理之后,过滤过程将被中断。
中断队列过滤程序,将数据包放入队列,交给其他程序处理。通过自行开发的加工程序,可以进行其他应用,
例如:计算在线费用等。
返回当前规则细化中的过滤程序,返回主规则细化继续过滤。如果将自定义规则细化视为子例程,此操作将很早结束子例程并返回到主程序。
用代码标记数据包,以便为后续过滤提供标准。在这个处理之后,我们将继续比较其他规则。
例如:iptables-t mangle-a routing-ptcp-d port 22-jmark-set-mark 2