网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | 防火墙 | IDS/IPS | VPN | PKI | Honeypot | Hacker/Intruder | 黑客技术 | 破解技术 | 加密技术 | 病毒防护 | 木马 | 反垃圾邮件 | 反流氓软件 | 漏洞 | 无线安全 | UNIX | Windows | 安全编程 | 安全软件 | TPM/TCG | 数据恢复 | 企业信息安全 | 个人信息安全
 当前位置: Home > 防火墙 > 文章  
高性能LINUX双效防火墙HOWTO
文章来源: 杭州小红马工作室 文章作者: kinglee 发布时间: 2004-01-06   字体: [ ]
 
By kinglee

杭州小红马工作室 kinglee
kinglee@hzcnc.com

系统功能说明:

  包过滤和WEB代理双效合一。由iptables 实现包的过滤,由LINUX下大名鼎鼎的squid结合NAT来实现透明WEB代理。SQUID代理的性能本身已经是代理服务器中的佼佼者,本系统将其性能发挥的极至:通过ramdisk技术,让SQUID把网页cahce到内存中,这样,你所访问的网页,除了第一次需要到网络上取,以后都将来自内存!下面介绍如何用redhat 7.2来实现的方法和步骤。

(1)选择一台比较稳定的计算机,装上两块网卡,256或512M内存,硬盘10G(注意:第一块网卡接内网,第二块网卡接外网。)
(2)安装red hat 7.2,安装时选择服务器模式,自动分区
(3)大概在10-15分中后系统安装完毕,重启后进入系统,开始配置系统

1、开启包转发

  编辑/etc/sysctl.conf,将net.ipv4.ip_forward=0 该为net.ipv4.ip_forward=1,保存修改。其目的是允许LINUX内核做IP包的转发:允许IP数据包从一个网络接口穿越到另一个网络接口,只有这样,系统才具有充当包过滤防火墙的条件。

2、激活RamDisk

  修改/etc/grub.conf


#boot=/dev/sda
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.7-10)
        root (hd0,0)
        kernel /vmlinuz-2.4.7-10 ro root=/dev/sda6   ramdisk=268435
        initrd /initrd-2.4.7-10.img

  其中ramdisk=268435 是我们要添加的内容,目的是告诉系统默认的 ramdisk的大小是268435k,也就是256M。注意千万不可以直接写256M,这样系统是不认识的,必须要换成K才行!(摸索了好几个月的心得!),这样设好,重新启动后就系统就回自动生成一个256M的虚拟盘了。当然,你要根据自己的内存大小来设置这个参数,如果不运行XWINDOWS,设你总内存的一半都没问题,因为LINUX系统本身并不需要很多内存的。

3、设置squid参数

  编辑/etc/squid/squid.conf,在末尾加入以下条目:


httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
http_access allow all
cache_dir ufs /squid 256 16 256

  前面四条参数使squid提供透明代理提供基础。“http_access allow all”表示允许所有的客户机器都可以访问代理;这里特别强调的是最后一条 “cache_dir ufs /squid 256 16 256”,

  squid默认的cache_dir是“/var/spool/squid”,我们因为要让squid将内容cache到内存中,所以这里先改成/squid,接下来要将ramdisk影射到/squid目录中。

4、建立ramdisk。用下面的两条命令来完成:


(1)mkdir /squid           建立目录“/squid”
(2)mkfs /dev/ramdisk      创建文件系统
(3)mount /dev/ramdisk /squid   将ramdisk 挂载到/squid目录。

  由于ramdisk在每次重启后会消失,因此,为了让系统启动时自动建立好,我们可以建立一个自动装载ramdisk的批命令:


mkfs /dev/ramdisk
mount /dev/ramdisk /squid

  将这两条命令写到一个文件中,我们暂且用myautoexec.bat作为文件名,为了方便起见,我们建立/admin目录,然后将myautoexec.bat文件保存在/admin下,并加给可执行的权限:chmod +x myautoexec.bat

  但这样系统启动时并不会被调用,所以我们还要做一件事:编辑/etc/rc.local 文件,在文件末尾插入一行:/admin/myautoexec.bat,这样,系统就会自动调用myautoexec.bat了。

5、初始化squid。

  还记得“cache_dir ufs /squid 256 16 256”这个参数吗?初始化过程实际上就是squid在指定的cache_dir中建立指定的一级目录(这里是16),然后在每个一级目录中建立256个二级目录。使用的命令是:“squid –z ”。但现在这时输入命令系统会报告出错,因为/squid现在的属主是root, squid 没有权限操作root的文件,所以还要先把/squid目录指派给squid用户,用“chown squid.squid /squid”。再一次运行“squid –z ”,不到一秒钟时间就可完成。如果这个过程是在磁盘上而不是在ramdisk上,一般要工作几十秒钟。

  同样,这步的设置也要把


chown squid.squid /squid
squid –z

  两条命令写到myautoexec.bat中,最后加上一条“squid”,就是启动squid服务进程。到这里,squid的设置全部完成。

6、设置NAT和防火墙规则。

  为了方便起见,建立文件/admin/myfirwall,将规则都写到文件中:


