目前公司的业务情况如下:某一台服务器要求只允许外网两个IP访问,内网的所有服务器都可以访问.
要过到此目的,可以在cisco防火墙上进行配置,也可以用本机的iptables进行控制,下面是iptables进行
控制访问的步骤:
1.首先在测试节段做定时脚本,防止iptables策略出错造成所有机器都无法访问.
cat iptables_flush.sh
#!/bin/bash
/sbin/iptables -F
/sbin/iptables -t nat -F
/sbin/iptables -P ACCEPT #默认所有都接受
2.做crontab计划任务
crontab -l
*/10 * * * * sh iptables_flush.sh
每隔10分钟自动转为默认
3.配置iptables策略
cat iptables.sh
#!/bin/bash
iptables -F
iptables -t nat -F
iptables -P INPUT DROP
iptables -A INPUT -s A.B.C.0/24 -j ACCEPT #要通过的网段
iptables -A INPUT -s A.B.C.D -j ACCEPT #要通过的IP
iptables -A INPUT -m state --state RELATED -j ACCEPT #保持与已经存在的连接相关的连接
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT #保持从本机发起的连接
4.将iptables脚本放入后台执行,原因:第一节拒绝所有就会有可能把后几条屏蔽了
sh iptables.sh &
5.进行测试
在通过的网段内连接本主机--通过
在被允许的主机上连接本主机--通过
从主机往任一台机器发送连接--通过
注:如果不加最后两条基于状态的策略,从本机发往其他主机是不会成功连接的,因为根据TCP与UDP的连接协议,两台主机要进行连接,是有3次握手与4次握手的,意味着两条主机要进行交互.而在前几条策略是不允许没有加入策略的主机进行连接的.所有加了后两条,表明从本机发起的连接是被允许返回接受的!
测试通过后把crontab的iptables_flush.sh去除
阅读(3902) | 评论(0) | 转发(2) |