LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1587|回复: 4

请教shorewall防火墙“内、外网定义”的小问题?

[复制链接]
发表于 2006-7-18 00:37:13 | 显示全部楼层 |阅读模式
请教:
   我的FC5只有一块网卡即eth0,通过宽带路由器上网,拨号由宽带路由器(开启了dhcp)完成,fc5上安装了webmin和shorewall,shorewall里面只有eth0、防火墙自身,象这种情况怎么定义内、外网呢?勾勾了,只找到或三网卡,或有ppp0的规则。请高手们不吝赐教!谢谢!
 楼主| 发表于 2006-7-21 23:31:05 | 显示全部楼层
转自:银杏叶论坛 » LINUX社区 » shorewall防火墙配置

在单机Linux下,单网卡接口的配置,这个是最简单。也最通俗的啦。本人参考其配置向导,算是对其向导的浓缩翻译和增加自己的理解吧。

首先第一步安装这个防火墙,如果是Debian系统,那么只接apt-get install shorewall就可以了,就自动帮你装好了。如果是别的系统,那你到http://www.shorewall.net/上下 ... RPM包来安装。

安装完毕后,配置文件都在/etc/shorewall下面,但是Debian的例外,在它的向导里头也进行了说明,如果是Debian系统,那么在 /etc/shorewall下面的配置文件是不齐全的,需要把/usr/share/doc/shorewall/default-config相关文件复制过来(其实你自己写也可以的,我最先在8号机上配置就是自己写的)。

接下来了解几个小概念,首先你的内核要2.4或者更高,因为这个防火墙是基于IPTABLES的,不是基于IPCHAINS的,应该说是IPTABLES 的一个更高层面的配置工具,不过要完全学习它,其强度应该不会比学IPTABLES配置来的简单(我个人感受)。然后你应该了解区域概念,在这里主要有三个,一个是DMZ,一个是Net,还有一个就是防火墙自身的区域。什么是DMZ,上过防火墙课程的同学应该不陌生,如果你现在不明白的话,找本防火墙的书籍自己看一下就明白了。Net在用来表示外部网络,而防火墙自身区域就是表示防火墙自己罗,用于保护你的计算机,相当于你的门卫,要和你的计算机打交到,先和这个门卫过招。

现在开始看看几个关键的必须使用到的配置文件,先看第一个文件,名字叫zones就是用来定义区域的,这个文件你可以从 /usr/share/doc/shorewall/examples/one-interface里头拷贝过去,如果你从这里拷贝过去的话,那你不用再定义区域了,保护单机需要用到的区域它已经帮你定义好了。用命令:grep -v "#" zones查看一下文件配置,配置如下:
fw      firewall
net     ipv4
fw区域就是指向防火墙自身,net就是外部网络了。
具体的说明在zones配置文件里头的#行都有说明(不要跟我说你英文看不懂)。

接着看第二个配置文件,名字叫policy,同样是在/usr/share/doc/shorewall/examples/one-interface拷贝过去,它的默认配置也已经帮你填写好了。配置如下:
#SOURCE         DEST            POLICY          LOG LEVEL       LIMIT:BURST
$FW                net               ACCEPT
net                 all                 DROP             info
all                   all                 REJECT          info
第一行说明我们访问外部网络是被允许的;第二行外部网络访问我们将丢弃(All是ShoreWall的保留字,这是它自己定义好的区域),并且日志记录为 Info这个级别(关于日志记录级别在/etc/shorewall下面的shorewall.conf里头配置);第三行拒绝所有其它连接,同样设定日志记录为Info级别。最后一列用来TCP连接的速率,在这里不进行限制。这样的策略配置将导致所有外部对我们的访问全部被阻止,如果你有开什么服务需要让外部访问,那么请在下面的rules配置文件中填写相关服务是被允许访问的。

接着看第三个配置文件,名字叫interfaces。这个配置文件用来指明哪个网卡接口被shorewall所使用,因为我们是单机防护,所以你在/etc/shorewall下面自己建立个interfaces文件,进行如下填写:
fw    eth0     222.19.211.255
意思是将防火墙作用在eth0上,然后填写广播地址。
到此为止,你就可以用命令启用shorewall。打入命令shorewall start启动。

当然了,根据如上配置,你所建立的任何服务别人将无法访问,如果想让别人访问你的服务,怎么办呢?那就需要rules这个配置文件,我以ssh服务为例,进行说明
在/etc/shorewall下面建立rules配置文件,填写如下:
ACCEPT          all            fw                 tcp              22          - -
这样就OK了。如果还有其它的服务需要让人家访问,填写上相应的端口就可以了。这条语句意思是说,从外部网络访问我们的ssh服务是被允许的,后面两个横杠是其它两个配置选项,其中一个同样是连接速率的限制,令一个好像是日志记录吧(记不太清楚了,呵呵).

接下来shorewall restart 就可以了。当然了,如果你的防火墙配置规则有错误,导致一些服务无法访问的话,即使你停止了shorewall,也没有用,因为它已经将规则添加到 iptables的相关链中,这个时候需要用命令shorewall clear将所有规则清除掉,然后重新配置,再启动一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-21 23:35:20 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2006-9-11 15:36:18 | 显示全部楼层
shorewall里面要先定义zone,哪个网络设备属于哪个zone,一般分为:net,firwall,local三个zone,pppoe肯定属于net这个zone了,不过单网卡的话就没有local这个zone了(zone的名称和版本有关),应该明白了吧
回复 支持 反对

使用道具 举报

发表于 2007-7-8 12:03:40 | 显示全部楼层
感谢aoe提供这么清楚明白的说明....
珍藏,拜谢....
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表