状态匹配
iptabls规则时使用”-m state –state连接状态”的形式,基于iptables的状态跟踪机制用来检查数据包的链接状态(State)。常见的连接状态包括NEW(与任何连接无关的)、EXTABLISHED(响应请求或者已建立连接的)和RELATED(与已有连接相关性的,如FTP数据连接。)
只开放本机的Web服务,但对发给本机的TCP应答报文予以放行,其他入站报文均丢弃
[root@deploy-tools-test1 ~]# iptables -I INPUT -p tcp -m multiport –dport 22,53000 -j ACCEPT
[root@deploy-tools-test1 ~]# iptables -I INPUT -p tcp -m state –state ESTABLISHED -j ACCEPT
[root@deploy-tools-test1 ~]# iptables -P INPUT DROP
状态匹配是iptables中非常重要的一种匹配方式,可以根据数据包的状态来进行过滤,常用的状态有NEW、BUILT和RELATED
- 新状
- BUILT状态:表示数据包属于一个已经建立的连接,例如在HTTP连接中的请求和响应的数据包就是BUILT状态的数据包。此状态表示连接已经建立成功。
- 相关状态:表示数据包
例如,我们可以使用以下规则来过滤仅允许已建立的SSH连接:
iptables -A INPUT -p tcp --dport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
这里第一条规则允许ESTABLISHED状态的SSH连接通过,第二条规则则拒绝所有其它SSH连接。
一个生动形象的比喻是,一个酒吧的门卫可以根据一个人是初次到访(NEW)、已经入场(ESTABLISHED)或者是与其他已进入酒吧的人有关(RELATED)来判断是否允许其进入。例如,一个初次到访的人需要提供ID才能进入,一个已经入场的人可以自由出入,而一个与已经进入酒吧的人有关系的人可以随着他的朋友进入。状态匹配就是搞活动,只要新人new就行,其他不要。