首先备份原有iptabls文件, 然后:
iptables -A INPUT -p tcp -s 202.117.10.9 -j ACCEPT //接收所有10.9的数据包
iptables -A INPUT -p tcp -s 202.117.10.35 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP //丢弃所有数据包
这样,上述执行流程变为, 依次获取10.9.10.35的数据包,丢弃所有其他的数据包。
service iptables status :
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 202.117.10.9 0.0.0.0/0
2 ACCEPT tcp -- 202.117.10.35 0.0.0.0/0
3 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
然后, service iptables save ,保存规则表.
生成的文件如下:
# Generated by iptables-save v1.4.7 on Tue Dec 3 21:31:27 2013
*filter
:INPUT ACCEPT [7315:5651551]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [5865:5377729]
-A INPUT -s 202.117.10.9/32 -p tcp -j ACCEPT
-A INPUT -s 202.117.10.35/32 -p tcp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j DROP
COMMIT
# Completed on Tue Dec 3 21:31:27 2013
即可按自己需要添加。
这里我漏的一项重要的就是只限制了进来的数据包,没有对出去的数据包进行限制。 后续再进行添加.
关于出去的数据包限制:
iptables -A OUTPUT -p tcp --sport 22 -s 202.117.10.35 -j ACCEPT // 如果你把OUTPUT 设置成DROP,就需要加上这个规则,否则SSH还是不能登录,因为SSH服务职能进不能出。
参考并设置为: iptables -A OUTPUT -p tcp -d 202.117.10.9 -j ACCEPT // 待测试