SQUID代理在RHEL5 / CentOS  - 你应该知道的一切[第1部分]

SQUID Proxy on RHEL5 / CentOS - 您应该了解的一切[第1部分]

代理服务器的主要特征或义务可以是从客户端接收HTTP请求并将请求转发到目的地并将答复中继到请求者的网关。

Squid是最受欢迎的开源软件,将其带给我们。 它还具有一些很好的功能,可用于执行诸如Web访问控制,带宽控制,限制策略以及内容缓存和过滤等其他操作。 实际上,人们安装SQUID来追求2个目标:首先通过内容缓存来减少带宽费用,其次是限制对特定内容的访问。

以下指南说明了使用Squid的优势,并将介绍如何在RHEL5和CentOS Linux上安装,配置,控制和维护Squid代理服务器。

***注意:本指南或教程或您喜欢的任何内容都是基于我的个人经历,我保证100%表示它对我来说是一种魅力。 所以如果你安装这个软件,由于任何原因你有技术上的困难,只是发布评论,我会和你一起解决。 ***

只是你应该知道的东西:
配置文件中的规则行之前的'#'哈希符号将禁用该规则。
如果需要使用代理服务器,您需要修改客户端计算机上的浏览器设置,例如:IE> Internet选项> Lan设置>启用代理服务器复选框>设置Squid代理服务器和端口的IP地址(默认为3128 )。

之前:如果您不确定是否安装了Squid,请键入以下命令:

# rpm -q squid
squid-2.6.STABLE6-5.el5_1.3     //this means you have squid installed on your box and do not need to install, so prepare your self for the configuration.

要在RHEL5 / CentOS上安装,请键入以下命令:

# yum install squid

如果你不能使用yum,那么尝试这样:

首先从http://www.squid-cache.org/ (官方squid网站)下载最新版本的squid并将其移至/ tmp

# cd /tmp
# rpm -ivh squid-2.6.STABLE.rpm

这将在其目录中安装squid配置和二进制文件。 之后使用此命令在系统引导时自动运行程序:

# chkconfig --level 35 squid on     // runlevel 3 is for running squid on text based and 5 is for running on x environments

好的,现在是时候开始服务了:

# service squid start

对于配置,您需要根据您的Linux版本打开配置文件,对于RHEL5 / CentOS,请执行以下操作:

# vi /etc/squid/squid.conf
就是这样,你可以在这里定义大多数参数,记住启动或重启服务或查看日志文件时可能会看到这个错误:

警告:无法确定此机器的公共主机名。 请配置一个或设置'visible_hostname'。

这意味着主机名未正确定义,您需要更改配置文件中的 visible_hostname 。需要更改缓存服务器的身份或排除故障或查看日志。所以改变它之前的任何其他像这样:
visible_hostname youcl

您可以看到http_port 3128 ,这意味着Squid监听来自此端口上HTTP客户端的请求。

访问控制列表(ACL)

ACL用于限制使用,限制主机的Web访问; 每个ACL行定义一种特定类型的活动,例如访问时间或源网络,之后我们需要将ACL链接到http_access语句,该语句告诉Squid是否拒绝或允许与ACL匹配的流量。

当您第一次安装Squid时,您需要添加一些acls以允许您的网络使用互联网,因为squid默认拒绝Web访问。

ACL的语法如下所示:

acl aclname acltype value
aclname = rulename (it could be some desire name like mynetwork)
acltype = type of acl like : src, dst (src:source ip | dst:destination ip)
value = it could be ip address, networks, URLs ,...
这个例子将允许localhost访问互联网:
acl localhost src 127.0.0.1/32
http_access allow localhost

我们允许与localhost ACL中包含的ip地址范围匹配的计算机访问互联网。 还有其他ACL和ACL操作符可用于Squid,但这对于实践是有好处的。

所以用这个语法,你现在可以告诉Squid如何工作。 假设你想允许你的192.168.1网络范围访问互联网,你可以这样做,但首先打开配置文件,找到这些行:

http_access allow localhost 
http_access deny all 

