码迷,mamicode.com
首页 > 其他好文 > 详细

iptables命令使用

时间:2015-05-12 01:47:24      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:filter

iptables [-t TABLE] SUBCOMMAND CHAINCRETERIA -j TARGET

-t TABLE:

    默认为filter, 共有filter, nat, mangle, raw四个可用;

SUBCOMMAND

链:

-F:flush,清空指定表的指定链上所有规则;省略链名时,清空表中的所有链;

示例: 

    # iptables -t filter -F INPUT #只清空filter表中的INPUT链

    # iptables -t nat #清空整个nat表

-N:new, 新建一个用户自定义的链;自定义链只能作为默认链上的跳转对象,即在默认链通过引用来生效自定义链;

    示例 : 创建新的链 webfules

    [root@localhost ~]#  iptables -t filter -N webrules

-X:drop,删除用户自定义的空链;非空自定义链和内置链无法删除;

    示例 删除webrules

    # iptables -t filter -X webrules

-Z:zero,将规则的计数器置0;

-P:policy,设置链的默认处理机制;当所有都无法匹配或有匹配有无法做出有效处理机制时,默认策略即生效;

    示例:设置filter表的forward链的默认策略为DROP

    # iptables -t filter -P FORWARD DROP

filter表的可用策略:ACCEPT(接受), DROP(丢弃), REJECT(拒绝)

-E:rename,重命名自定义链;

    示例: 讲webrules 修改为httpdrules

    # iptables -t filter -E  webrules httpdrules

    注意:被引用中的链,无法删除和改名

规则管理:

    -A:append,在链尾追加一条规则;

    -I:insert,在指定位置插入一条规则;默认会在第一条

    -D:delete,删除指定的规则;

    -R:replace,替换指定的规则;

规则查看:

-L:list,列出指定链上的所有规则;

-n:numeric,以数字格式显示地址和端口号,即不反解;

-v:verbose,详细格式,显示规则的详细信息,包括规则计数器等;

-vv:

-vvv:

--line-numbers:显示规则编号;

-x:exactly,显示计数器的精确值;

# iptables -L -n -v

pkts bytes target     prot opt in     out    source               destination

    pkts: 被本规则所匹配到的包个数;

    bytes:被本规则所匹配到的所包的大小之和;

    target: 处理目标 (目标可以为用户自定义的链)

    prot: 协议 {tcp,udp, icmp}

    opt: 可选项

    in: 数据包流入接口

    out: 数据包流出接口

    source: 源地址

    destination: 目标地址;

CRETERIA:匹配条件

通用匹配

-s,--src, --source  IP|Network:检查报文中的源IP地址;

[!] -s, --src, --source  IP|Network:检查报文中的源IP地址进行取反;

-d,--dst, --destination:检查报文中的目标IP地址;

-p,--protocol:检查报文中的协议,即ip首部中的protocols所标识的协议;tcp、udp或icmp三者之一;

-i,--in-interface:数据报文的流入接口;通常只用于PREROUTING, INPUT, FORWARD链上的规则

-o,--out-interface:检查报文的流出接口;通常只用于FORWARD, OUTPUT, POSTROUTING链上的规则;

示例:

放行172.16.6.62 对172.16.6.61所有服务的访问

# iptables -t filter -I INPUT-s 172.16.6.62 -d 172.16.6.61 -j ACCEPT

 修改上一条规则为: 只允许来自172.16.6.62主机对本级172.16.6.61  tcp的访问请求

# iptables -t filter -R INPUT 1-s 172.16.6.62 -d 172.16.6.61 -p tcp -j ACCEPT

放行172.16.6.62 对172.16.6.61 ping请求

# iptables -t filter -A INPUT-s 172.16.6.62 -d 172.16.6.61 -p icmp -j ACCEPT

限制172.16.6.62对本级172.16.6.61的ping请求只能通过eth0进入

# iptables -t filter -R INPUT 1-s 172.16.6.62 -d 172.16.6.61 -i eth0 -p icmp -j ACCEPT


扩展匹配

扩展匹配:使用iptables的模块实现进一步扩展性检查机制 

隐式扩展

    对通用匹配中-p中指定的对指定的协议的扩展

-p tcp:  TCP协议的扩展

    --dport PORT[-PORT] #目标端口

    --sport : 源端口

    --tcp-flags LIST1 LIST2

                LIST1:要检查的标志位;

                LIST2:在LIST1中出现过的,且必须为1标记位;而余下的则必须为0; 

示例:

# iptables -t filter  -I INPUT 1 -s 172.16.6.62 -d 172.16.6.61 -ptcp --tcp-flags syn,ack,fin,rst syn -j ACCEPT

 

