- 浏览: 266420 次
- 性别:
- 来自: 北京
最新评论
-
zwb5370:
为什么 Java 的 cron 规则的 周规则和 linux ...
Quartz的cron表达式 -
zjhdreams:
没说说明L W C,L C #,每个字符的含义呢?补充
Quartz的cron表达式 -
qq359907964:
呵呵,没问题了,能正常运行..
Quartz的cron表达式 -
dongcb678:
biaoming 写道看了一下文档,compass已经提供很方 ...
Compass怎样在指定alias中搜索 -
anttribe:
请问博主,源呢?你是使用哪个源? 怎么还有内核的源?我杂没找到 ...
Debian升级内核
邮件服务器以及应用软件服务器来使用, 并且逐渐作为代理服务器来使用。
一台代理服务器可以通过一个Internet连接在同一时间为不同的用户提供Internet访问服务。好的代理服
务器同时还为访问请求提供缓存服务,这样当一个本地访问请求到达时,代理服务器会先在缓存记录里查
找有无相同的请求,如果有,则从缓存中把数据直接回送到客户端,从而缩短访问WEB的时间并减轻带宽
的压力。
Squid 是一个支持Proxy、HTTP缓存、Ftp、Gopher 等等的软件,它也支持SSL、访问控制、DNS缓存并且为
所有的请求做记录。Squid 在 Windows NT 下也可用,详见 Logi Sense.
本文的重点是为配置一台代理服务器并为用户提供可控访问提供基本的指导
Squid 已经安装了吗?
Squid 的 rpm 文件已经和 RedHat 7.1 捆绑发行了,在安装系统的时候,如果在 Networks 选项中选中的话,它会自动安装在系统上。您可以用下面的命令检查您的系统中是否已经安装了 Squid:
rpm -q squidSquid 的最新版本可以在 Squid 主页 或它的镜像站点得到。 Squid 可以用下述命令安装在系统上:
rpm -ivh squid-2.3.STABLE4-10.i386.rpm
配置 Squid
Squid 的定制是通过编辑它的配置文件 squid.conf 来实现的,squid.conf 文件通常在 /etc/squid 目录下。这个配置文件内容很多,但好在它的每个选项都有详尽的说明。
首先要修改的是 http_port,这个选项指定了 Squid 监听客户请求的端口,默认值是 3128。要使用代理
功能,这个端口值要和运行 Squid 的机器的 IP 地址一起使用,可以修改成下面这样:
http_port 192.168.0.1:8080
上述声明表示 Squid 绑定在 IP 地址 192.168.0.1 上,端口为 8080。端口可以设置为任意值,但要确认没有其他程序会使用同样的端口。其他的服务请求的端口设置也可以设为类似的配置。
访问控制
使用访问控制特性,可以控制在访问时根据特定的时间间隔进行缓存、访问特定站点或一组站点等等。 Squid 访问控制有两个要素:ACL 元素和 访问列表。访问列表可以允许或拒绝某些用户对此服务的访问。下面列出一些重要的 ACL 元素类型
- src : 源地址 (即客户机IP地址)
- dst : 目标地址 (即服务器IP地址)
- srcdomain : 源名称 (即客户机名称)
- dstdomain : 目标名称 (即服务器名称)
- time : 一天中的时刻和一周内的一天
- url_regex : URL 规则表达式匹配
- urlpath_regex: URL-path 规则表达式匹配,略去协议和主机名
- proxy_auth : 通过外部程序进行用户验证
- maxconn : 单一 IP 的最大连接数
acl acl_element_name type_of_acl_element values_to_acl
注:- acl_element_name 可以是任一个在 ACL 中定义的名称。
- 任何两个 ACL 元素不能用相同的名字。
- 每个 ACL 由列表值组成。当进行匹配检测的时候,多个值由逻辑或运算连接;换言之,即任一 ACL
元素的值被匹配,则这个 ACL 元素即被匹配。 - 并不是所有的 ACL 元素都能使用访问列表中的全部类型。
- 不同的 ACL 元素写在不同行中,Squid 将把它们组合在一个列表中。
- http_access: 允许 HTTP 访问。这个是主要的访问控制条目。
- no_cache: 定义对缓存请求的响应。
注:
- 这些规则按照它们的排列顺序进行匹配检测,一旦检测到匹配的规则,匹配检测就立即结束。
- 一个访问列表可以又多条规则组成。
- 如果没有任何规则与访问请求匹配,默认动作将与列表中最后一条规则对应。
- 一个访问条目中的所有元素将用逻辑与运算连接:
http_access Action 声明1 AND 声明2 AND 声明 OR.
http_access Action 声明3
多个 http_access 声明间用或运算连接,但每个访问条目的元素间用与运算连接。 - 请记住列表中的规则总是遵循由上而下的顺序。
回到配置 Squid
Squid 默认不做任何用户访问控制。若要允许某个访问,必须进行定制规则。在 squid.conf 中 http_access deny 行前输入下述文字:acl mynetwork 192.168.0.1/255.255.255.0
http_access allow mynetwork
机器访问 http 服务。上述修改配合 http_port 就可以让 Squid 很好的工作起来了。 修改完成后,Squid
可以用下述命令启动:
service squid start
注:Squid 也可以在系统启动的时候自动运行,方法是在 ntsysv 或 setup(系统服务菜单)中打开 Squid。在
对配置文件做了任何更改之后,当前正运行的 Squid 进程必须重新启动。可以用下面的命令来完成:
- service squid restart 或
- /etc/rc.d/init.d/squid restart
配置客户端
由于客户端的请求是送到代理服务器的特定端口的,因此,客户端也要做相应配置。在继续下一步之前,请确认要访问代理服务器的客户端已经连接在局域网中并已分配了有效的 IP 地址,请确认它们都能 ping 通
运行了 Squid 的 Linux 服务器。
在 Internet Explorer 下的配置:
- 点击菜单上的 工具 -> Internet 选项
- 选择 连接 并单击 局域网设置
- 选中 使用代理服务器 输入上述代理服务器的 IP 地址和端口。
在 Netscape Navigator 下的配置:
- 点击菜单上的编辑(Edit)->首选项(Preference)->高级(Advanced)->代理服务器(Proxies)。
- 选中手动配置代理服务器(Manual Proxy Configuration)。
- 点击查看(View) 并
- 输入上述代理服务器的 IP 地址和端口。
使用访问控制
多个访问控制及其规则为客户端访问控制提供了一种灵活的机制。下面给出通常所用到的例子:- 允许列表中的机器访问 Internet。
acl allowed_clients src 192.168.0.10 192.168.0.20 192.168.0.30
这个规则只允许 IP 地址为 192.168.0.10、192.168.0.20 及 192.168.0.30 的机器
http_access allow allowed_clients
http_access deny !allowed_clients
访问 Internet,其他 IP 地址的机器则都被拒绝访问。
- 限制访问时段。
acl allowed_clients src 192.168.0.1/255.255.255.0
这个规则允许子网192.168.0.1中的所有客户机在周一到周五的上午10:00到下午4:00
acl regular_days time MTWHF 10:00-16:00
http_access allow allowed_clients regular_days
http_access deny !allowed_clients
访问 Internet。
- 为不同的客户机分配不同的访问时段。
acl hosts1 src192.168.0.10
在这个规则中,主机 host1 可以在 morning 和 evening 时段访问 Internet,主机
acl hosts2 src 192.168.0.20
acl hosts3 src 192.168.0.30
acl morning time 10:00-13:00
acl lunch time 13:30-14:30
acl evening time 15:00-18:00
http_access allow host1 morning
http_access allow host1 evening
http_access allow host2 lunch
http_access allow host3 evening
http_access deny all
host2 和 host3 分别只能在 lunch 和 evening 时段访问 Internet。
注:
一个访问条目中所有的元素之间用与运算按下述方式连接 :http_access Action statement1 AND staement2 AND statement OR.
多个 http_access 声明之间用或运算连接而每个访问条目中的元素用与运算连接,见
下:http_access allow host1 morning evening
无法在时段 morning 和时段 evening 同时进行(morning AND evening ),这个表达
式将不会返回真值(TRUE),从而这个条目将不会引发任何动作。
- 站点屏蔽
Squid 可以屏蔽某些特定站点或含有某些特定字词的站点。可以用下面的规则实现:acl allowed_clients src 192.168.0.1/255.255.255.0
也可以用以屏蔽含有某些特定字词(比如说 dummy、fake)的站点
acl banned_sites url_regex abc.com *()(*.com
http_access deny banned_sites
http_access allow allowed_clients
acl allowed_clients src 192.168.0.1/255.255.255.0
在实际应用中,不需要把需屏蔽的所有站点或字词都列在上面,可以先保存在一个文件
acl banned_sites url_regex dummy fake
http_access deny banned_sites
http_access allow allowed_machibes
中(请查看 /etc 目录中的 banned.list文件)ACL 将从这个文件中读出所需信息用以
屏蔽被禁止的站点。acl allowed_clients src 192.168.0.1/255.255.255.0
acl banned_sites url_regex "/etc/banned.list"
http_access deny banned_sites
http_access allow allowed_clients - 优化
Squid 可以通过使用 maxconn 元素来限制客户端连接的数目。 要使用这个选项,必须
先允许 client_db。acl mynetwork 192.168.0.1/255.255.255.0
注:
acl numconn maxconn 5
http_access deny mynetwork numconn
maxconn ACL 使用小于(less-than)对比。此 ACL 规则将在连接数大于设定值时被匹配。
这是 ACL 不与 http_access 允许规则连用的主要原因。
- 缓存数据
对于静态页面,缓存的数据能够立刻回送到发出请求的客户端。没有必要去缓存 cgi-bin
或 Servlet,这些可以用 ACL 元素 no_cache 来禁止。acl cache_prevent1 url_regex cgi-bin /?
acl cache_prevent2 url_regex Servlet
no_cache deny cache_prevent1
no_cache deny cache_prevent2 - 自定错误反馈信息
可以用拒绝规则的 deny_info 选项来自定错误反馈信息。Squid 默认的错误信息放在
/etc/squid/errors 目录中。这个目录可以用 error_directory 选项指定。您也可以
定制现存的错误反馈信息。acl allowed_clients src 192.168.0.1/255.255.255.0
在上面的例子中,当用户试图访问被禁止的站点时,将会显示一条定制的信息。
acl banned_sites url_regex abc.com *()(*.com
http_access deny banned_sites
deny_info ERR_BANNED_SITE banned_sites
http_access allow allowed_clients
ERR_BANNED_SITE 选项中的文件名必须在上述的错误信息的目录中。错误信息必须是 HTML 格
式的。上面列出了 ACL 的一些选项,您可以参看 Squid 主页上的 FAQ 文档 以获得使用 ACL
更多的信息。
日志
Squid 的所有日志文件都存放在 /var/log/squid 目录中,有缓存日志、访问日志和 store.log文件。文件 access.log 记录了有关客户机的请求、连接活动、每个 HTTP & ICP 询问、客户机 IP 地址、请求方
式、请求的 URL 等等信息。这些数据可以用来对访问进行分析。许多程序如 sarg、 calamaris, Squid-Log-Analyzer 都可以用来分析这些数据并产生 HTML 格式的分析报告。 这些报告可以在一组用户、一组
IP 地址或一组访问过的站点等等记录中产生。
这些记录文件也可以成为下面这样:
cache_access_log For access.log cache_log For cache.log cache_store_log For store.log (Store manager) pid_filename Squid process ID file name
验证方式
Squid 的默认配置允许任何用户不经过验证过程就可以进行访问。Squid 通过一个外部程序提供用户验证功能(比如说只允许有效的用户访问 Internet),这就需要一个有效的用户名和密码。可以用 proxy_auth
ACL 和 authenticate_program 来实现,在允许访问前强制进行用户名和密码的核查。下面列出一些 Squid
能用到的验证程序:
- LDAP : 使用 Linux Lightweight 目录访问协议(Linux Lightweight Directory Access Protocol)
- NCSA : 使用 NCSA 风格的用户名和密码档
- SMB : 使用 SMB 协议的服务,如 SAMBA 或 Windows NT
- MSNT : 使用 Windows NT 的域验证
- PAM : 使用 Linux 的可装载验证模块
- getpwam : 使用 Linux 密码档
好的工作。
修改 squid.conf 文件选定验证程序
authenticate_program /usr/local/bin/pam_auth
acl pass proxy_auth REQUIRED
acl mynetwork src 192.168.0.1/255.255.255.0
http_access deny !mynetwork
http_access allow pass
http_access deny all
还有些选项比如 authenticate_ttl 和 authenticate_ip_ttl,可以用来改变验证程序的动作,比如说使某个用户名及密码重新生效。
参考资料
本文仅仅初窥了 Squid 的冰山一角,更多的参考资料可以在下面的站点找到:- Squid Home, www.squid-cache.org
- Squid Documentation Project, squid-docs.sourceforge.net
- visolve.com
- For Proxy Authentication, home.iae.nl/users/devet/squid/proxy_auth
(转贴自:www.linuxfocus.org,作者:D.S. Oberoi 翻译:Free Neil
发表评论
-
proftpd禁用反向域名解析
2008-01-17 16:35 1442# 禁用反向域名解析 UseReverseDNS off -
解决libstdc++.so.5问题
2008-01-12 01:22 7859error while loading shared libr ... -
基于Linux实现多个ADSL捆绑
2007-04-29 21:20 3030现在很多公司,为了节约成本,往往会放弃E1 等等这样高价的 ... -
修改ubuntu的启动grub画面,模仿SUSE的效果
2007-04-27 11:58 4771现在ubuntu系统是越来越受大众用户的欢迎,易用性大大的提高 ... -
Ubuntu下连接蓝牙手机和蓝牙鼠标
2007-04-27 11:57 7235具体配置只要下载几个软件就可以了。用新立得安装如下几个软件。 ... -
Apache服务器二级域名的完美实现
2006-12-27 12:17 3307首先,你的拥有一个有泛域名解析的顶级域名,例如: domain ... -
用iptables实现NAT
2006-12-24 18:39 1873摘要 本文是“用iptales实现包过虑型防火墙”的姊妹篇 ... -
用iptales实现包过虑型防火墙(二)
2006-12-24 18:30 1441http://LinuxAid.com.cn bye2000 ... -
(转贴) 用iptales实现包过虑型防火墙(一)
2006-12-24 17:42 1536用iptales实现包过虑型防 ... -
iptables+squid(三)
2006-12-21 10:19 3597Linux 2.4 NAT HOWTO 简体中文版 Rust ... -
iptables+squid (二)
2006-12-21 10:18 3328此文档描述在Linux2.4 内核中,如何使用iptable ... -
用 Linux 打造路由器
2006-12-19 19:03 1915Linux作为一种新近崛起的操作系统,由于其性 ... -
用Zebra做BGP实验
2006-12-19 18:54 7022RIP和OSPF都是内部网关协议(IGP),BGP属于外部 ... -
用Zebra做OSPF实验
2006-12-19 18:53 4449OSPF(开放最短路径优先)路由协议是一项链路状态型技术, ... -
用Zebra做简单的RIP实验
2006-12-19 18:32 3074RIP是应用较早、使用较 ... -
Zebra配置(一)
2006-12-19 18:28 2678Zebra 是一个开源的 TCP/IP 路由软件,同 Cisc ... -
linux Apache 2.2 + PHP 5.1.2 + MYSQL 5.0.19+svn
2006-12-09 18:46 5780引用至http://blog.yening.cn/2006/ ... -
Linux下的软件包安装方法[详](转)
2006-11-29 09:22 77351、已经编译打包好的xxx.rpm 如果你的Linux系统带 ... -
Debian升级内核
2006-11-27 22:23 9548Debian是我用Linux当中升级内核最简单的,完全不需要编 ...
相关推荐
在Redhat Linux中,Iptalbes和Squid透明代理加防火墙的搭配配置是最常见的组合,也是非常实用的,下面就是详细的配置信息。
绍透明防火墙架设的完全攻略(bridge+iptables+squid)
squid+iptables+nat透明代理配置詳解,有示例供參考,可供LINUX初學者參考
RHEL5下Squid+IPtables经典案例
RHEL5下Squid+IPtables经典案例(透明代理+防火墙配置
详细介绍了squid的用法 的配置步骤,结合iptables实现squid的透明代理
在RedHat linux 9.0下用squid iptables实现透明代理.pdf
squid代理服务器、iptables防火墙(安全)的设置和各自的功能
单网卡squid 3.0+iptables做内网透明代理 2.doc
运行此容器的推荐方法如下所示: docker run -d --name squid --net host --privileged riddopic/squid接下来在您的 docker 主机上,您需要设置一个 IPtables 规则,以通过在容器中运行的代理透明
自己写的课程设计,用iptables和squid透明代理负载均衡和反向代理
1.1 iptables防火墙简介 ...其功能与安全性比其**ipfwadm,ipchains**强大的多,iptables主要工作在OSI七层的二、三、四层,如果重新编译内核,iptables也可以支持**7层控制**(squid代理+iptables) 1
由iptables 实现包的过滤,由LINUX下大名鼎鼎的squid结合NAT来实现透明WEB代理。SQUID代理的性能本身已经是代理服务器中的佼佼者,本系统将其性 能发挥的极至:通过ramdisk技术,让SQUID把网页cahce到内存中,这样,你所...
安装篇: 本教程应用环境为干净centos 5.5 ,预先分好并加载/data分区,并且关闭selinux及iptables 首先修改文件描述符并设定临时端口范围,这些设置重启后生效 代码如下: cat >> /etc/security/limits.conf <...
XSServer是一个系统,旨在作为一种简单的方法来配置dhcp,iptables和squid,以使它们能够一次协同工作,并为每个生成所需的配置文件。
这是用perl和bash编写的将防火墙和经过身份验证的网关脚本转换为iptables和squid的规则。
9.3.1 Squid主配置文件squid.conf 9.3.2 设置Squid监听的端口号 9.3.3 内存缓冲设置 9.3.4 Squid磁盘缓存 9.3.5 设置缓存日志 9.3.6 设置访问日志文件 9.3.7 设置网页缓存日志 9.3.8 设置Squid的拥有者 9.3.9 设置...
2.正确配置代理网络(2分) 3.正确配置squid客户端,并实现各子网正常通信(2分)6分 3.Iptables:1.服务启动成功,默认设置阻止所有流量(3
ssh client and server scp sshd nfs iptables apache web server squid dns server dhcp server iptables firewall router or firewall packet forwarding packet filtering nat pat snat dnat Samba ping6 ipv4...
Linux黄带教程,1.linux起源与发展 2RHEL系统安装 3RHEL应用基础 4.linux目录及文件管理 5.Linux用户及组管理 6.Linux目录及文件...16.Samba服务配置 17.Apache服务配置 18.Squid代理服务配置 19.IPTables防火墙配置