iptables规则的用法

1、基本语法:
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]

其中,表名,链名用来指定iptables命令所操作的表和链,未指定表名时将默认使用filter表;
管理选项表示iptables规则的操作方式,如插入,增加,删除,查看等;
匹配条件用来指定要处理的数据包的特征,不符合指定条件的数据包将不会处理;
控制类型指的是数据包的处理方式,如允许、拒绝、丢弃等。

在iptables中最常见的几种控制类型:
■ACCEPT:允许数据包通过
■DROP:直接丢弃数据包,不给出任何回应信息
■REJECT:拒绝数据包通过,必要时返回一个相应信息。
■LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。
实例:
1、1在fileter表的input链中耻辱一条规则拒绝发给本机的使用ICMP协议的数据包(效果:其他主机无法ping通本机)
iptables -t filter -I INPUT -p icmp -j REJECT
2.2.添加,查看,删除规则等基本操作:
-A:追加规则
-I:插入规则
实例:
在filter表的末尾添加一条规则:
iptable -t filter -A INPUT -p tcp -j ACCEPT
-I可以指定添加位置,不指定既为第一条:
iptables -t filter -I INPUT 2 -p udp -j ACCEPT
-L -N(显示序号) 查看规则列表;
删除指定规则:
iptables -D -INPUT 3 删除filter表中input链的第三条规则
iptables -F INPUT 清空filter表中input链中的规则
iptables -F 清空filter表中的所有规则
iptables -t nat -F 清空nat表中的所有规则
2.3.关于默认策略:
默认策略既当找不到匹配的规则时默认应用该策略。
实例:
将filter链中的forward链默认设置为丢弃,output默认设置为允许
iptables -t filter -p FORWARD DROP
iptables -t filter -p OUTPUT ACCEPT

2.4关于规则的匹配条件:
1、-p 协议匹配:tcp,udp,icmp,all
2、地址匹配:-s 源地址 -d 目标地址
实例:
拒绝转发源地址为192.168.1.11的数据,允许转发源地址位于192.168.7.0/24网段的数据。
iptables -A FORWARD -s 192.168.1.11 -j REJECT
iptables -A FORWARD -s 192.168.7.0/24 -j ACCEPT
封锁某些地址的频繁扫描与登录穷举
iptables -A INPUT -s 192.168.0.0/24 -j DROP
iptables -A FORWARD -s 192.168.7.0/24 -j DROP
3、网络接口匹配:用于检测数据包从防火墙的哪一个接口进入或发出
-i 接口名 (入站网卡)
-o 接口名 (出站网卡)
实例:丢弃从外网接口(eth1)访问防火墙本机且源地址为私有地址的数据包。
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
4、隐含匹配:这种匹配方式要求以指定的协议匹配作为前提条件,相当于子条件因此无法独立使用。
4.1端口匹配–sport(源端口)或–dport(目标端口),针对tcp、udp协议
实例:允许为网段192.168.4.0/24转发DNS查询数据包。
iptables -A FORWARD -s 192.168.4.0/24 -p udp –dport 53 -j CCEPT
iptables -A FORWARD -s 192.168.4.0/24 -p udp –sport 53 -j CCEPT
开放被动端口24500–24600
iptables -A INPUT -p tcp –dport 24500;24600 -j ACCEPT
4.2。ICMP类型匹配:“–icmp-type icmp类型”用来检查ICMP数据包的类型。ICMP类型使用字符串或数字代码表示,如“Echo-Request”请求报文(代码为8),“Echo-Replay”应答报文(代码为0),“,Destination-Unreachable”不可达(代码为3)。
实例:禁止其他主机ping本机,允许本机ping其他主机
iptables -A INPUT -p icmp –icmp-type 8 -j DROP
iptables -A INPUT -p icmp –icmp-type 0 -j ACCEPT
iptables -A INPUT -p icmp –icmp-type 3 -j ACCEPT
iptables -A INPUT -p icmp -j DROP
5、显示匹配:这种匹配要求额外的模块支持,必须手动以“-m 模块名称”的形式调用
5.1.多端口匹配:
编写iptables规则时使用”-m multiport –dports 端口列表“,”-m multiport –sports 端口列表“的形式,来检查数据包的源端口,目标端口,多个端口之间以逗号进行分割。
例:
iptables -A INPUT -p tcp -m multiport –dport 23,80,110,143 -j ACCEPT
5.2.IP范围匹配:
使用”-m iprange –src-range ip范围””-m iprange –dst-range IP 范围“的形式来检查数据包的源地址,目标地址,其中ip范围采用”起始地址-结束地址“的形式表示
例:禁止转发源ip位于192.168.4.21与4.28之间的tcp数据包:
iptables -A FORWARD -p tcp -m iprange –src-range 192.168.4.21-192.168.4.28 -j ACCEPT
5.3.MAC地址匹配
使用”-m mac –mac-source MAC地址”的形式,来检查数据包的源mac地址,一般用于内部网络。
iptables -A INPUT -m mac –mac-source (mac) -j DROP
5.4.状态匹配
使用“-m state –state 链接状态”的形式,常见的链接状态包括NEW(与任何链接无关的)ESTABUSHED(享用请求或者已建立链接的)和RELATED(与已有链接有相关性的)
例:
禁止转发与正常tcp链接无关的非–syn请求数据包:
iptables -A FORWARD -m state –state NEW -p tcp ! –syn -j DROP

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章