# iptables -t filter  -I INPUT 1 -s 172.16.6.62 -d 172.16.6.61 -ptcp --syn -j ACCEPT

-p udp:  dup协议的扩展
--sport : 源端口
 --dport : 目标端口

-p icmp:  icmp协议的扩展--icmp-types

            8:echo request  # 8 响应请求(ECHO-REQUEST)

            0:echo reply #0 响应应答(ECHO-REPLY)

阻止172.16.6.62 对本机172.16.6.1 httpd服务的访问

# iptables -t filter -I INPUT 1-s 172.16.6.62 -d 172.16.6.61 -p tcp -m tcp --dport 80 -j DROP

显式扩展

显式扩展:必须指明使用的扩展机制(模块名字);

    -m模块名称 每个模块会引入新的匹配机制;

想知道有哪些模块可用吗?

## rpm -ql iptables| grep so$ #查看已有模块

[root@localhost ~]# rpm -qliptables| grep .so$

/lib64/xtables/libipt_CLUSTERIP.so

/lib64/xtables/libipt_DNAT.so

/lib64/xtables/libipt_ECN.so

/lib64/xtables/libipt_LOG.so

#小写字母,以.so结尾;通常都为扩展模块 如: libipt_CLUSTERIP.so 其中CLUSTERIP为模块名字

-m multiport 扩展:

以离散定义多端口匹配;最多指定15个端口;

multiport专用选项:

--source-ports, --sports PORT[,PORT,...] #源端口

--destination-ports, --dports PORT[,PORT,...] #目标端口

--ports PORT[,PORT,...]

示例: 同时放行 22 80 443

# iptables-I INPUT 1 -d 172.16.100.11 -p tcp -m multiport --dports 22,80,443 -j ACCEPT

-m  iprange扩展

指定连续的ip地址范围;在匹配非整个网络地址时使用;

专用选项:

    [!]--src-range IP[-IP] #原地址范围

    [!]--dst-range IP[-IP] #目标地址范围


示例: 放行本机telnet服务仅允许172.16.6.1-172.16.6.100的主机可以访问

iptables-A INPUT -d 172.16.100.11 -p tcp --dport 23 -m iprange --src-range172.16.100.1-172.16.100.100 -j ACCEPT

iptables-A OUTPUT -s 172.16.100.11 -p tcp --sport 23 -m iprange --dst-range172.16.100.1-172.16.100.100 -j ACCEPT

-m string扩展:

检查报文中出现的字符串,与给定的字符串作匹配;

    字符串匹配检查算法:kmp, bm

 

专用选项:

    --algo{kmp|bm}

    --algo: 指定算法 常用字符串匹配的算法 kmp | bm

    --string"STRING"

    --string"要匹配的字符串"

    --hex-string"HEX_STRING":HEX_STRING为编码成16进制格式的字串;


示例:

#iptables-I OUTPUT 1 -s 172.16.100.11 -p tcp --sport 80 -m string --string"sex" --algo kmp -j REJECT(丢弃)

-m time扩展:

基于时间区间做访问控制

专用选项:

    --datestartYYYY[-MM][-DD][hh[:mm[:ss]]] #从什么日期开始 年-月-日 小时:分:秒

    --dattestop#到日期结束

 

    --timestart#从什么时间开始

    --timestop#到什么时间结束

    --weekdays DAY1[,DAY2,...] #星期几 

#iptables -R INPUT 1 -d 172.16.100.11 -p tcp --dport 80 -m time --timestart08:30 --timestop 18:30 --weekdays Mon,Tue,Thu,Fri -j REJECT

-m connlimit扩展:

基于连接数作限制;对每个IP能够发起的并发连接数作限制;

 

专用选项:

--connlimit-above[n] 不能超过多少

#iptables -I INPUT 2 -d 172.16.100.11 -p tcp --dport 22 -m connlimit--connlimit-above 5 -j REJECT

-m limit扩展:

基于发包速率作限制;

 

专用选项:令牌桶算法

--limit  n[/second|/miniut|/hour|/day]

#n/second 每秒多少个数据包 ;

#n/minit; 每分钟多少个数据包;

#n/hour 每小时多少个数据包;

#n/day 每天多少个数据包;

--limit-burstn #最大突发速率

# iptables-R INPUT 3 -d 172.16.100.11 -p icmp --icmp-type 8 -m limit --limit 10/minute--limit-burst 5 -j ACCEPT


本文出自 “笨小孩” 博客,请务必保留此出处http://1066875821.blog.51cto.com/2375046/1650410

iptables命令使用

标签:filter

原文地址:http://1066875821.blog.51cto.com/2375046/1650410

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!