如何在 CentOS 7上安装 Squid 代理服务

Squid 是 Linux 系统中最流行的一款开源代理服务软件,Squid 有很多的用途。它很好的支持目前流行的网络协议,如 HTTP,HTTPS,FTP 等。如果将 Squid 放置在网页服务器前端可以通过缓存来减少重复请求,从而过滤网页流量来提高服务器性能。当然也可以解除访问的地理位置限制。

如何在 CentOS 7上安装 Squid 代理服务插图

一、在 CentOS 7 中安装 Squid:

1、Squid 软件包以默认在 CentOS 7 存储库中。打开终端输入下面命令直接安装:

sudo yum install squid

2、安装完成后,启动 Squid 服务,并设置为开机自启:

sudo systemctl start squid
sudo systemctl enable squid

3、验证是否安装成功:

sudo systemctl status squid

输出结果:

如何在 CentOS 7上安装 Squid 代理服务插图1

二、配置 Squid:

1、可以通过编辑 /etc/squid/squid.conf 配置文件来配置 Squid,你也可以使用 include 指令包含单独的配置文件。squid.conf 配置文件包含描述每个配置选项功能的注释。进行任何更改之前,最好备份原始文件:

sudo cp /etc/squid/squid.conf{,.orginal}

2、要修改配置,请使用你喜欢的文本编辑器打开 /etc/squid/squid.conf 文件,这里我们使用 vim 编辑器:

sudo vim /etc/squid/squid.conf

3、默认情况下,Squid 侦听所有网络接口(网卡)的 3128 端口。如果要更改端口并设置监听接口,请找到以 http_port 开头的行,并指定接口IP地址和新的端口。如果未指定接口,Squid 将在所有接口(网卡)上侦听。对于大多数用户来说,在所有接口和默认端口上运行Squid就以足够。

# Squid normally listens to port 3128 
http_port 3128 

要修改的话,格式为:

# Squid normally listens to port 3128
http_port IP_ADDR:PORT

4、访问控制列表(ACL)使您可以控制客户端如何访问 Web 资源。

默认情况下,Squid 仅允许从本地主机访问。如果使用代理的客户端具有静态IP地址,最简单的方法是创建一个将包含允许的IP的 ACL。我们在配置文件同目录下将创建一个名为: allowed_ips.txt 的文件,来存储IP地址然后将它 inlcude 在主配置文件中,而不是在主配置文件中添加IP地址。

allowed_ips.txt 文件内容格式为:

192.168.16.8
192.168.16.9
# All other allowed IPs

然后打开主配置文件并添加一个名为 allowed_ips 的 ACL(第3行),并允许使用 http_access 指令(第7行)访问该 ACL:

# from where browsing should be allowed
# ...
acl allowed_ips  src "/etc/squid/allowed_ips.txt"
# ...
http_access allow localnet
http_access allow localhost
http_access allow allowed_ips
# And finally deny all other access to this proxy
http_access deny all

http_access 规则的顺序很重要。确保在 http_access deny all 之前添加 http_access 指令。工作方式与防火墙规则类似。 Squid 从上到下读取规则,当一个规则匹配时,后面的规则,将不进行处理。

5、无论何时对配置文件进行更改,都需要重新启动 Squid 服务以使更改生效:

sudo systemctl restart squid

三、Squid 认证

Squid 可以对身份验证的用户使用不同的后端,包括 Samba,LDAP 和 HTTP 身份验证。在此示例中,我们将 Squid 配置为使用 HTTP 身份验证。这是 HTTP 协议中内置的一种简单的身份验证方法。

1、我们将使用 openssl 命令生成密码,并通过 tee 命令和管道将 username:password 对追加到 /etc/squid/htpasswd 文件,如下所示:让我们创建一个名为 rabbit 的用户,其密码为 jI3dj75D(不超过8位),打开终端输入:

printf "rabbit:$(openssl passwd -crypt 'jI3dj75D')\n" | sudo tee -a /etc/squid/htpasswd

输出结果为加密后的密码:

rabbit:Qh62.FzrP7PH2

2、下一步是启用HTTP基本身份验证。使用 vim 编辑器打开主配置文件 /etc/squid/squid.conf 并添加以下内容:

# ...
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/htpasswd
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
# ...
http_access allow localnet
http_access allow localhost
http_access allow authenticated
# And finally deny all other access to this proxy
http_access deny all

通过第 2 3 4 行,我们将创建一个名为 authenticated 的新 ACL。 第 8 行是行允许访问经过身份验证的用户。

3、重新启动 Squid 服务生效:

sudo systemctl restart squid

标签

发表评论