Squid是Linux下最为流行的代理服务器软件,它功能强大,支持对HTTP、FTP、Gopher、SSL、WAIS等协议的代理; 设置简单,只需对配置文件稍稍改动就可使代理服务器运转起来。此外,Squid具有页面缓存功能,它接受用户的下载申请,并自动处理所下载的数据。
前期准备
Squid对硬件的要求是: 内存不应小于128M,硬盘转速越快越好,最好使用服务器专用SCSI硬盘,对CPU的要求不高,400MHz以上即可。笔者所管理的代理服务器是 Inter2150,安装了Red Hat Linux 7.2,安装时就带有Squid。有两块网卡,一块eth0配外部地址(比如211.88.99.66),一块eth1配内网地址(比如 192.168.5.1)。如果安装了Gnome或其他图形界面,就可以在netconfig中给两块网卡配置IP地址,不然的话,可在 /etc/sysconfig/network-script路径下更改文件ifcfg-eth0和ifcfg-eth1。
首先编辑ifcfg-eht0,有以下几项:
DEVICE=eth0 (表示用哪块网卡)
IPADDR=211.88.99.66 (设置该网卡的IP地址)
NETMASK=255.255.255.252 (设置子网掩码)
同样编辑ifcfg-eth1,然后运行命令network restart就可以使配置生效了。对eth0、eth1进行配置后,可以用ifconfig命令来查看是不是配置成功。
如果服务器只有一张网卡,也不用担心,Linux可以在一块网卡上绑定多个IP地址。在图形界面下配置很简单,不赘述。如果在文本状态下配置,可以将ifcfg-eth0复制并命名为ifcfg-eth0:1,把它完全当成两块网卡来配就可以了。
Squid的安装
1. 安装Linux
安装Linux在硬盘分区时要注意,最好不要让系统自己分区,而是手动分区。通常,在Linux系统中有且仅有一个交换分区(在文件系统形式中选择 Linux swap),它用做虚拟内存,建议将交换分区的大小设置为内存的两倍。当硬盘的大小超过了8G,要再建立一个128M(稍稍大一点,不会出错)的boot 分区,这是为了避免将系统内核文件放到1024磁道以外,如果将boot作为root分区的一个子目录,内核文件就会安装在root分区的任何地方。因为要用做代理服务器,建议再分一个分区“var”,作为Squid的缓冲区,所以根据磁盘大小尽量分配大一点,最后将硬盘的剩余空间全部分给root分区。
2. 安装Squid
新手安装Squid,建议在安装Linux时就选中Squid,它并不是默认选中项,而且也不在选择的大类中,要在详细列表中查找。如果没有安装,又不想重装系统,可以从www.squid-cache.org 下载Squid软件。
Squid代理服务器的设置
安装好Squid后几乎就可以用了,用编辑器打开/etc/squid/squid.conf文件(以root登录),Squid的配置文件共有125个配置项,但是一般来说,只要修改几个配置项即可。找到“http_access deny all”并改为“http_access allow all”令所有的电脑都能通过代理服务访问互联网资源。其实只要修改该项,Squid服务就可以启动了。
为了更好地控制代理服务器的行为,还有几个可配置项需要考虑:
1. cache_mem: 设置代理服务使用的内存大小,一般推荐为物理内存的三分之一。
2. cache_dir:设定缓存的位置、大小。一般格式如下:
cache_dir /var/spool/squid/cache 100 16 256
cache_dir指定cache目录的路径,默认为/var/spool/squid/cache。
/var/spool/squid/cache代表缓存的位置,使用squid -z指令会在这个目录下建立存储交换文件(swap files)的目录。100表示缓存最大为100M,16和256代表一级和二级目录数。实际使用时,100M是不够的,如果硬盘够大,可以增加存储空间,比如:cache_dir /var/spool/squid/cache 2000 16 256。
3. http_port:代理服务使用的端口号,默认为3128,可以使用其他的端口,注意将前面的注释符号“#”去掉。另外,使用端口不能和其他的服务重复,如果使用1024以下的端口,Squid必须以root身份运行。
4. maximum_object_size: 指定Squid可以接收的最大对象的大小。Squid缺省值为4M,可以根据自己的需要进行设定。
启动Squid
Squid可以设置为自动启动。运行命令setup,在System services选项中选中Squid。设置后每次重新开机,都会自动执行Squid。
如果是第一次启动,要建立/var/spool/squid下的暂存资料目录,先输入squid -z,再启动Squid(直接运行Squid即可)。
启动Squid后,在另一台Windows电脑上(以Internet Explorer 5.0为例)运行IE,单击“工具”,接着单击“Internet选项”,再单击“连接”选项卡,选择“局域网设置”。在“局域网设置”窗口中的“地址” 处填上Squid服务器的IP地址,在“端口”处填上“3218”(Squid软件默认代理的端口号),确定后退出。接下来,随意浏览一些网站检查 Squid的运行情况,也可以查看logs下的access.log和cache.log,看看代理是否运行正常。
代理服务器的安全
代理服务器是一个单位对外的门户,安全至关重要。因此,应该采取必要的防护手段。
1. 防火墙的配置
为了保证代理服务器的安全,最好加上防火墙,可以用IPchains或IPtable。
要使用ftp代理,还必须载入相关模块。可以使用以下命令:
modprobe ip_comtrack_ftp
modprobe命令会自动载入指定模块及其相关模块。iptables_filter模块会在运行时自动载入。
下面用IPtables一步一步地来建立包过滤防火墙,需要说明的是,在这个例子中,主要是对内部的各种服务器提供保护。
给IPtables规则设置一个存储路径: iptables -restroe /etc/sysconfig/iptables。
现在开始考虑规则。在这里需要注意的是,服务器/客户机交互是双向的,所以不仅仅要设置数据包出去的规则,还要设置数据包返回的规则,下面先建立针对来自Internet数据包的过滤规则。
1. 首先禁止转发任何包,然后再一步步设置允许通过的包。
2. 先允许源为内网的所有端口的TCP包。
3. 再允许目的为内部网(192.168.5.0/24)的FTP数据包。
4. 允许目的为内网的来自Internet的非连接请求TCP包。
5. 最后一条接收所有UDP包,主要是针对oicq等使用UDP的服务。
6. icmp包通常用于网络测试等,故允许所有的icmp包通过。但是黑客常常采用icmp进行攻击,如“ping of death”等,所以我们采用limit匹配扩展加以限制。对不管来自哪里的icmp包都进行限制,允许每秒通过一个包,该限制触发的条件是10个包。
不需要允许WWW服务的包,所有WWW服务由Squid代理。
iptables -P FORWARD DROP
iptables -A FORWARD -p tcp -s 198.168.5.2 -i eth0 -j ACCEPT
iptables -A FORWARD -p tcp -s 0/0 --sport ftp-data -d 198.168.5.0/24 -i eth0 -j ACCEPT
iptables -A FORWARD -p tcp -d 198.168.80.0/24 ! -syn -i eth0 -j ACCEPT
iptables -A FORWARD -p udp -d 198.168.80.0/24 -i eth0 -j ACCEPT
iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
说明:
-A加入(append) 一个新规则到一个链 (-A)的最后。(用-I可以插入一条规则,插入位置序号写在Forward后,-D在链内某个位置删除(delete) 一条规则,-R在链内某个位置替换(replace) 一条规则 )。
Forward链、Input链和Output链的区别如下:
1. 如果数据包的目的地址是本机,则系统将数据包送往Input链。如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢掉。
2. 如果数据包的目的地址不是本机,也就是说,这个包将被转发,则系统将数据包送往Forward链。如果通过规则检查,则该包被发给相应的本地进程处理; 如果没有通过规则检查,系统就会将这个包丢掉。
3. 如果数据包是由本地系统进程产生的,则系统将其送往Output链。如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢掉。
-s指定源地址,-d指定目的地址。
-p 指定协议,比如-p tcp。
-i或-o指定网络接口。需要注意的是,对于Input链来说,只可能有-i,也即只会有进入的包;同理,对于Output链来说,只可能有-o,也即只会有出去的包。只有Forward链既可以有-i的网络接口,也可以有-o的网络接口。
Drop表示符合规则就丢弃包,Accept相反。
然后,执行命令IPtables -L,可以查看已经建立的规则,并用命令IPtables -save将规则写入文件。
通过以上步骤,我们建立了一个相对完整的防火墙,只对外开放了有限的几个端口,同时提供了客户对Internet的无缝访问。
2. 其他建议
为了安全,最好不要在一台机器上运行太多服务。为了方便调试,一般都会提供telnet和ftp服务,但这往往是安全隐患,可以在 /etc/host.allow和/etc/host.deny中进行限制。比如:局域网的内网网段为: 192.168.0.0,可以在hosts.allow文件中加入一行: telnet:192.168.0.0/255.255.0.0。在hosts.deny中加入一行:all:all。因为是先执行 host.allow,再执行host.deny。所以上面就只打开了内网网段的telnet服务,而对外关闭。如果想打开其他服务,可以再加。如果还想加上机器名,可以在IP后加上“@abc”(abc代表某机器名)。想关闭所有服务、所有IP、所有机器名,可以在host.deny中写上“all: all@all”。配置好了运行命令xinetd.d,配置就生效了。如果想远程访问代理服务器,最好用SSH(因为telnet是明码传送,所以很不安全,SSH可以理解为加密的telnet),它的配置和应用比较简单,不赘述。
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
·代理服务器技术专题 (425篇文章)
·FTP服务器 (5104篇文章)
·双核服务器技术 (5840篇文章)
·网站服务器的选型 (6685篇文章)
·网吧流媒体服务器 (5367篇文章)
·刀片服务器专题 (4676篇文章)
·网吧服务器专栏 (4618篇文章)
·服务器配置专栏 (9288篇文章)
·IIS服务器应用技巧 (5162篇文章)
·局域网中代理服务器的配置方案 (159篇文章)
·FTP服务器 (5104篇文章)
·双核服务器技术 (5840篇文章)
·网站服务器的选型 (6685篇文章)
·网吧流媒体服务器 (5367篇文章)
·刀片服务器专题 (4676篇文章)
·网吧服务器专栏 (4618篇文章)
·服务器配置专栏 (9288篇文章)
·IIS服务器应用技巧 (5162篇文章)
·局域网中代理服务器的配置方案 (159篇文章)
·Red Hat Enterprise Linux AS 4 Update 3 ( (7371次浏览)
·Linux下的FTP服务器配置 (3068次浏览)
·Linux入门时必学60个文件处理命令 (3067次浏览)
·清爽漂亮 Ubuntu 7.04 新手指南 (3019次浏览)
·Linux系统中如何实现远程控制 (2834次浏览)
·RedHat7.2下ADSL双网卡共享上网实战 (2829次浏览)
·linux下安装软件的办法 (2775次浏览)
·菜鸟大学堂:一步一步配置WEB服务器 (2654次浏览)
·Linux下用vsftpd构建FTP服务器 (1102次浏览)
·Windows外衣Linux心 红旗桌面版详测 (1081次浏览)
·Linux下的FTP服务器配置 (3068次浏览)
·Linux入门时必学60个文件处理命令 (3067次浏览)
·清爽漂亮 Ubuntu 7.04 新手指南 (3019次浏览)
·Linux系统中如何实现远程控制 (2834次浏览)
·RedHat7.2下ADSL双网卡共享上网实战 (2829次浏览)
·linux下安装软件的办法 (2775次浏览)
·菜鸟大学堂:一步一步配置WEB服务器 (2654次浏览)
·Linux下用vsftpd构建FTP服务器 (1102次浏览)
·Windows外衣Linux心 红旗桌面版详测 (1081次浏览)
·更好用的Linux:Mandriva 2008正式发布 10-12
·Debian下系统时间比正常时间快8小时的问题 10-12
·开源空间:交叉编译Linux内核(2.6.22.6) 10-12
·新手学堂:类Linux中各种各样的编程语言 10-12
·用Tftp向目标板烧写Linux的系统内核过程 10-11
·RedHat Linux9.0 安装过程 10-11
·7大最有影响力的GNU/Linux发行版 10-11
·Linux系统下的C语言开发都需要学些什么 10-11
·Linux 技巧: 用cron 和at 调度作业 10-11
·各种Linux操作系统版本安装图解教程下载 10-11
·Debian下系统时间比正常时间快8小时的问题 10-12
·开源空间:交叉编译Linux内核(2.6.22.6) 10-12
·新手学堂:类Linux中各种各样的编程语言 10-12
·用Tftp向目标板烧写Linux的系统内核过程 10-11
·RedHat Linux9.0 安装过程 10-11
·7大最有影响力的GNU/Linux发行版 10-11
·Linux系统下的C语言开发都需要学些什么 10-11
·Linux 技巧: 用cron 和at 调度作业 10-11
·各种Linux操作系统版本安装图解教程下载 10-11
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
站内频道文章精选
百度推荐,商机无限
搜索您感兴趣的内容