#------初始化部分
iptables -F
iptables -t nat -F
modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
#——初始化结束
#-START NAT<<<<<让地址为10.27.0.0/16的内部计算机可以伪装上因特网。
iptables -t nat -A POSTROUTING -o eth1 -s 10.3.37.0/24  -j MASQUERADE
#>>>>>end NAT
#端口转换,将所有发到外网的请求端口为80的都转到3128去,让squid来处理,这一
#--条是透明代理的关键<<<<<<
iptables   -t nat -A  PREROUTING -i eth0 -d ! 10.27.0.0/16  -p tcp  -m tcp \
 --dport 80 -j REDIRECT --to-ports 3128
#>>>>>>>end 端口转换
#防火墙规则<<<<<<< 这里要根据你的要求来定了
iptables -A INPUT -i eth1 -s  0.0.0.0/0 -p ICMP -j DROP
iptables –A INPUT –i eth1 –s 0.0.0.0/0 –p TCP –port ! 80 –j DROP
#以上两条分别是将所有从外网进来的ping包都统统丢弃,将所有由外网发起的非80端口
#的请求都统统丢弃,意思就是只不允许从外网向内网发ping ,只允许外网访问内网的
#HTTP服务。完整的防火墙规则要根据你的网络安全要求来制定,这里只做参考。

  说明:所有以#开头的行表示说明,不用写入文件,保存为/admin/myfirewall,并用“chmod +x /admin/myfirewall”使其可以执行。编辑/admin/myautoexec.bat,加入“/admin/myfirewall”在最后一行。

  到此为止,我们的好性能防火墙全部配置完成,运行reboot 重启后,可以工作了。

  网友评论

网友:fud 发表时间:2004-01-07 14:09:29
 
为什么不考虑用shm fs 呢?ram fs占用固定大小的内存,而shm fs 会根据你使用情况动态改变大小,效率应该更高些。当然,如果内存太多,浪费点也无所谓啦 hehe
 
网友:tmpfs 发表时间:2004-01-10 22:30:49
 
是,用tmpfs(shmfs)可能会更好些
 
网友:kinglee 发表时间:2004-01-12 17:15:39
 
采用ramdisk是因为考虑到SQUID的CACHE目录的需要,
 cache_dir ufs /squid 256 16 256 ,因为我们单位计算机比较多,目前有近300台计算机,四个网络教室和一个电子阅览室,WEB访问量非常大.
不过还是非常感谢两位网友的建议,谢谢.
 
网友:xiaohai 发表时间:2004-01-16 14:05:14
 
效果如何,应当有对比数据。否则一切想当然,也不好。
 
网友:MouseAgenT 发表时间:2004-01-18 17:34:46
 
大家好...我是LINUX的新鸟..我不理解的是:
当内存中的网页在实际页面上已经更新的时候这样人家访问的是不是会是没有更新过的页面?甚至有可能是几天前的网页.这样的话和脱机浏览有什么区别?
 
网友:shangxd 发表时间:2004-01-29 14:47:49
 
脱机后系统不会再去连接目标网站,直接调用本地硬盘中的内容. 缓存是不一样的,如果将网页保存在网关的缓存中,客户每次访问目标网站还是会去请求连接,如果碰到图片的话如果网关的缓存中有这个图片就不用再从目标网站下载了,从而加快上网速度,一旦网站更新,那么图片的文件名也会更改,在缓存中找不到的时候就从目标网站下载。也会发生网站更新了,但是图片和其他CSS或脚本的文件名没有更改,这时会发生一些奇怪的问题,这时候就需要将缓存中的内容清空一下了。
 
网友:路过 发表时间:2004-02-12 01:53:51
 
>也会发生网站更新了,但是图片和其他CSS或脚本的文件名没
>有更改

我认为名称不变、时间戳变,这才是绝大部分情况。烂IE即便没有网关缓存,也会不时出现更新不正确,还需清掉本地缓存才可。

--
※ 链接: http://www.linuxaid.com.cn/articles/4/4/441672019.shtml

 
推荐文章
·怎么样给企业级防火墙“体检”
·构建Linux系统下U盘路由器、防火
·安全基础:防火墙功能指标详解
·没有防火墙是可行的 但是并不理
·2005年度千兆防火墙公开比较评测
·没有防火墙的安全:明智还是愚蠢?
·使用防火墙封阻应用攻击的八项技
·防火墙与路由器的安全性比较
·防火牆安全管理
·netfilter: Linux 防火墙在内核
·再谈防火墙及防火墙的渗透
·一种新的穿透防火墙的数据传输技
 
 
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
热点文章
·网络安全保护神——免费
·浴火坚“墙”——12款防
·防火墙技术综述
·教你命令行下配置Window
·2005年度千兆防火墙公开
·构建Linux系统下U盘路由
·Windows Vista系统防火
·Win XP SP2自带防火墙设
相关分类
相关文章
·在Linux代理服务器上设
·防火墙入门: 什么是防火
·维基百科: 防火墙 (网络
·再谈防火墙及防火墙的渗
·netfilter: Linux 防火
·防火牆安全管理
·理解防火墙及防火墙实例
·理解防火墙及防火墙实例
更多...
 
 

Copyright(c) 2001-2008 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统
$Id: article_article.html,v 1.3 2007/02/10 12:00:37 yjs Exp $