自己第一次写的Iptables 的脚本,帮我看看
刚学这个,今天自己写了一个Iptables 的脚本,总有点问题,但自己找不出来,帮我看看,有错误的指出来,不够完善的帮我补充一下。。谢谢
环境:只有一台Web服务器,并且自己就是防火墙,只要让向外发布Web服务器,和可以让远程的机器通过SSH来管理。要保证安全性并且日志记录登录的情况。
脚本:
#!/bin/bash
echo "Starting iptables rules ..."
IPT=/sbin/iptables
WWW-SER=11.0.0.254
$IPT -F
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
$IPT -A INPUT -p tcp --dport 22 -j LOG --log-level 5 --log-prefix "IPTABLES:"
$IPT -A INPUT -p tcp -d $WWW-SER --dport 22 -j ACCEPT
$IPT -A INPUT -p tcp -d $WWW-SER--dport 80 -j ACCEPT
$IPT -A INPUT -p udp --dport 53 -j ACCEPT
$IPT -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p tcp -s $WWW-SER --sport 80 -m state --state ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p udp --sport 53 -j ACCEPT
$IPT -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
问题1:我是用虚拟机来做的,当我一条条打来挑错时,发现SSH连接有问题,如果我先都把22号端口打开,DROP掉INPUT和FORWARD链不会有问题,但我DROP掉OUTPUT链就连不上了,这是怎么回事。
问题2:在安全方面我还要注意什么,是否完善了。
[ 本帖最后由 ajiangg 于 2007-4-5 19:44 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
tcp/ip 雙向老問題,您可以先閱讀網絡版置頂文章內,可以找到 iptables 設定常見 faq 有你要的一些資訊..
--
谢谢kenduest,我仔细看了你的文章,确实不错。但我同时也发现了点问题。
我也很同意你的说的,但现在我的这个配置经过实验后变成了这个样子:
脚本:
#!/bin/bash
echo "Starting iptables rules ..."
IPT=/sbin/iptables
WWWSER=192.0.0.254
$IPT -F
$IPT -X
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
$IPT -A INPUT -m state --state ESTABLISHED,NEW -j ACCEPT
$IPT -A INPUT -p tcp --dport 22 -j LOG --log-level 5 --log-prefix "IPTABLES:"
$IPT -A INPUT -p tcp -d $WWWSER --dport 22 -j ACCEPT
$IPT -A INPUT -p tcp -d $WWWSER --dport 80 -j ACCEPT
$IPT -A INPUT -p udp --dport 53 -j ACCEPT
$IPT -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
$IPT -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 22 -j ACCEPT
$IPT -A OUTPUT -p tcp -s $WWWSER --sport 80 -m state --state ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p udp --sport 53 -j ACCEPT
就是要加一个NEW才可以和SSH连通,我做了很多测试,一个个的删除和建立,最后就只能这样才可以通信。
不知道是怎么回事,可不可以帮我解释一下。
另外:还有个问题:
你在文中说:“不过拉回来看,有必要配置 -P OUTPUT DROP 吗?老实说个人倒是感觉通常都是多此一举,因为实际应用部份通常不会限制自己主机对外连线的功能。”
但是如果服务器中了病毒或者木马,病毒和木马自己出去对外连接,这个安全问题要如何来解决呢?
你的 script 有點亂,不過整個來看就是允許外面可以連 ssh/dns/www 服務的話,應該就是:
复制代码
這樣就可以了。這個內容也於該 faq 內有提供。
後續若是你希望主機可以有 dns 對外查詢資料的話,多:
复制代码
你還要允許主機主動對外連那邊,你就繼續新增 OUTPUT rule 即可。
--
谢谢kenduest,确实像您那样写了之后,都清楚很多了.这是一个好习惯,学习。
最后整理,实践也证明是可行的脚本。
的确乱!
花里胡哨不中用的也尽往上写!
即然这样说了,为什么不写些更实在的
我愿意洗耳恭听
这个是marsaber跟我在QQ聊时,他给出的脚本。
#!/bin/bash
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -p udp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p udp --sport 53 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
首先可以看出来是简单了不少。
有很多地方值得参考,但我今天做了实验,确实也可以访问,但是我在服务器上访问互联网上的东西也是可以的,
我就想这个安全问题是不是就有问题了,如果服务中了木马或者病毒之后,自动向外发送请求,那不也是可以联上的。
marsaber希望你可以看到,因为那个QQ群不见了,我再加,又说我已经有了。但我就是找不到那个群了。
只好在这帖出来,看到后给我回。或者加我的QQ。
还有一个,回环接口是不是也应该考滤进去呢。
路过的人也给点建议和看法。
請參考 linux 網絡版置頂文章,iptables faq 都有提到你問的東西。
--
呵呵.....
如果后门是通过web端口往外连的话,咋办?
难不成你把web也关了?
安全是相对的,没有绝对的安全!
你尽可能的使你的服务器安全吧。