快捷搜索:   服务器  安全  linux 安全  MYSQL  dedecms

用iptable配置先禁止再允许的静态防火墙

 1、iptables介绍

iptables是复杂的,它集成到linux内核中.用户通过iptables,可以对进出你的计算机的数据包进行过 滤.通过iptables命令设置你的规则,来把守你的计算机网络哪些数据允许通过,哪些不能通过,哪些通过的数据进行记录(log).接下来,我将告诉 你如何设置自己的规则,从现在就开始吧. 2、初始化工作 在shell提示符 # 下打入 iptables -F iptables -X iptables -t nat -F iptables -t nat -X 以上每一个命令都有它确切的含义.一般设置你的iptables之前,首先要清除所有以前设置的规则,我们就把它叫做初始化好了.虽然很多情况下它什么也不做,但是保险起见,不妨小心一点吧! 重启服务也有相同的效果. /etc/init.d/iptables stop /etc/init.d/iptables start 3、开始设置规则: 接下下开始设置你的规则了 iptables -P INPUT DROP 这 一条命令将会为你构建一个非常"安全"的防火墙,我很难想象有哪个hacker能攻破这样的机器,因为它将所有从网络进入你机器的数据丢弃(drop) 了.这当然是安全过头了,此时你的机器将相当于没有网络.如果你ping localhost,你就会发现屏幕一直停在那里,因为ping收不到任何回应. 4 、添加规则 接着上文继续输入命令: iptables -A INPUT -i ! ppp0 -j ACCEPT 这条规则的意思是:接受所有的,来源不是网络接口ppp0的数据. 我们假设你有两个网络接口,eth0连接局域网,loop是回环网(localhost).ppp0是一般的adsl上网的internet网络接口,如果你不是这种上网方式,那则有可能是eth1.在此我假设你是adsl上网,你的internet接口是ppp0 此时你即允许了局域网的访问,你也可以访问localhost 此时再输入命令 ping localhost,结果还会和刚才一样吗? 到此我们还不能访问www,也不能mail,接着看吧. 5、我想访问www iptables -A INPUT -i ppp0 -p tcp -sport 80 -j ACCEPT 允许来自网络接口ppp0(internet接口),并且来源端口是80的数据进入你的计算机. 80端口正是www服务所使用的端口. 好了,现在可以看网页了.但是,你能看到吗? 如果你在浏览器的地址中输入www.baidu.com,能看到网页吗? 你得到的结果一定是:找不到主机www.baidu.com 但是,如果你再输入220.181.27.5,你仍然能够访问baidu的网页. 为什么?如果你了解dns的话就一定知道原因了. 因 为如果你打入www.baidu.com,你的电脑无法取得www.baidu.com这个名称所能应的ip地址220.181.27.5.如果你确实记 得这个ip,那么你仍然能够访问www,你当然可以只用ip来访问www,如果你想挑战你的记忆的话^ _ ^,当然,我们要打开DNS. 6、打开dns端口 打开你的dns端口,输入如下命令: iptables -A INPUT -i ppp0 -p udp -sport 53 -j ACCEPT 这条命令的含义是,接受所有来自网络接口ppp0,upd协议的53端口的数据.53也就是著名的dns端口. 此时测试一下,你能通过主机名称访问www吗?你能通过ip访问www吗? 当然,都可以! 7、查看防火墙 此时可以查看你的防火墙了 iptables -L 如果你只想访问www,那么就可以到此为止,你将只能访问www了. 不过先别急,将上面讲的内容总结一下,写成一个脚本. #!/bin/bash # This is a script # Edit by liwei # establish static firewall iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -P INPUT DROP iptables -A INPUT -i ! ppp0 -j ACCEPT iptables -A INPUT -i ppp0 -p tcp --sport 80 -j ACCEPT iptables -A INPUT -i ppp0 -p udp --sport 53 -j ACCEPT 8、 复杂吗?到此iptables可以按你的要求进行包过滤了.你可以再设定一些端口,允许你的机器访问这些端口.这样有可能,你不能访问QQ,也可能不能打 网络游戏,是好是坏,还是要看你自己而定了.顺便说一下,QQ这个东西还真是不好控制,用户与服务器连接使用的好像是8888端口,而QQ上好友互发消息 使用的又是udp的4444端口(具体是不是4444还不太清楚).而且QQ还可以使用www的80端口进行登录并发消息,看来学无止境,你真的想把这个 家伙控制住还不容易呢?还是进入我们的正题吧. 如果你的机器是服务器,怎么办? 9、如果不巧你的机器是服务器,并且要提供www服务.显然,以上的脚本就不能符合我们的要求了.但只要你撑握了规则,稍作修改同样也能很好的工作.在最后面加上一句 iptables -A INPUT -i ppp0 -p tcp --dport 80 -j ACCEPT 这 一句也就是将自己机器上的80端口对外开放了,这样internet上的其他人就能访问你的www了.当然,你的www服务器得工作才行.如果你的机器同 时是smtp和pop3服务器,同样的再加上两条语句,将--dport后面的80改成25和110就行了.如果你还有一个ftp服务器,呵呵,如果你要 打开100个端口呢…… 我们的工作好像是重复性的打入类似的语句,你可能自己也想到了,我可以用一个循环语句来完成,对,此处可以有效的利用shell脚本的功能,也让你体验到了shell脚本语言的威力.看下文: 10、用脚本简化你的工作,阅读下面的脚本 #!/bin/bash # This is a script # Edit by liwei # establish a static firewall # define const here Open_ports="80 25 110 10" # 自己机器对外开放的端口 Allow_ports="53 80 20 21" # internet的数据可以进入自己机器的端口 #init iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -P INPUT DROP #we can use another method to instead it iptables -A INPUT -i ! ppp0 -j ACCEPT # define ruler so that some data can come in.
顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论