LinuxSir.cn,穿越时空的Linuxsir!

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

SLK10.1下adsl拨号上网防火墙搭建实验

[复制链接]
发表于 2005-5-29 09:45:56 | 显示全部楼层 |阅读模式
用过redhat和mdk之类linux发型版的朋友都会感觉slk下的防火墙设置比较特殊。

具体来说slk提供的官方解决方案就是在/etc/rc.d/目录下建立一个rc.firewall名称的脚本,当
rc.firewall是可执行的时候,系统启动过程中会自动调用,详细的内容本版的一篇关于slk启动
脚本的精华贴有介绍。

由于自己对IPTABLES非常感冒 :!! ,所以就一直没有开启系统的防火墙,居然用了几个月也很安全。
单不开防火墙就算是不跑服务也是有很多安全隐患,所以我一直留心slk下的防火墙解决方案。

近期看过版内的高手们写的一些关于IPTABLES应用的文章,都是要自行写防火墙规则,然后在
rc.local中添加执行语句,感觉始终不是一种优雅的解决方案,而且写防火墙规则对于我这样的
新手还是难度偏高。

凑巧的是论坛里的网络安全版有位朋友发了关于firestarter的一篇文章,看了之后很是诱惑,就决
定在自己的SLK系统上试试看,实验结果感觉比较满意。具体过程如下:

一、下载安装所需的软件包

http://www.linuxpackages.net/网站上就可以搜索到编译好的安装包,是
firestarter官方的的最新版(1.03)

二、安装firestarter-1.0.3-i486-1.tgz

三、使用root运行firestarter,按照向导建立防火墙规则。

其他的选项尽量选择严厉的规则。
为了使用p2p工具我为BT和ED2K下载开放了端口。
具体的设置可以看附件图片。
这样生成了放火墙脚本在/etc/firestarter目录下。

四、使开机自动adsl拨号后就启动放火墙。

firestarter官方对于防火墙开机自动运行作了说明,分大体4种情况:
1、对于redhat系列的linux系统,在安装完编译好的安装包之后,firestarter就注册为系统服务,
不用担心系统启动时候防火墙启动的问题。
2、对于gentoo和slk之类的linux系统(BSD)风格的,安装完毕之后并不能生成系统服务。
3、对于自行编译安装的用户也无法自动生成系统服务。
4、对于使用拨号软件进行拨号的用户,需要依赖使用何种拨号软件来设置拨号后的执行脚本来决
定防火墙的开启,把拨号程序设置好就可以保证防火墙的及时启用,单也不是所有的拨号软件都
适用。

另外需要特殊说明的一点:一旦防火墙启动了(可以使用namp或者iptables -L来检查),
firestarter的图形前端是否在系统上运行都无所谓。也就是说firestarter图形前端是起到了防火墙
规则配置向导和防火墙状态监测等作用,防火墙的核心还是IPTABLES,并不依赖于firestarter。对
于我们一般的用户而言,最实用的还是这个软件生成的防火墙脚本,脚本的目录也在/etc/firestarter
目录下,主要执行了firestarter.sh来调用目录下不同的防火墙规则文件。

再说我的具体上网环境是adsl拨号,把adsl-start添加在rc.local脚本中以达到开机就联网的效果。
由于上面生成的防火墙脚本是建立在ppp0的基础上的(eth0处于被占用的状态,设置也没有意
义),所以如果仿照slk的传统作法建立etc/rc.d/rc.firewall的脚本(我是很不规范的把
firestarter.sh作了一个硬链接到/etc/rc.d/rc.firewall),由于slk启动脚本先后执行的顺序决定了
rc.firewall执行先于rc.local,所以并不能达到开机防火墙自动运行的效果。

当然如果上网环境是局域网联入外网(无论动态还是静态IP),并且刚才建立的一系列防火墙脚本是
针对eth0(先假设只有1块网卡),并且eth0是开机就激活的状态,那么firestarter.sh作了一个硬
链接到/etc/rc.d/rc.firewall完全可以达到开机自动执行防火墙规则的效果。

为了保证防火墙的脚本被执行,还是用了愚笨的办法,修改rc.local文件,在adsl-start之后追加防
火墙脚本执行的命令。由于防火墙的规则是经常可能修改的,而且有时侯为了控制防火墙的状态要
进行一些重启和停止、锁定等操作,为了方便起见,我把firestarter.sh作了一个硬链接到
/usr/sbin/firewall,这样root用户只要执行firewall start/stop/lock/restart就可以控制放火墙的运
行状态,当然sudo用户也是如此,只要shell变量环境支持。具体命令:
#ln /etc/firestarter/firestarter.sh /usr/sbin/firewall
#echo /usr/sbin/firewall start >>/etc/rc.d/rc.local

五、另外的一种防火墙开机启动的方法

也是firestarter官方网站上推荐的一种解决自行编译用户无法使防火墙脚本开机自动运行的方法。
1、
先编辑sudoer文件,在文件末尾添加:
username ALL= NOPASSWD: /usr/bin/firestarter
#username为要实用放火墙的非root用户名
2、
1)gnome用户在开始--桌面--首选项--会话中添加一个新的启动程序
sudo firestarter --start-hidden
2)kde用户使用以下命令:
$echo -e '#'\!'/bin/sh\nsudo firestarter --start-hidden' > ~/.kde/Autostart/firestarter
$chmod a+x ~/.kde/Autostart/firestarter
这样用户进入图形界面后就会自动运行firestarter图形前端程序,自然就保证了防火墙的运行。
前提是在firestarter图形界面配置项里把相关的选项设定好。

六、到http://scan.sygatetech.com/测试一下防火墙的效果吧,不错吧:ask

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2005-5-29 09:47:23 | 显示全部楼层
再贴几张图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-29 09:48:28 | 显示全部楼层
还有一些图片:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2005-5-29 11:46:30 | 显示全部楼层
可以在/etc/ppp/ip-up调用firewall脚本。
回复 支持 反对

使用道具 举报

发表于 2005-5-29 13:56:59 | 显示全部楼层
很好,支持。
不知道这个软件要是没有x server可以用吗?
我服务器从来不装x server的,只有命令行界面
回复 支持 反对

使用道具 举报

发表于 2005-5-29 14:06:34 | 显示全部楼层
不能,没有X,又不想自己写脚本倒可以考虑Shorewall。
回复 支持 反对

使用道具 举报

发表于 2005-5-29 22:50:35 | 显示全部楼层
多谢,我去看看关于shorewall资料
回复 支持 反对

使用道具 举报

发表于 2006-10-11 15:24:14 | 显示全部楼层
我也看了官方的文档,按照官方所说的那个办法,设置好防火墙后,修改/etc/sudoers,然后在gnome会话的启动项中添加上。但开机后依然启动不了。除非我手动启动,输入密码,然后注销,再登录,这时才能起来。但一重启又不行了。
看起来修改了sudoers似乎没有作用。大家知道怎么回事么?
我用的是Ubuntu6.06
回复 支持 反对

使用道具 举报

发表于 2006-10-11 18:55:56 | 显示全部楼层
firestar不错呵~~~非常值得用下~~顶下
回复 支持 反对

使用道具 举报

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

本版积分规则

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