在Ubuntu 20.04上安装和配置Squid Proxy Server

时间:2020-02-23 14:39:12  来源:igfitidea点击:

Squid是一个代理和缓存服务器。
它通过将请求转发到所需目的地,但还可以保存所请求内容的代理。
如果另一台服务器在其上留下相同的信息,它尚未过期在Squid Server中,则它对请求者提供相同的内容,因此,提高下载速度并在带宽上保存。

Squid Proxy Server支持通过不同协议请求的内容缓存,例如HTTP,SSL请求,DNS查找和FTP。
此引导座椅介绍如何在Ubuntu 20.04上安装和配置Squid代理

Ubuntu 20.04上的Squid Proxy Server

首先,更新系统包。
请注意,对于所有命令,我将作为root用户身份运行它们

sudo apt-get update
sudo apt-get upgrade

接下来,在Ubuntu 20.04上安装Squid代理。
在Ubuntu 20.04中安装Squid Proxy很容易,因为它已在Ubuntu 20存储库中提供。
使用以下命令确认此功能。

sudo apt-cache policy squid

输出

要安装Squid代理,请运行以下命令。
还启用启动系统启动,然后检查状态

sudo apt-get install -y squid
sudo systemctl start squid
sudo systemctl enable squid
sudo systemctl status squid

如果鱿鱼已正确安装和运行,则应输出如图所示:

在Ubuntu 20.04上配置Squid Proxy Server

默认的squid代理配置文件在/etc/squid/squid.conf中找到。
该文件已有许多设置在最低限度,但我们可以修改以适应我们的偏好。
首先,创建原始文件的备份。

sudo cp /etc/squid/squid.conf  /etc/squid/squid.conf.orig

现在,在/etc/squid/squid.conf中进行自定义设置。
使用首选文件编辑器打开文件

sudo vim /etc/squid/squid.conf

1.更改鱿鱼默认端口

默认的Squid TCP端口为3128.更改此,打开Squid.conf文件并查找HTTP_PORT行。
更改为我们所需的端口号并保存文件。

#http_port 3128
http_port 8080

确保允许防火墙允许端口

sudo ufw allow 8080/tcp
sudo ufw enable

2.设置Squid缓存内存大小

要设置所需的缓存内存,请使用下面的设置。
对于我的案子,我正在使用256 MB

cache_mem 256 MB

3.指定要使用的DNS名称服务器

要定义自己的DNS服务器,请使用该命令如图所示

dns_nameservers 8.8.8.8 8.8.4.4

4. Squid ACL和HTTP_ACCESS

现在,编辑squid.conf添加我们选择的规则。
代理服务器选择通过它的内容。
我们可以允许从特定网络/IP地址访问并拒绝其他人。
它也可用于通过限制对某些站点的访问或者通过基于某些关键字阻止内容来过滤流量。
这是通过使用ACL(访问控制列表)来实现的,该ACL定义允许的内容以及拒绝的内容。
http_access根据ACL定义允许或者拒绝。

如何为Squid代理服务器定义ACL

ACL(访问控制列表)是定义允许通过代理服务器以及拒绝的内容的语句。
每个语句都必须以ACL开头,然后是规则的名称。
姓名是ACLTYPE之后,最后是参数或者文件。
在使用文件的情况下,文件中的每一行都必须仅包含一个项目。

acl aclname acltype argument..
acl aclname acltpe “file”…

默认定义的ACL规则如图所示。
可以选择通过在每行的开头添加来禁用。
要创建新规则,请按照以下示例进行操作:

示例1:允许LAN网络通过Squid Proxy Server

创建ACL规则

acl my_lan src 192.168.100.0/24

现在,使用Http_Access指令允许或者拒绝基于已定义的规则。
在我们的情况下,我们需要允许

http_access allow my_lan

请注意,每次创建ACL访问规则时,最后规则都应该是拒绝全部。
当我们允许所有所需站点否则我们可能会阻止我们访问一些所需的时,应完成这一点。

http_access deny all

如何拒绝访问Squid代理服务器中的特定

在处理许多时,将所有站点放入文件中更容易,更符合文件,然后调用它,否则我们将在ACL规则中列出CITES。
在我们的示例中,我将在Squid目录中创建一个名为deniedsites.squid的文件。

