最近由于病毒肆虐,遂打算换掉原来的windows 2000 server 网关,由于本人曾使用过FreeBSD,感觉这个系统还可以—曾用其作服务器,连续运行几个月都没有出过问题,所以打算用FreeBSD来做安全网关。 在网上查阅了一些资料,花了半天的时间,将基于FreeBSD的网关搞定: 现分享如下: 一网络环境: 通过1M ADSL上网,动态IP,不向外提供服务。内部有几十台电脑,要共享上网。FreeBSD5.3,两块网卡,8139(rl0),对外,同ADSL猫相连,530tx(vr0),对内,同交换机相连。 二系统安装: 至于系统的安装网上有很多资料,在此不细说。 详情请看http://www.xyinfo.ha.cn/netschool/freebsd/index.htm 三编译内核: 加上ipfilter支持,去掉系统默认的 ipfirewall。 #cd /usr/src/sys/i386/conf #cp GENERIC DAFEI #ee DAFEI 修改这一行,红色的部分要和该文件名相同。 ident DAFEI 在末尾加入一下几行: #禁用ipfirewall。 #options IPFIREWALL #options IPFIREWALL_VERBOSE #options IPFIREWALL_VERBOSE_LIMIT=90 #options IPFIREWALL_DEFAULT_TO_ACCEPT #options IPDIVERT
#支持ipfilter options BRIDGE options IPFILTER options ACCEPT_FILTER_DATA options ACCEPT_FILTER_HTTP 由于ipfirewall和ipfilter都运行在内核,二者不能同时共存,所以必须注释掉ipfirewall,其他内核优化选项这里就不细说了。 编译内核: #cd /usr/src #make kernel KERNCONF=DAFEI 编译成功后要重新启动计算机。 四 配置拨号上网: 修改ppp.conf文件 #cd /etc/ppp #cp ppp.conf cpp.conf.bak #ee ppp.conf 修改如下: default: set log Phase Chat LCP IPCP CCP tun command ident user-ppp VERSION (built COMPILATIONDATE) set redial 15 28800 set reconnect 15 28800 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \ \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
adsl: set device PPPoE:rl0 set mru 1492 set mtu 1492 set speed sync enable lqr set lqrperiod 5 set cd 5 set dial set login set timeout 0 set authname YOURUSERNAME used to login set authkey YOURPASSWORD used to login
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0 add default HISADDR enable dns 红色的部分是需要修改的 五 定制防火墙规则: #cd /etc #touch ipf.rules #ee ipf.rules 加入如下内容: block in log quick all with short block in log quick all with ipopts block in log quick all with frag block in log quick all with opt lsrr block in log quick all with opt ssrr
pass out on vr0 all pass in on vr0 all pass out quick on lo0 all pass in quick on lo0 all
block out on rl0 all
pass out quick on rl0 proto tcp from any to any flags S keep state keep frags pass out quick on rl0 proto udp from any to any keep state pass out quick on rl0 proto icmp all keep state
block in quick on rl0 all
由于空间的限制,删去了一些规则。 六 配置地址转换(实现NAT功能): #cd /etc #touch ipnat.rules #ee ipnat.rules 加入如下内容: map rl0 192.168.0.0/16 -> 0/32 proxy port ftp ftp/tcp map rl0 192.168.0.0/24 -> 0/32 portmap tcp/udp 10000:30000 map rl0 192.168.0.0/24 -> 0/32
七 配置rc.conf文件:
#cd /etc #ee rc.conf 修改如下: gateway_enable="YES" hostname="ginifab-gatway.ginifab.com" ifconfig_vr0="inet 192.168.1.1 netmask 255.255.255.0" kern_securelevel="1" kern_securelevel_enable="YES" inetd_enable="YES" linux_enable="NO" sendmail_enable="NO"
keyrate="fast" nisdomainname="NO" sshd_enable="YES" usbd_enable="NO"
ppp_enable="YES" ppp_mode="ddial" ppp_mode="background" ppp_profile="adsl" firewall_enable="NO" firewall_logging_enable="NO" ipfilter_enable="YES" ipnat_enable="YES"
网关为192.168.1.1 八: #reboot now
一切OK。 注意: 编译内核时可根据自己机子的配置优化。本人的这个网关开机后总共使用不到30M内存。 定制防火墙规则可参考网上资料,定制的更加安全,高效。 在实现该网关的过程中,参考了很多网上的资料,本人仅把自己的配置过程写出来。

|