日期:2011-05-31 20:40:00 来源:本站整理
CentOS 5.6 下Squid 安装[服务器安全]
本文“CentOS 5.6 下Squid 安装[服务器安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
我用的CentOS 5.6 rpm包:squid-2.6.STABLE21-6.el5.i386.rpm
简介
普通代理
透明代理
反向代理
弊端处理
一个典范
一个限制拜候的典范
官方网站:http://www.squid-cache.org/
一. 代理服务简介
返回
1. 什么是代理服务器(Proxy Server)
Web代理服务器(普通所说的代理服务器)是介于浏览器和Web服务器之间的一台服务器,当你通过代理服务器上网浏览时,浏览器不是直接到 Web服务器去取回网页而是向代理服务器发出恳求,由代理服务器来取回浏览器所需求的信息并传送给你的浏览器. 并且,大部份代理服务器都具有缓冲的功效,就好象一个大的Cache,它有很大的存储空间,它不断将新获得数据储存到它本机的存储器上,假如浏览器所恳求 的数据在它本机的存储器上已经存在并且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就可以明显提高浏览 速度和效率.
1、衔接Internet与Intranet 充当firewall(防火墙):因为全部内部网的用户通过代理服务器拜候外界时,只映射为一个IP地址,所以外界不能直接拜候到内部网;同时可以设置 IP地址过滤,限制内部网对外部的拜候权限;别的,两个没有互联的内部网,也可以通过第三方的代理服务器举行互联来交换信息.
2、同享因特网衔接,节俭IP开销:如前面所讲,全部用户对外只占用一个IP,所以没必要租用过量的IP地址,降低网络的保护本钱.这样,局 域局内没有与外网相连的众多机械便可以通过内网的一台代理服务器衔接到外网,大大削减费用.当然也有它不利的一面,如很多网络黑客通过这种办法躲藏自己的 真实 IP地址,而逃过监督.
3、提高拜候速度,节俭通信带宽.并且普通代理服务器都设置一个较大的硬盘缓冲区(大概高达几个GB或更大),当有外界的信息通过期,同时也将其保存到缓冲区中,当其他用户再拜候相同的信息时,则直接由缓冲区中取出信息,传给用户,从而到达提高拜候速度的目的.
2. 代理服务器的硬件需求
代理服务器关于硬件的要求相当的高!因为我们架设代理服务器的目的就是但愿可以加快网络的传输速度因此,固然代理服务器几近在任何的 Linux 系统上面都能跑,但是代理服务器最好还是有较高的硬件配置:
CPU 充足好;
RAM 充足大,这也是很重要的一个硬件参数
Hard Disk 最好能用 SCSI 接口的,因为速度与安定度都对比好!假如不能的话,那么 IDE 接口的硬盘由于目前速度也越来越快,所以利用 IDE 也没有问题,但是最好是『多块硬盘』的架构,比方我总共需求 30 GB 的硬盘空间,那么最好是 10 GB 的硬盘三块这样的架构较佳. 最好在架设代理服务器时,将整体主机的筹划做好,并且让代理服务器主机的服务纯真一点,最好只负责代理服务
每颗硬盘的容量不需求太大,此外,最好将硬盘分割一下,一个分区在 2~4 GB 之间便可,因为分太大的话资料的搜索耗费时间较长,但是分区太小又大概造成空间的浪费
cache 是安排在某个目录下的,而最好一个目录底下就是独立的一个partition .此外,由于 cache 所在的硬盘常常会有资料的存取,因此大概此一硬盘的损耗率会对比大,所以这个 cache 所在的硬盘最好不要跟重要数据文件,比方 /, /etc, /usr, /home 等等重要的系统文件放在一同!
也由于 cache 所在的硬盘资料存取太密集了,所以,硬盘的挑选上面需求 (1)转速不能太低; (2)磁头的机械臂需求可以忍耐频繁的行动;(3)发热量不可太大,大概可以考虑加装硬盘用电扇.
网络卡与网络周边最好利用 GBytes 的网络卡
3. 利用squid的好处
squid是开源软件,性能优异.并仍在世界各地的squid开辟者的通力合作下,不断发展.
快速呼应,削减网络阻塞,Squid将远程Internet对象保存为本地拷贝.当本地用户再次拜候这些对象时,Squid可以直接快速地供应对这些对象的拜候,而没必要再次占用带宽拜候远程服务器上的对象.
加强拜候掌握,提高安全性.可以针对特定的的网站、用户、网络、数据范例实施拜候掌握
squid可以工作在普通代理情势、透明代理情势各反向代理情势
4. squid的构造
多个squid代理服务器可以通过icp协议彼此沟通,形成树形层次关系(父代理、兄弟代理、子代理),构建代理服务器群.
二. squid.conf的典型配置(普通代理)
返回
1. 配置
#vi /etc/squid/squid.conf
#http_port指令奉告squid在哪个端口侦听HTTP恳求.默许端口是3128,除下面的情势外,也可以是http_port 192.168.63.50:3128
http_port 3128
icp_port 3130
#缓存目录的设置,可以设置多个缓存目录,语法为:<cache_dir> <aufs|ufs> <目录所在> <MBytes大小> <dir1> <dir2>
cache_dir ufs /var/spool/squid 1000 64 1024
#下面是关于日记文件的安排目录与文件名!
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
pid_filename /var/run/squid.pid
#关闭认证机制,有些版本的 squid 会自动的加入代理认证机制,而普通情形下是不需求的,故找到包含auth_param的行,给它们加上注释
#auth_param basic children 5
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours
#设置squid用户及用户组、管理员账号
cache_effective_user squid
cache_effective_group squid
cache_mgr youraccount@your.e.mail
# 与内存有关的配置:因为我的系统内存很小,所以只给 8 MB!假如您的物理内存很大的情形下,比方 512 MB,可以考虑加大到 64 或 128 MB.
cache_mem 128 MB
# 与磁盘容量有关的配置(注:下列的 90 与 95 是百分比 ),假如您的 cache_dir 所在磁盘很大时,可以考虑将 4096 改成 32768 KB
cache_swap_low 90
cache_swap_high 95
maximum_object_size 4096 KB
# 与内存保存资料有关的配置
maximum_object_size_in_memory 8 KB
#定义acl(拜候掌握列表), 语法为:acl<acl> <acl名称> <acl范例> <配置的内容>
#黑体为用户自定义部份
acl All src 0/0
acl Manager proto cache_object
acl Localhost src 127.0.0.1/32
acl Safe_ports port 80 21 443 563 70 210 280 488 591 777 1025-65535
acl SSL_ports 443 563
acl CONNECT method CONNECT
acl MyNetwork src 192.168.0.0/16
#操纵前面定义的acl,定义拜候掌握法则
http_access allow Manager Localhost
http_access deny Manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow MyNetwork
http_access deny All
#定义与别的代理服务器的关系,语法: <cache_peer> <主机名称> <类别> <http_port> <icp_port> <别的参数>
cache_peer 192.168.60.6 parent 4480 7 no-query default
#设置与别的代理服务器的关系:
# <cache_peer_access> <上层 Proxy > <allow|deny> <acl名称>
#cache_peer_access 192.168.60.6 allow aclxxx
#cache_peer_access 192.168.60.6 deny !aclxxx
coredump_dir /var/spool/squid
2. 激活squid
1). 在开启squid之前,你应当考证其配置文件能否精确.运行以下号令便可:
# squid -k parse
假定你看不到输出,配置文件有效,你能持续背面的步骤.但是,假如配置文件包含错误,squid会奉告你:
2). 初始化cache目录.即成立缓存目录的存储格局
只需在第一次启动squid服务之前履行(在初次运行squid之前,大概无论什么时刻你增添了新的cache_dir,你必须初始化cache目录.)
# squid -z
cache目录初始化大概耗费一些时间,依靠于cache目录的大小和数目,以及磁盘驱动器的速度.假定你想察看这个历程,请利用-X选项:
# squid -zX
3). 启动squid服务
# service squid start
假定squid安装在/usr/local/squid目录下,也可以
# /usr/local/squid/sbin/squid -sD
4). 终止squid
最安全的终止squid的办法是利用squid -k shutdown号令:
# squid -k shutdown
5). 重配置运行中的squid进程
在你理解了更多关于squid的知识后,你会发现对squid.conf文件做了很多窜改.为了让新设置见效,你可以关闭和重启squid,大概在squid运行时,重配置它.
重配置运行中的squid最好的办法是利用squid -k reconfigure号令:
# squid -k reconfigure
6). 转动日记文件
除非你在squid.conf里禁止,squid会写大量的日记文件.你必须周期性的转动日记文件,以禁止它们变得太大.squid将大量的重要信息写入日记,假定写不进去了,squid会发生错误并退出.为了公道掌握磁盘空间损耗,在cron里利用以下号令:
%squid -k rotate
比方,以下任务接口在每天的早上4点转动日记:
0 4 * * * /usr/local/squid/sbin/squid -k rotate
该号令做两件事.首先,它关闭当前翻开的日记文件.然后,通过在文件名后加数字扩大名,它重命名cache.log,store.log,和 access.log.比方,cache.log变成cache.log.0,cache.log.0变成cache.log.1,如此持续,转动到 logfile_rotate选项指定的值.
squid仅仅保存每个日记文件的最后logfile_rotate版本.更老的版本在重命名历程中被删除.假定你想保存更多的拷贝,你需求增 加logfile_rotate限制,大概编写脚本用于将日记文件移动到其他位置. 请见13.7章关于转动日记的其他信息.3. 拜候掌握示例
1) 禁止拜候某个网站
在squid配置文件中增添以下acl名称及拜候法则,并重新加载配置文件
acl sina dstdomain .sina.com.cn .sina.com
http_access deny sina
或
acl sina dst 58.63.236.26 58.63.236.27 58.63.236.28 58.63.236.29 58.63.236.30 58.63.236.31 58.63.236.32 58.63.236.33 58.63.236.34 58.63.236.35 58.63.236.36 58.63.236.37 58.63.236.38 58.63.236.39 58.63.236.49 58.63.236.50
http_access deny sina
或
acl sina dst www.sina.com.cn
http_access deny sina
2) 禁止来自某些IP地址的拜候
在squid配置文件中增添以下acl名称及拜候法则,并重新加载配置文件
acl zhang src 192.168.63.6/32
http_access deny zhang
3) 禁止在某些时段拜候
acl Working_hours MTWHF 08:00-17:00
http_access allow Working_hours
http_access deny !Working_hours
4) 禁止某个代理客户成立过量衔接
acl OverConnLimit maxconn 4
http_access deny OverConnLimit
三. 透明代理
返回
让我们目前来想象一个联机状况,就是你有一整组内部网络,而这个内部网络都是透过 NAT 主机联机出去的.那么我们谈过,就是在一个内部网很大的情形下,利用 Proxy 是一个很不错的挑选,因为至少他可以减轻带宽负荷!不过,遗憾的是,架设 Proxy 的时刻,也要利用者在浏览器上面设置代理!那么有没有办法在『利用者不需求在浏览器上面举行任何配置,便可以实现以 Proxy 帮忙利用者联接Internet?当然有啦!那就是 Transparent Proxy 啦!也有人翻译成『透明代理服务器』,其原理是:
当利用者经过 NAT 服务器来联机进入 Internet 时,假定利用的 Internet 协议为 80 (也就是 WWW) ,那么就将这个要求交给 Proxy 来工作,以到达代理服务器的功效.
呵呵!也就是说,当利用者是经过 NAT 主机联机出去时,只要让 NAT 主机发现『咦!你是要去读取 www 的资料对吧!好!那么这个行动由 Proxy 主机帮你搞定!』如此一来,利用者根本就不需求在浏览器上面配置 Proxy 的相关资料,因为这个行动是『由 NAT 主机自己决意的』,所以只要在 NAT 主机上面配置妥立便可,利用者没必要配置任何资料呢!那么要怎么举行呢?只要两个步骤便可:
1. 配置 Proxy 主机:
1) 假如是squid 2.5,需求更改squid配置文件中的下列指令:
[root@test root]# vi /etc/squid/squid.conf
!
httpd_accel_host virtual # 奉告web加快器,针对全部的URL
httpd_accel_port 80 # 奉告web加快器,要监听的端口是80!
httpd_accel_with_proxy on # 这个很重要!因为配置 httpd_accel_host 之后, cache 的配置会自动被终止,必必要加上这个配置为 on 之后,才能供应 cache 的功效!
httpd_accel_uses_host_header on
2) 假如是squid 2.6,则只需求更改squid配置文件中的一个指令:
http_port 192.168.63.50:3128 transparent #192.168.63.50 就是squid服务器的地址
[root@test root]# squid -k reconfigure
2. 配置 NAT 主机的 port map :
再来让我们到 NAT 主机上面看看先,因为需求将 80 这个 port 交给 Proxy 的 3128 来帮忙帮忙,所以你的防火墙 script 必必要加入这一段才行:
#iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.62.0/24 --dport 80 -j REDIRECT --to-ports 3128
注意一下,那个 eth0 是『你的 NAT 对内的网卡』,至于 192.168.62.0/24 则是你的内部网域,请按照你的主机实际状况来配置!这样一来,您的 client 端完好不需求举行任何的配置,立即便可以利用 Proxy 的好处啰
3. 配置转发
#echo 1 > /proc/sys/net/ipv4/ip_forward
或:
#vi /etc/sysctl.conf
net_ipv4_forword=1
#vi /etc/sysconfig/network
FORWARD_IPV4=yes
#service network restart
4. 配置客户端
将别的一台计算机作为客户机举行测试,需求将网关、首选DNS服务器指向设置透明代理的服务器,排除客户端的浏览器代理设置.四. 反向代理
返回
代理服务器是利用非常广泛的一种将局域网主机联入互联网的一种方法,利用代理上网可以节俭紧缺的IP地址资源,并且可以阻断外部主机对内部主机 的拜候,使内部网主机免受外部网主机的攻击.但是,假如想让互联网上的主机拜候内部网的主机资源(比方:Web站点),又想使内部网主机免受外部网主机攻 击,普通的代理服务是不能实现的,需求利用反向代理来实现.
什么是反向代理呢?其实,反向代理也就是普通所说的WEB服务器加快,它是一种通过在繁忙的WEB服务器和Internet之间增添一个高速的WEB缓冲服务器(即:WEB反向代理服务器)来降低实际的WEB服务器的负载.典型的构造以下图所示:
Web服务器加快(反向代理)是针对Web服务器供应加快功效的.它作为代理Cache,但并不针对浏览器用户,而针对一台或多台特定Web服 务器(这也是反向代理名称的由来).实施反向代理(如上图所示),只要将Reverse Proxy Cache设备安排在一台或多台Web服务器前端便可.当互联网用户拜候某个WEB服务器时,通过DNS服务器解析后的IP地址是Reverse Proxy Server的IP地址,而非原始Web服务器的IP地址,这时Reverse Proxy Server设备充当Web服务器,浏览器可以与它衔接,无需再直接与Web服务器相连.因此,大量Web服务工作量被卸载到反向代理服务上.不但可以防 止外部网主机直接和web服务器直接通信带来的安全隐患,并且可以很大程度上减轻web服务器的负担,提高拜候速度.
1. Squid反向代理单个后台WEB服务器
1) 假如WEB服务器和反向代理服务器是两台单独的机械(普通的反向代理应当有两块网卡辨别衔接了内外部网络).那么,应当改正下面的内容来设置反向代理服务.
http_port 80 #squid监听的端口
httpd_accel_host 172.16.250.250 #内部WEB服务器的IP地址
httpd_accel_port 80 #WEB服务的端口号
httpd_accel_single_host on #转发没有缓冲的恳求到一台单独的机械,squid被设置成仅对单一的web服务器作反向代理
httpd_accel_with_proxy on #假如但愿squid既作反向代理服务器又作本地机械的上网代理,需求将此设为on,默许是off
httpd_accel_uses_host_header off #在HTTP协议1.1中,HTTP恳求包含一个主机头信息,指定URL的主机名大概主机的IP地址.这个选项可以用来完成多个后台WEB服务器的反向代理功效.
2) 假如WEB服务器和反向代理服务器是同一台机械.那么,应当设置WEB服务器的监听端口为非80端口(比方:81端口).要改正的内容以下:
http_port 80 #squid监听的端口
httpd_accel_host localhost #内部WEB服务器的IP地址
httpd_accel_port 81 #WEB服务器的端口号
httpd_accel_single_host on
httpd_accel_with_proxy on
httpd_accel_uses_host_header off
2.Squid反向代理多个后台WEB服务器
我们可以用Squid反向代理多个后台WEB服务器.比方:我们可以配置squid同时反向代理www.linuxidc.com, www.linuxidc.net, www.6688.cc三个后台WEB服务器,表示图以下:
Squid的配置以下:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_single_host off
httpd_accel_uses_host_header on
(注意:编译Squid时需激活Internal DNS选项)
然后设置设置反映代理需求的域名解析(Internet用户通过这里解析三个网站的域名)以下:
www.linuxidc.com 202.102.240.74
www.linuxidc.net 202.102.240.74
www.6688.cc 202.102.240.74
使三个域名都指向反向代理服务器的IP地址202.102.240.74.
下面设置反向代理所需求的DNS进口信息(即设置内部DNS,仅仅是squid在内部利用,Internet用户不可见).有两种办法可以设置内部DNS,利用内部DNS服务器来解析大概利用/etc/hosts文件来实现.
利用内部DNS服务器的资源记录以下:
www.linuxidc.com IN A 192.168.62.2
www.linuxidc.net IN A 192.168.62.3
www.6688.cc IN A 192.168.62.4
假如利用/etc/hosts文件来实现内部DNS(编译时应利用disable internal dns选项),编辑/etc/hosts文件增添以下条目:
192.168.62.2 www.linuxidc.com
192.168.62.3 www.linuxidc.net
192.168.62.4 www.6688.cc
结论:通过本文中的阐述和相关实例,可以看出,反向代理方法不但是一种WEB服务器加快器,并且使也一种对外供应Web公布时利用的有效的防火墙技术,利用它不但能节俭紧缺的IP地址资源,加快WEB服务器的拜候速度,并且可以保护WEB主机,因此可以适应多种利用场所.
五. 弊端处理
返回
1. 假如在启动squid时呈现下述信息:
% squid -Nd1
FATAL: Could not determine fully qualified hostname. Please set 'visible_hostname'
则需求在squid的配置文件中设置visible_hostname,如:
visible_hostname squid.packet-pushers.net
2. 假如在配置squid代理后,客户拜候呈现以下提醒:
ERROR
The requested URL could not be retrieved
While trying to retrieve the URL: http://.../
大概需求在squid配置文件中加入以下指令:
always_direct allow all
六. 一个典范
返回
http_port 3128
icp_port 0
cache_mem 64 MB
cache_swap_low 80
cache_swap_high 85
maximum_object_size 32000 KB
cache_dir ufs /var/spool/squid 500 64 1024
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
pid_filename /var/run/squid.pid
acl all src 0.0.0.0/0.0.0.0
acl alldst dst 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl 163 url_regex 163.com
acl sina url_regex sina.com.cn
acl myclient src 192.168.6.0/24
http_access allow 163
http_access allow sina
http_access deny !sina
http_access deny !163
cache_peer 192.168.1.8 parent 8080 7 no-query default
cache_effective_user squid
cache_effective_group squid
cache_mgr root@net03.org
coredump_dir /var/spool/squid
七. 一个限制拜候的典范
返回
http_port 3128
icp_port 0
cache_mem 64 MB
cache_swap_low 80
cache_swap_high 85
maximum_object_size 32000 KB
cache_dir ufs /var/spool/squid 500 64 1024
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
pid_filename /var/run/squid.pid
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
acl myclient src 192.168.6.0/24
acl 163 url_regex 163.com
acl sina url_regex sina.com.cn
# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager
# Deny requests to unknown ports
http_access deny !Safe_ports
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports
cache_peer 192.168.1.8 parent 8080 7 no-query default
acl ip_acl src 192.168.6.0/24
acl time_acl time M T W H F A S 9:00-19:00
http_access allow ip_acl time_acl
cache_peer_access 192.168.1.8 allow 163
cache_peer_access 192.168.1.8 deny !163
cache_peer_access 192.168.1.8 allow sina
cache_peer_access 192.168.1.8 deny !sina
cache_effective_user squid
cache_effective_group squid
cache_mgr root@net03.org
coredump_dir /var/spool/squid
#acl pl800_arp arp 00:08:c7:9f:34:41
#http_access allow pl800_arp
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论