sudo vim /etc/squid/deniedsites.squid

添加要拒绝访问的站点。
对于我的案子,我正在使用Facebook和YouTube。
保存文件后。

.facebook.com
.youtube.com

现在打开squid.conf并为拒绝站点创建ACL规则,并添加拒绝规则,然后保存文件。

acl deniedsites dstdomain “/etc/squid/deniedsites.squid”
http_access deny deniedsites

如果我们要列出ACL规则中的:

acl deniedsites dstdomain facebook.com youtubecom
http_access deny deniedsites

请注意,每次更改时,都必须重新启动Squid Server

systemctl restart squid

如何阻止在鱿鱼代理服务器中的某些关键字上的流量

创建包含关键词的文件。
使用文件名创建ACL规则拒绝流量。

sudo vim /etc/squid/keywords.squid.

添加关键字并保存。

gamble
nudes

编辑Squid.conf创建ACL并拒绝保存并记住重新启动Squid。

acl keywords url_regex -i "/etc/squid/keywords.squid"
http_access deny keywords

文件最终会显示添加如下所示。

对于ACL

对于http_access.

要在Squid Proxy Server中打开端口,请使用命令语法,如下所示

acl Safe_ports port <port-number>

如何在鱿鱼代理服务器上屏蔽传输流量

通过揭示代理IP地址而不是我们自己的代理IP地址来隐藏我们的身份。
但是,代理可以让我们的IP通过HTTP传出流量知道。
要禁用此操作,请编辑squid.conf文件并通过标题禁用。
要执行此操作,请使用#via查看该行。
取消注释并从off关闭。

# via on
via off

此外,代理服务器不应在转发的HTTP请求中添加客户端IP地址。
通过修改squid.conf文件中的以下行来禁用此功能。

为避免揭示鱿鱼代理服务器,可以删除Squid代理标题。
在标记下添加以下行; Request_header_Access。

request_header_access From deny all
request_header_access Server deny all
request_header_access WWW-Authenticate deny all
request_header_access Link deny all
request_header_access Cache-Control deny all
request_header_access Proxy-Connection deny all
request_header_access X-Cache deny all
request_header_access X-Cache-Lookup deny all 
request_header_access X-Forwarded-For deny all
request_header_access Pragma deny all
request_header_access Keep-Alive deny all

保存squid.conf文件并记住重新启动鱿鱼

systemctl restart squid

如何检查鱿鱼配置错误

下面的命令将指出配置文件中可能存在错误

sudo squid -k parse

如何配置客户端通过Squid代理服务器连接

配置用户身份验证

首先,让我们创建并允许用户通过Squid代理进行身份验证。
我们需要在squid.conf文件中启用HTTP身份验证。
安装apache2-utils。

apt install -y apache2-utils

创建将用于存储用户的文件。
我被称为'passwd'。
该文件应由代理拥有,该代理是默认的鱿鱼用户。

touch /etc/squid/passwd
chown proxy: /etc/squid/passwd

让我们添加一个名为lorna的用户

htpasswd /etc/squid/passwd lorna
New password:
Re-type new password:
Adding password for user lorna

现在在squid.conf文件中添加以下行。
添加,保存和重新启动鱿鱼后。

auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

要检查基本_NCSA_AUTH的位置是否确定我们使用的是正确的路径,并且我们不会得到错误。
使用以下命令:

dpkg -L squid | grep ncsa_auth

Squid文件应如下所示:

要测试Squid Proxy Server正在运行,请转到客户端Web浏览器,例如Firefox,并配置手动代理身份验证。
打开Firefox,点击最右侧的三个栏。
在"编辑"下,单击"首选项"。
单击网络设置下的设置。
在出现的页面上,手动代理配置单个单选按钮并填写代理服务器详细信息。
如果我们希望在"没有代理"下,我们可以为其他IP地址排除代理

现在确认Squid代理设置正在运行。
打开Firefox浏览器,并尝试搜索限制站点,例如youtube.com。
我们应该看到一个页面说'代理服务器垃圾连接'

现在打开另一个不受限制的。
我们应该提示我们进行身份验证,输入用户名和密码后,我们应该能够访问该站点。