前阵子公司的服务器上搭设了ElasticSearch服务,暴露了9200端口,被安全部门检测到要求整改。
需求:只允许某个IP或IP段访问9200端口。
## -I(insert)参数在头部插入,-A(append)在尾部,往INPUT表添加规则。-p
## (protocol) TCP协议 --dport destination-port 9200端口
## 禁止9200端口访问
iptables -I INPUT -p TCP --dport 9200 -j DROP
## 允许IP 10.61.12.0/24这个网段访问9200端口
iptables -I INPUT -s 10.61.12.0/24 -p TCP --dport 9200 -j ACCEPT
## 查看所有规则,并显示line number
iptables -L --line-number 或者 iptables -L INPUT --line-number
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 10.10.11.0/24 anywhere tcp dpt:wap-wsp
2 DROP tcp -- anywhere anywhere tcp dpt:wap-wsp
3 ACCEPT udp -- anywhere anywhere udp dpt:domain
4 ACCEPT tcp -- anywhere anywhere tcp dpt:domain
5 ACCEPT udp -- anywhere anywhere udp dpt:bootps
6 ACCEPT tcp -- anywhere anywhere tcp dpt:bootps
##删除规则序号1
iptables -D INPUT 1
解释一下,因为使用I参数,都是往头部插入。
ACCEPT是指:如果满足规则放行,剩下的规则不需要再执行。
DROP是指:如果满足规则丢弃(这时候客户端会傻傻等待到超时),剩下的规则不需要再执行。
REJECT是指:如果满足规则,则拒绝(REJECT动作会返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作),剩下的规则不需要再执行。
看着上表解释,如果满足规则1这个10.10.11.0/24网段,放行,剩下的规则都不需校验了。
如果不满足,执行下一条规则2,对访问9200端口所有的请求都丢弃。如果满足,剩下规则不需校验,同上。
即,满足了特定IP访问9200端口的需求。