标签:command 防火墙 数据包 linux iptables
四表五链: filter nat mangle raw prerouting input output forward postrouting
------------------------------
注意:一张表中有多条链,一条链中可以有一条或多条规则。
当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则,如果满足则该规则处理该数据包,如果不满足,就继续检查下一条规则,最后该数据包不符合该链中的任一条规则的话,系统就会根据该链预先定义的策略来处理该数据包。
iptables 命令的使用:
iptables 【-t 表】 command 链 匹配标准 -j 处理方法
-t : filter nat mangle raw
command: 管理链: -F [CHAIN] :清除指定的规则链,如果省略chain则可以实现删除对应table中的所有的链 -P [CHAIN] :设定指定链的默认策略 -N :自定义一个新的空链 -X :删除一个自定义的空链 -Z :置零指定链中所有规则的计数器 -E :重命名自定义的链 管理规则: -A :附加一条规则,添加在链的尾部 -I CHINA[num] :插入一条规则,插入为对应的chain中的第num条 -D CHAIN[num] : 删除指定链中的第num条规则 -R CHAIN[num] : 替换指定链中的第num条规则 查看类: -L 显示指定表中的规则 -n : 以数字格式的形式显示主机地址和端口号 -v : 显示链及规则的详细信息 -vv :显示链及规则的更加详细的信息 -x : 显示计数器的精确值 --line-numbers : 显示规则的序号 ==--line
链: prerouting input output forward postrouting
匹配标准:
通用匹配:
-o INTERFACE :指定数据报文流出的接口 -i INTERFACE :指定数据报文流入的接口 -s ;--src :指定源地址 -d ;--dst :指定目标地址 -p {tcp|udp|icmp} :指定协议
隐含扩展:
-p tcp --sport PORT 源端口 --dport PORT 目的端口 --tcp-flags mask comp 只检查mask指定的标志位,是逗号分隔的标志位列表
comp:此列表中出现的标志位必须为1,comp中没出现,而mask中出现的必须为0
eg:--tcp-flagsSYN,FIN,ACK,RST SYN == --syn --syn -p icmp --icmp-type [num] num: 0:echo-reply 响应报文 8:echo-request 请求报文
-p udp --sport PORT --dport PORT
显示扩展:
-m state --state 结合ip_constack追踪会话的状态 NEW :新连接请求 ESTABLISHED :已建立的连接 INVALID :非法连接 RELATED :相关联的,专为ftp设定的
练习:192.168.137.11作为服务器,只允许请求新数据,不允许tcp/22(80) 发送新的请求
首先将iptables的默认策略更改为DROP iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -A INPUT -d 192.168.137.11 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -s 192.168.137.11 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -d 192.168.137.11 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -s 192.168.137.11 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT -m multiport 离线的多端口匹配 --source-port --destination-port --port
练习:在服务192.168.137.11上同时在一条规则上开放进来的22,80,21端口
iptables -A INPUT -d 192.168.137.11 -p tcp -m miltiport --destination-port 22,21,80 -j ACCEPT -m iprange :地址范围匹配扩展 --src-range ip-ip --dst-range ip-ip
练习:在192.168.137.11服务器上允许172.16.100.3-172.168.100.100的ip所有服务进来
iptables -A INPUT -m iprange --src-range 172.16.100.3-172.168.100.100 -j ACCEPT -m connlimit-about n :连接数的限制,低于n个的连接才可以访问 -m limit --limit RATE(速率) :5/min --limit-burst n :第一次可以上传多少 -m string --algo (kmp|bm) --string ("STRING")
练习:
-j : ACCEPT : 允许 DROP :丢弃 REJECT :拒绝 DNAT:目的地址转换 SNAT:源地址转换 LOG:记录日志 --log-prefix "string": 加入前缀 MARK:打标志 RETURN:返回
---------------------------------
cat /proc/net/ip_conntrack ip报文追踪信息 iptstate: iptable的状态信息 -t 显示所有的连接个数 状态信息意义: NEW :新连接请求 ESTABLISHED :已建立的连接 INVALID :非法连接 RELATED :相关联的,专为ftp设定的。
在繁忙的服务器上建议不要使用这个模块:
装载ip_conntrack模块: service iptables stop modprobe ip_conntrack 转载内核模块,可以单独工作 cat /proc/net/ip_conntrack cat /proc/net/ipv4/ip_conntrack_mak 最大条目,有必要时要调大这个最大值,但在非常繁忙的服务器上,不建议启动这个模块
卸载ip_conntrack模块:
modprobe -r ip_conntrack 注意: iptables -t nat -L 使用这个命令时,会自动启动ip_conntrack,所以在工作中当其处于关闭时,慎用
-----------------------------------------
命令行中的规则条目是需要保存:
第一种:service iptables save --->默认存放位置:/etc/sysconfig/iptables 开机后会自动加载到iptables规则中。 第二种:iptables-save > /etc/sysconfig/iptables-20150326 iptables-restore < /etc/sysconfig/iptables-20150326 开机后不会自动加载iptables规则中,需要手动加载,一般用于备份恢复。
------------------------------------------------------------
练习:
将192.168.137.10的iptables的默认路由策略更改为DROP
iptables -t filter -P INPUT -j DROP iptables -t filter -P OUTPUT -j DROP iptables -t filter -P FORWARD -j DROP iptables -L -n
测试 ssh ping http等服务是否工作
ssh 192.168.137.10:22 ping 192.168.137.11 http://192.168.137.11:80
打开ssh:22连接服务:
iptables -t filter -A INPUT -s 192.168.137.0/24 -d 192.168.137.10 -p tcp --dport 22 -j ACCEPT iptables -t filter -A OUTPUT -s 192.168.137.10 -d 192.168.137.0/24 -p tcp --sport 22 -j ACCEPT
测试ssh服务:
ssh 192.168.137.10:22
打开http服务:
iptables -t filter -A INPUT -d 192.168.137.10 -p tcp --dport 80 -j ACCEPT iptables -t filter -A OUTPUT -s 192.168.137.10 -p tcp --sport 80 -j ACCEPT 测试http服务: http://192.168.137.10:80
打开ping功能:
你可以ping通别人,别人无法ping通你:
本机ping其他主机,出去时向其他主机请求报文8,别的主机返回来的是响应报文0 iptables -t filter -A OUTPUT -s 192.168.137.10 -p icmp-type 8 -j ACCEPT iptables -t filter -A INPUT -d 192.168.137.10 -p icmp-type 0 -j ACCEPT 测试ping功能: ping 192.168.137.10 ping 192.168.137.11
别人可以ping通你:
别的主机要ping通你,发送一个请求报文到本机,所以进入本机的是请求报文8,本机再响应报文给请求的主机,所以出去的是响应报文0. iptables -t filter -A INPUT -d 192.168.137.10 -p icmp --icmp-type 8 -j ACCPET iptables -t filter -A OUTPUT -s 192.168.137.10 -p icmp --icmp-type 0 -j ACCEPT
练习:
192.168.137.11作为服务器,只允许请求新数据,不允许tcp/22(80) 发送新的请求 首先将iptables的默认策略更改为DROP iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -A INPUT -d 192.168.137.11 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -s 192.168.137.11 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -d 192.168.137.11 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -s 192.168.137.11 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
本文出自 “天道酬勤” 博客,请务必保留此出处http://luzhi1024.blog.51cto.com/8845546/1650741
标签:command 防火墙 数据包 linux iptables
原文地址:http://luzhi1024.blog.51cto.com/8845546/1650741