介绍:
这篇文章是本人原创,向读者展示了如何一步一步建立静态防火墙来保护您的电脑,同时在每一步中,我力图向读者讲述清楚原理。在这篇教程之后,您将能理解到防火墙内在过滤机制,同时也能自己动手创建符合自己需要的防火墙。
版权任何,转载请注明来自
www.linuxsir.org
并写明作者
1、iptables介绍
iptables是复杂的,他集成到linux内核中。用户通过iptables,能够对进出您的电脑的数据包进行过滤。通过iptables命令配置
您的规则,来把守您的电脑网络──哪些数据允许通过,哪些不能通过,哪些通过的数据进行记录(log)。接下来,我将告诉您如何配置自己的规则,从现在
就开始吧。
2、初始化工作
在shell提示符 # 下打入
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
以上每一个命令都有他确切的含义。一般配置您的iptables之前,首先要清除任何以前配置的规则,我们就把他叫做初始化好了。虽然很多情况下他什么也不做,但是保险起见,不妨小心一点吧! 假如您用的是redhat 或fedora,那么您有更简单的办法
service iptables stop
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
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



