CentOS 5.3系统.
预期结果:阻止除Ping,ssh,Apache和SSL之外的所有内容.
基于xenoterracide’s advice和其他问题的回答(谢谢你们),我创建了这个脚本:
# Establish a clean slateiptables -P input ACCEPTiptables -P FORWARD ACCEPTiptables -P OUTPUT ACCEPTiptables -F # Flush all rulesiptables -X # Delete all chains# disable routing. Drop packets if they reach the end of the chain.iptables -P FORWARD DROP# Drop all packets with a bad stateiptables -A input -m state --state INVALID -j DROP# Accept any packets that have something to do with ones we've sent on outboundiptables -A input -m state --state RELATED,ESTABliSHED -j ACCEPT# Accept any packets coming or going on localhost (this can be very important)iptables -A input -i lo -j ACCEPT# Accept ICMPiptables -A input -p icmp -j ACCEPT# Allow sshiptables -A input -p tcp --dport 22 -j ACCEPT# Allow @R_419_6822@diptables -A input -p tcp --dport 80 -j ACCEPT# Allow SSLiptables -A input -p tcp --dport 443 -j ACCEPT# Block all other traffic iptables -A input -j DROP
现在当我列出我得到的规则时……
# iptables -L -vChain input (policy ACCEPT 0 packets,0 bytes) pkts bytes target prot opt in out source destination 0 0 DROP all -- any any anywhere anywhere state INVALID 9 612 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABliSHED 0 0 ACCEPT all -- lo any anywhere anywhere 0 0 ACCEPT icmp -- any any anywhere anywhere 0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh 0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:@R_419_6822@ 0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:@R_419_6822@s 0 0 DROP all -- any any anywhere anywhere Chain FORWARD (policy DROP 0 packets,0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 5 packets,644 bytes) pkts bytes target prot opt in out source destination
我跑了它,我仍然可以登录,所以这很好.有没有人注意到任何重大事件?
解决方法 在大多数情况下看起来不错.主要的是你应该使用iptables-save和iptables-restore而不是重复运行iptables. iptables-save / restore方法为您提供原子批量更新(如数据库事务),因此您知道没有任何东西可以进入(或者没有进入),因为当网络数据包到达时,您的iptables更改已完成一半.进行此更改还可以转储初始ACCEPT策略,因此它只设置首选策略(最好是DENY),然后设置单个规则(ACCEPTed的例外).除此之外,您可能希望更多地关注ICMP(而不仅仅是允许所有内容).我听说ICMP的某些方面现在非常狡猾.就个人而言,我认为这不值得,因为如此多的诊断和流量管理都依赖于ICMP.
关于womble的“不要使用iptables”评论:我不会说你不应该直接使用iptables(或iptables-save / restore),但我建议你改用FERM.它本质上只是iptables,具有更具表现力和更少重复的语言,以及可变支持.例如,你的iptables命令:
iptables -P input ACCEPT...# Allow sshiptables -A input -p tcp --dport 22 -j ACCEPT# Allow @R_419_6822@diptables -A input -p tcp --dport 80 -j ACCEPT# Allow SSLiptables -A input -p tcp --dport 443 -j ACCEPT
在ferm看起来更像这样:
# allow some incoming TCPchain input { policy ACCEPT; proto tcp dport (ssh @R_419_6822@d @R_419_6822@s) ACCEPT;}
好多了,对吧? 总结
以上是内存溢出为你收集整理的linux – iptables – 好的,**现在**我做得对吗?全部内容,希望文章能够帮你解决linux – iptables – 好的,**现在**我做得对吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)