iptables 使用方法

来源:互联网 发布:短发发型设计软件 编辑:程序博客网 时间:2024/05/03 18:29

一、Iptables 的表链结构

1、.默认有四个规则表

*           raw表:确定是否对数据包进行状态跟踪

*           mangle表:为数据包设置标记

*           nat表:修改数据包中的源、目标地址和端口

*           filter表:确定是否对该数据包放行(过滤)

2、默认的5个规则链

*           INPUT链:                        处理入站数据包

*           OUTPUT链:                    处理出站数据包

*           FORWARD链:                处理转发数据包

*           POSTROUTING链:       在路由选择后处理数据包

*           PREROUTING链:          在路由选择前处理数据包

二、数据包过滤流程

1、规则表间的优先顺序

*          依次为  raw —〉 mangle­―〉  nat ―〉 filter

2、规则链间的匹配顺序

*         入站匹配                             PREROUTING —〉 INPUT

*         出站匹配                             OUTPUT   —〉 POSTROUTING

*         转发匹配                             PREROUTING —〉FORWARD—〉 POSTROUTING

如图:

三、Iptables 的书写规则

iptables命令的语法格式
*         iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作或跳转]
几个注意事项
*         不指定表名时,默认表示filter表
*         不指定链名时,默认表示该表内所有链
*         除非设置规则链的缺省策略,否则需要指定匹配条件
清除规则
*         -D:删除指定位置或内容的规则
*         -F:清空规则链内的所有规则
*         -Z:清空计数器
自定义规则链
*         -N:创建一条新的规则链
*         -X:删除自定义的规则链
其他
*         -h:查看iptables命令的使用帮助

例如:

[root@localhost ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT
[root@localhost ~]# iptables -I INPUT -p udp -j ACCEPT
[root@localhost ~]# iptables -P INPUT DROP
[root@localhost ~]# iptables -L INPUT --line-numbers
Chain INPUT (policy DROP)
num  target     prot opt source               destination        
1    ACCEPT     udp  --  anywhere             anywhere           
2    ACCEPT     tcp  --  anywhere             anywhere  

四、Iptables 条件匹配

1、通用条件匹配

协议匹配

*                 使用“-p 协议名”的形式

*                协议名可使用在“/etc/protocols”文件中定义的名称

*                 常用协议包括 tcp、udp、icmp 等

地址匹配

*       使用“-s 源地址”、 “-d 目标地址”的形式
*       地址可以是单个IP地址、网络地址(带掩码长度)

借口匹配

*       使用“-i 网络接口名”、 “-o 网络接口名”的形式,分别对应接收、发送数据包的网络接口

例如:

[root@localhost ~]# iptables -I INPUT -p icmp -j REJECT
[root@localhost ~]# iptables -A FORWARD -p ! icmp -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -s 192.168.1.11 -j REJECT
[root@localhost ~]# iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
[root@localhost ~]# iptables -A FORWARD -o eth1 -d 61.35.4.3 -j DROP

2、隐含条件匹配

端口匹配
*         使用“--sport 源端口”、“--dport 目标端口”的形式
*         采用“端口1:端口2”的形式可以指定一个范围的端口
TCP标记匹配
*         使用“--tcp-flags 检查范围  被设置的标记”的形式
*         如“--tcp-flags SYN,RST,ACK SYN”表示检查SYN、RST、ACK这3个标记,只有SYN为1时满足条件
ICMP类型匹配
*         使用“--icmp-type ICMP类型”的形式
*        ICMP类型可以使用类型字符串或者对应的数值,例如Echo-Request、Echo-Reply

例如:

[root@localhost ~]# iptables -A FORWARD -p tcp --dport 22 -j ACCEPT
[root@localhost ~]# iptables -A OUTPUT -p tcp --sport 20:80 -j ACCEPT

[root@localhost ~]# iptables -I INPUT -i eth1 -p tcp --tcp-flags SYN,RST,ACK SYN -j REJECT
[root@localhost ~]# iptables -A INPUT -i eth0 -p icmp --icmp-type Echo-Request -j DROP
[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT

3、Iptables 扩展条件匹配

MAC地址匹配
*         使用“-m mac”结合“--mac-source MAC地址”的形式
多端口匹配
*         使用“-m multiport”结合“--sports 源端口列表”或者“--dports 目标端口列表”的形式
*         多个端口之间使用逗号“,”分隔,连续的端口也可以使用冒号“:”分隔
IP地址范围匹配
*         使用“-m iprange”结合“--src-range 源IP范围”或者“--dst-range 目标IP范围” 的形式
*         以“-”符号连接起始IP地址、结束IP地址
例如:
[root@localhost ~]# iptables -A FORWARD -m mac --mac-source 00:0C:29:27:55:3F -j DROP
[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP
4、Iptables数据包控制
常见的数据包处理方式
*         ACCEPT:放行数据包
*         DROP:丢弃数据包
*         REJECT:拒绝数据包
*         LOG:记录日志信息,并传递给下一条规则处理
*         用户自定义链名:传递给自定义链内的规则进行处理
*         SNAT:修改数据包的源地址信息
*         DNAT:修改数据包的目标地址信息
例:
[root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -m limit --limit   3/minute --limit-burst 8 -j LOG
[root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -j DROP
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT   --to-source 218.29.30.31
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
[root@localhost ~]#iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.6(:80)

 

 

 

 

 

 

 

 

 

原创粉丝点击