防火墙是内核的配置,iptables是使用防火墙的工具
iptables语法:
iptables [-t 表名] 动作 链名 匹配条件 -j 目标动作或跳转
详解:
一、表名TABLE
1、raw表:确定是否对数据包进行状态跟踪(目标是关闭nat表上启用的连接追踪功能)。
2、mangle表:为数据包设置标记。
3、nat表:地址转换,修改数据包中的源、目标IP地址或端口;启用connection_track;SNAT,DNAT,PNAT
4、filter表:过滤,确定是否放行该数据包
默认为filter表
二、动作COMMAND
1、对于链的动作:
-F:flush, 清空规则链;
-N:new, 自建一条自定义链
-X: delete, 删除一条自定义的空链
-Z:zero,(数据包和流量)计数器归零
-P:policy,设置默认策略,对filter表来讲,默认规则为ACCEPT或DROP,不能为REJECT;
-E:重命名自定义链
2、对于链中规则的动作:
-A:向链中添加一条规则,默认插入所有规则的最后一条。
-I:向链中插入一条规则,默认插入所有规则的第一条。
iptables -I INPUT 2 ·····
即为在链中第2条规则前添加一条规则。
-D:从链中删除一条规则。
-R:替换链中的一条规则。
3、查询动作:
-L
-n: 数字格式显示主机地址和端口;
-v: 详细格式,-vv, -vvv
--line-numbers: 显示规则编号
-x: exactly,不要对计数器的计数结果做单位换算,而显示其精确值
三、链名CHAIN
PREROUTING:路由前,进行路由选择前处理数据包
INPUT:到达本机内部的报文必经之路,处理入站数据包
FORWARD:由本机转发的报文必经之路,处理转发数据包
OUTPUT:由本机发出的报文的必经之路,处理出站数据包
POSTROUTING:路由后,进行路由选择后处理数据包
四、匹配条件CRETIRIA
1、通用匹配
-s IP地址:指定报文源IP地址匹配的范围;可以是IP,也可以是网络地址;可使用!取反;
--src, --source
-d IP地址:指定报文目标IP地址匹配的范围;
--dst, --destination
-p 协议:指定匹配报文的协议类型,一般有三种tcp, udp和icmp;
-i 网络接口名: 数据报文流入的接口;PREROUTING, INPUT, FORWARD
-o 网络接口名: 数据报文流出的接口;OUTPUT, FORWARD, POSTROUITING
2、扩展匹配
(1)隐式扩展:当使用-p {tcp|udp|icmp}中的一种时,可以直接使用扩展专用选项;
-p tcp:
--sport 源端口号: 指定源端口
--dport 目标端口号: 指定目标端口
-p udp:
--sport 源端口号: 指定源端口
--dport 目标端口号: 指定目标端口
-p icmp [-m icmp]
--icmp-type
0: echo-reply, ping响应
8: echo-request, ping请求
(2)显式扩展:必须明确说明使用哪个模块进行扩展,而后才能使用其扩展专用选项;
-m :match指定数据包规则所使用过的过滤模块
用法:
-m 扩展模块名称
-m state --state
例:匹配源mac地址
-m mac --mac-source mac地址
模块:
1】multiport: 多端口匹配,可用于匹配非连续或连续端口;最多指定15个端口;
专用选项:
--source-ports, --sports port[,port,port]
--destination-ports, --dports
--ports
例:iptables -I INPUT -d 172.16.100.7 -p tcp -m multiport --dports 22,80 -j ACCEPT
2】iprange: 匹配指定范围内的地址;匹配一段连续的地址而非整个网络时有用;
专用选项:
[!] --src-ragne IP[-IP]
[!] --dst-range
例:iptables -A INPUT -d 172.16.100.7 -p tcp --dport 23 -m iprange --src-range 172.16.100.1-172.16.100.100 -j ACCEPT
例:iptables -A OUTPUT -s 172.16.100.7 -p tcp --sport 23 -m iprange --dst-range 172.16.100.1-172.16.100.100 -j ACCEPT
3】string: 字符串匹配,能够检测报文应用层中的字符串
专用选项:
--string "STRING"
--hex-string "HEX_STRING": HEX_STRING为编码成16进制格式的字串;
例:iptables -I OUTPUT -m string --algo kmp --string "sex" -j DROP
4】time: 基于时间做访问控制
专用选项:
--datestart YYYY[-MM][-DD[Thh[:mm[:ss]]]]
--datestop
--timestart hh:mm[:ss]
--timestop hh:mm[:ss]
--weekdays day[,day]
Mon, Tue,
例:iptables -I INPUT -d 172.16.100.7 -p tcp --dport 80 -m time --timestart 08:20 --timestop 18:40 --weekdays Mon,Tue,Thu,Fri -j REJECT
5】connlimit: 连接数限制,对每IP所能够发起并发连接数做限制;
专用选项:
[!] --connlimit-above [n]
例:iptables -A INPUT -d 172.16.100.7 -p tcp --dport 22 -m connlimit --connlimit-above 2 -j DROP
6】limit: 速率限制
专用选项:
--limit n[/second|/minute|/hour|/day]
--limit-burst n
例:iptables -A INPUT -d 172.16.100.7 -p icmp --icmp-type 8
五、目标动作TARGET
1、ACCEPT
2、DROP:丢弃数据包不予处理,进行完此处理后将不再对比其他规则,直接中断过滤程序。
3、REJECT:拦阻数据包,并返回数据包通知对方,可返回的数据包。
4、LOG:将iptables日志存储在/var/log/messages文件中。
[root@localhost log]# iptables -L -v#显示的参数简单解释
Chain:链
policy:默认策略
pkts:该规则处理数据包的个数
bytes:该规则处理数据包的大小(流量)
target:目标动作
prot:协议(条件)
opt:其他选项
source:源地址
destination:目标地址
以上均为理论知识点,以后遇到具体实例后回继续添加。
原文地址:http://littlehorse.blog.51cto.com/10066209/1717459