linux iptables使用
iptables利用封包过滤的机制,分析封包的表头数据,根据表头数据与定义的规则来决定该封包是否可以进入主机或者被丢弃。
iptables包含表(table)和链(chain),我们最常用的表是filter(过滤器)表,默认情况下我们操作的都是这个表。
还有其他相关的知识大家可以参考鸟哥的linux私房菜。这里着重讲一下如何使用的问题。
注意,在远程服务器上进行操作时务必要小心,一定要在本地测试熟练后再进行远程配置。
常用的参数:
iptables -L
列出所有规则,还有其他参数,-n 表示不进行ip与hostname的反查,速度较快,–line-numbers表示显示行号。例如iptables -L -n --line-numbers
iptables -F
清除所有的已订定的规则
iptables -X
杀掉所有使用者 “自定义” 的 chain (应该说的是 tables )
iptables -Z
将所有的 chain 的计数与流量统计都归零
iptables的规则(rule)是按照顺序解释的,碰到符合的规则就结束了,所以每次我们全部重新配置时都要先执行以上三个命令
下面是添加规则时常用的参数:
iptable -P
注意这里P是大写,这里定义的是规则的策略,用于定义INPUT,OUTPUT,FORWARD的默认策略,在封包没有符合的规则时,会使用默认的策略。例如iptable -P INPUT ACCEPT
用于添加rule的参数
-A
表示添加到规则的结尾,-I表示在某条规则之前插入,如果没有指定具体的条目则默认插入到第一条。
-io
表示设定封包进出的接口规范,-i表示封包进入的接口,例如eth0,lo等,需与INPUT链配合。-o表示传出的网络接口,需与OUTPUT链配合。
-p
表示封包的格式,主要包含:tcp,udp,icmp及all
与-p配合的参数有:–sport表示来源的端口或者端口范围,例如:3389,或者1024:1025,–dport表示目标端口号或者端口范围,同–sport。
-s
表示来源的IP或网域。例如:IP:192.168.0.1,网域:192.168.0.0/24,在ip或网域前加!表示禁止,例如:-s ! 192.168.0.1。
-d
表示目标ip或网域。同-s。
-j
后面接动作,包括:ACCEPT,DROP,REJECT及LOG
到这里常用的参数已经介绍了。
另外还有常用的插件需要了解,state。这个在我们管理状态时非常有用,比如我们进行远程管理时,可以先添加对当前已经创建的链接放行的规则。
iptables -A INPUT [-m state] [--state 状态]
-m
表示使用的插件 : state,状态模块
--state
表示封包的状态,主要包含的状态为:INVALID,无效的封包,如数据损坏的封包;ESTABLISHED,已经成功连接的链接状态;NEW,想要新建立连接的封包状态;RELATED,表示这个封包是与我们主机发送的封包有关。
例如,我们新添加一个规则表示只要是已经建立或者相关的封包就给予通过,这个规则在我们操作远程服务器时比较常用:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
下面我们列举一些实例,比如我们要配置一个远程服务器的规则,开放80端口,只让指定的ip访问6379端口:
iptables -F iptables -X iptables -Z iptables -A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -s 10.129.59.120/32 -p tcp -m tcp --dport 6379 -j ACCEPT iptables -A INPUT -s 10.163.200.91/32 -p tcp -m tcp --dport 6379 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 6379 -j DROP iptables -A INPUT -j DROP
转载请注明原文出处《linux iptables使用》 如无特别声明,所有文章均遵守创作共用 署名-非商业-禁止演绎 3.0协议。