将它们替换为:

acl mynetwork src 192.168.1.0/24 
http_access allow localhost 
http_access allow mynetwork 
http_access deny all 

注意:指定http_access行之前的所有规则。 之后,保存文件并重新启动squid服务。

(如果您使用vi编辑器使用此功能保存退出> 1按ESC键2键入“:x”而不用引号,然后按Enter键。)

# service squid restart

请记住,重新启动squid服务后,您可能会在配置中使用“/ 24”时出现错误,如果不行,您可以轻松地将/ 24更改为/255.255.255.0 ,并在重新启动整个网络后重新启动squid服务其使用IP地址192.168.1.1192.168.1.254可以访问互联网。

你可能会问自己关于允许互联网到大家除了特定的ip地址,实际上这是一个好的开始,带来一些乐趣:)。 好的,这样做打开配置文件,做如下:

acl bad_employee src 192.168.1.18
http_access deny bad_employee
acl mynetwork src 192.168.1.0/24
http access allow mynetwork

在上述示例中,整个网络将被允许使用互联网,除了被阻止的人(bad_employee) 。 记住Squid从上到下解释规则,所以你需要小心。

您可以为公司创建限制规则,并将其分配给您创建的mynetwork acl,如下所示:

acl mynetwork src 192.168.1.0/24
acl business_hours time M T W H F 9:00-17:00
acl bad_employee src 192.168.1.18
http_access deny bad_employee
http_access allow mynetwork business_hours

日 - 缩写:S - 星期日M - 星期一T - 星期二W - 星期三H - 星期四F - 星期五 - 星期六

您也可以阻止特定的URL:

acl block_site dst www.yahoo.com
http_access deny block_site

www.yahoo.com将被过滤BUT mail.yahoo.com是开放的,因为我们阻止yahoo.com ,所以如果你想阻止一个单一的url和它的子域,我们这样做:

acl block_domain dstdomain .yahoo.com
http_access deny block_domain

而且,您可以阻止一个URL,如果您想阻止多个单个域,我们需要创建一个文件来保存特定的URL,并为此文件读取权限如下所示:

# touch /etc/squid/block_list.txt
# chmod 444 /etc/squid/block_list.txt 
# vi /etc/squid/block_list.txt

输入一些要阻止的URL:

www.sxx.com
www.yahoo.com
www.hotmail.com

然后保存并退出,现在是制定规则的时候了。 打开配置文件并将这些参数放入其中:

acl block_list url_regex "/etc/squid/block_list.txt"
http_access deny block_list

您可以阻止包含意外字词的网址如下所示:

acl blockword url_regex sxx
http_access deny blockword

(您可以阻止不区分大小写的字词:-i sxx)

您可以阻止.exe文件的下载:

acl block_exe url_regex .*\.exe$
http_access deny block_exe

如果要阻止更多扩展程序下载,您可以按照前面所述指定所有文件(完全像某些要阻止的URL部分)。

您可以阻止TLD(.br .eu):

acl block_tld dstdom_regex \.br$
http_access deny block_tld

您可以配置squid从ncsa_auth用户读取符合NCSA的加密密码文件提示用户名和密码,因此:

# htpasswd -c /etc/squid/squid_passwd your_username
enter pass : your_password
# chmod o+r /etc/squid/squid_passwd

打开配置文件并将这些行放入其中并更改为您自己的配置:

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd
acl ncsa_user proxy_auth REQUIRED
http_access allow ncsa_user

如果您不想修改浏览器以使用代理,则有一种称为“透明代理”的方法 ; 使用这个你需要这样做:

之前的squid版本2.6:

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Squid版本2.6到3.0:

http_port 3128 transparent

Squid版本3.1+:

http_port 3128 intercept

感谢您抽出时间阅读本指南,希望对您有所帮助。

本指南是第1部分,第2部分将了解“内容缓存”“负载平衡”“带宽管理”“Squid日志”“Nmap”“监视[由用户访问的URL”等等。 .. ..

玩的开心! :)

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