作者: yy123
2005-11-06 21:32:41
作为例子,我们来为一个普通家庭用户创建一个防火墙。假设该家庭用户一般将自己的计算机用于Internet浏览、电子邮件等。我们所要做的就是允许所有必须的连接通过,而禁止所有不相关的连接。以下是防火墙配置文件的内容:
1 *filter
2 :INPUT DROP [0:0]
3 :FORWARD DROP [0:0]
4 :OUTPUT DROP [0:0]
5
6 # 允许本地loopback连接
7 -A INPUT -i lo -j ACCEPT
8
9 # drop非法连接
10 -A INPUT -m state --state INVALID -j DROP
11 -A OUTPUT -m state --state INVALID -j DROP
12 -A FORWARD -m state --state INVALID -j DROP
13
14 # 允许所有已经建立的和相关的连接
15 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
16 -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
17
18 # 允许连接的ISP的DNS服务器
19 -A OUTPUT -d 2.3.4.10 -m state --state NEW -p udp --dport 53 -o eth0 -j ACCEPT
20 -A OUTPUT -d 2.3.4.11 -m state --state NEW -p udp --dport 53 -o eth0 -j ACCEPT
21
22 # 允许向外连接到Web服务器
23 -A OUTPUT -d 0/0 -m state --state NEW -p tcp --dport http -o eth0 -j ACCEPT
24 -A OUTPUT -m state --state NEW -p tcp --dport https -o eth0 -j ACCEPT
25
26 # 允许向外连接到ISP的SMTP和POP3服务器
27 -A OUTPUT -d 2.3.4.5 -m state --state NEW -p tcp --dport smtp -o eth0 -j ACCEPT
28 -A OUTPUT -d 2.3.4.5 -m state --state NEW -p tcp --dport pop3 -o eth0 -j ACCEPT
29
30 # 记录其它试图向外进行的连接
31 -A OUTPUT -o eth0 -j LOG
32 # 缺省情况下是DROP向外的连接
33
34 COMMIT
有关具体命令行的意义参照上文很容易就可以理解,这里就不在赘述。事实上,只要熟悉了某一特定环境下防火墙的设置,我们就可以比较容易地为其它的应用环境创建相应的防火墙。
编后语:
这里,我们介绍了在Linux上使用iptables创立防火墙的基本方法。实际上,由于需求不同,因此并不存在什么完全的防火墙指南。我们只能在了解了基本概念和术语后再自己进行深入的学习。