- 浏览: 269732 次
- 性别:
- 来自: 北京
最新评论
-
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 1513# 禁用反向域名解析 UseReverseDNS off -
解决libstdc++.so.5问题
2008-01-12 01:22 7949error while loading shared libr ... -
基于Linux实现多个ADSL捆绑
2007-04-29 21:20 3058现在很多公司,为了节约成本,往往会放弃E1 等等这样高价的 ... -
修改ubuntu的启动grub画面,模仿SUSE的效果
2007-04-27 11:58 4797现在ubuntu系统是越来越受大众用户的欢迎,易用性大大的提高 ... -
Ubuntu下连接蓝牙手机和蓝牙鼠标
2007-04-27 11:57 7300具体配置只要下载几个软件就可以了。用新立得安装如下几个软件。 ... -
Apache服务器二级域名的完美实现
2006-12-27 12:17 3336首先,你的拥有一个有泛域名解析的顶级域名,例如: domain ... -
用iptables实现NAT
2006-12-24 18:39 1922摘要 本文是“用iptales实现包过虑型防火墙”的姊妹篇 ... -
用iptales实现包过虑型防火墙(二)
2006-12-24 18:30 1487http://LinuxAid.com.cn bye2000 ... -
(转贴) 用iptales实现包过虑型防火墙(一)
2006-12-24 17:42 1580用iptales实现包过虑型防 ... -
iptables+squid(三)
2006-12-21 10:19 3640Linux 2.4 NAT HOWTO 简体中文版 Rust ... -
iptables+squid (二)
2006-12-21 10:18 3351此文档描述在Linux2.4 内核中,如何使用iptable ... -
用 Linux 打造路由器
2006-12-19 19:03 1954Linux作为一种新近崛起的操作系统,由于其性 ... -
用Zebra做BGP实验
2006-12-19 18:54 7131RIP和OSPF都是内部网关协议(IGP),BGP属于外部 ... -
用Zebra做OSPF实验
2006-12-19 18:53 4489OSPF(开放最短路径优先)路由协议是一项链路状态型技术, ... -
用Zebra做简单的RIP实验
2006-12-19 18:32 3128RIP是应用较早、使用较 ... -
Zebra配置(一)
2006-12-19 18:28 2731Zebra 是一个开源的 TCP/IP 路由软件,同 Cisc ... -
linux Apache 2.2 + PHP 5.1.2 + MYSQL 5.0.19+svn
2006-12-09 18:46 5816引用至http://blog.yening.cn/2006/ ... -
Linux下的软件包安装方法[详](转)
2006-11-29 09:22 77741、已经编译打包好的xxx.rpm 如果你的Linux系统带 ... -
Debian升级内核
2006-11-27 22:23 9637Debian是我用Linux当中升级内核最简单的,完全不需要编 ...
相关推荐
在Redhat Linux中,Iptalbes和Squid透明代理加防火墙的搭配配置是最常见的组合,也是非常实用的,下面就是详细的配置信息。
绍透明防火墙架设的完全攻略(bridge+iptables+squid)
* IPTABLES+SQUID 服务:手册中介绍了IPTABLES+SQUID的概念和应用,包括IPTABLES+SQUID服务器的设置和配置。 知识点3: 安全服务规划 * SSH 互信:手册中介绍了SSH(Secure Shell)的概念和应用,包括SSH服务器的...
在IT领域,NAT(网络地址转换)与Squid(一种代理服务器)的结合配置是一种常见的技术手段,用于提供内部网络对互联网的访问控制、流量管理以及安全性增强。以下是对这一主题的深入探讨,包括NAT与Squid的基本概念、...
二、Squid+ICAP环境搭建 1. 安装ICAP服务器 例如,你可以使用mod_security作为ICAP服务器,它提供内容过滤功能。首先,安装mod_security: ```bash sudo apt-get install libapache2-mod-security2 # Ubuntu/...
通过上述步骤,您可以成功搭建一个基于squid+iptables的透明代理服务器,实现内部网络用户的访问控制。这种配置不仅能够满足企业级的网络管理需求,还能够提高网络安全性和管理效率。对于初学者而言,本教程提供了...
RHEL5下Squid+IPtables经典案例
基于 RedHat Linux 9.0 的 Squid 和 iptables 透明代理...本文档详细介绍了在 RedHat Linux 9.0 环境下使用 Squid 和 iptables 搭建透明代理服务器的过程,旨在帮助读者快速搭建一个高速、支持多协议的透明代理服务器。
在本文中,我们将详细介绍如何在CentOS 5.5系统上使用Squid 3.0和iptables实现这一功能。 首先,我们需要安装Squid代理服务器。在CentOS系统中,可以使用`yum`命令直接安装Squid 3.0: ```bash yum install squid-...
在实际应用中,iptables 可以与代理服务器(如 squid)结合,以获得更加好的安全性。此外,iptables 也是一个非常灵活的工具,可以根据不同的需求进行配置和调整。 iptables 是一个功能强大且灵活的工具,能够满足...
在单网卡环境中配置 Squid 透明代理,主要涉及到 Squid 配置文件的修改和 iptables 规则的设置。 首先,我们来看一下基本的拓扑结构。在这个例子中,Squid 服务器只有一个网卡,IP 地址为 192.168.220.128,它通过...
squid代理服务器、iptables防火墙(安全)的设置和各自的功能
#### 一、Squid 概述 Squid 是一款广泛应用于互联网数据缓存的开源软件。其主要功能是接收来自客户端的请求,并根据请求内容,从远程服务器获取数据后缓存至本地。当下次再次请求相同的数据时,Squid 可直接从本地...
Squid 是一个广泛使用的开源代理服务器,主要功能是作为缓存代理,用于提高网络访问速度和效率。它支持多种协议,包括 HTTP、HTTPS、FTP 和 gopher,使得 Squid 成为互联网流量管理和优化的重要工具。在企业环境中,...
#### 一、Squid 透明代理概述 透明代理是一种代理服务器的工作模式,在这种模式下,客户端无需进行任何配置就能通过代理服务器访问互联网资源。Squid 作为一款广泛使用的高性能代理缓存软件,支持多种代理方式,...
最后,使用 iptables 进行端口重定向,将目标服务器的服务端口转发到 Squid 的监听端口。 需要注意的是,Squid 的反向代理功能依赖于 DNS 解析,不能仅通过 `/etc/hosts` 文件来解析域名。这个配置适用于 Squid 2.6...