CentOS7安装Squid代理服务

在Ubuntu 18.04/CentOS 7上安装Squid代理

Squid代理包可从Ubuntu存储库获得,它可以通过运行命令来安装:

$ sudo apt-get install squid

对于CentOS 7系统,运行:

$ sudo yum install squid

简单配置Squid代理服务器

Squid最简单的配置是作为转发代理服务器,在这种情况下,它将从你的服务器接收所有请求并相应地转发它们,要配置Squid,请编辑/etc/squid/squid.conf文件中包含的指令:

$ sudo vim /etc/squid/squid.conf

步骤1:为内部可信网络定义ACL

在行acl CONNECT之后添加ACL:

acl lan src 192.168.18.0/24

在Ubuntu 18.04/16.04/CentOS 7上安装和配置Squid代理的方法

然后允许基于上面定义的ACL进行访问,在 http_access allow localhost manager 之后添加:

http_access allow lan

在Ubuntu 18.04/16.04/CentOS 7上安装和配置Squid代理的方法

步骤2:配置要匹配的客户端标头请求

这应该放在TAG: request_header_access部分下:

request_header_access Via deny all
request_header_access X-Forwarded-For deny all
request_header_access Referer deny all
request_header_access Cache-Control deny all

这将关闭标题,Via和Forwarded-For字段配置为指示请求由代理转发,这可以通过泄露我们正在使用代理的信息来暴露你的真实IP。

要删除更多可以向你公开的标头,请添加:

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

重新启动squid代理服务:

$ sudo systemctl restart squid

系统启动时启用该服务:

$ sudo systemctl enable squid

squid使用的默认服务端口是3128,如果要更改它,请修改该行:

http_port 3128

重启服务然后查看该端口是否启用

ss -tunelp | grep 3128

第3步:配置防火墙服务

对于Ubuntu或CentOS上运行的防火墙服务,打开防火墙上的端口,

$ sudo firewall-cmd --add-service=squid --permanent
$ sudo firewall-cmd --reload

或者:

$ sudo ufw allow 3128/tcp

使用代理请参考 Ubuntu设置代理

高级设置

设置Squid

Squid 的配置文件为 /etc/squid/squid.conf

在进行任何更改之前,请备份原始配置文件:

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

默认情况下,Squid设置为侦听服务器上所有网络接口上的3128端口。

如果要更改端口并设置侦听接口,请找到以http_port开头的行,并指定接口IP地址和新端口。如果没有指定接口,Squid将监听所有接口。

# Squid normally listens to port 3128
http_port IP_ADDR:PORT

在所有接口和默认端口上运行Squid应该适合大多数用户。

默认情况下,Squid只允许从localhost和localnet访问。如果将使用代理的所有客户端都具有静态IP地址,则可以创建包含允许的IP的ACL。

创建一个新的专用文件来保存IP,而不是在主配置文件中添加IP地址。

创建 /etc/squid/allowed_ips.txt

内容为

192.168.33.1

编辑/etc/squid/squid.conf文件

# ...
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从上到下读取规则,当规则匹配时,不处理下面的规则。

更改配置文件时,都需要重新启动Squid服务才能使更改生效:

systemctl restart squid

Squid身份验证

Squid可以对经过身份验证的用户使用不同的后端,包括Samba、LDAP和HTTP基本身份验证。

我们将配置Squid使用基本身份验证,它是HTTP协议中内置的简单身份验证方法。

1.我们将使用openssl生成密码,并使用tee命令将username:password附加到 /etc/squid/htpasswd文件,如下所示:

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

例如,要创建一个名为“mike”且密码为“Pz$lPk76”的用户,你将运行:

printf "mike:$(openssl passwd -crypt 'Pz$lPk76')\n" | sudo tee -a /etc/squid/htpasswd
mike:2nkgQsTSPCsIo

2.设置Squid以启用HTTP基本身份验证并使用该文件。

打开/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

通过前三个突出显示的行:

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/htpasswd
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED

我们将创建一个名为authenticated的新ACL,最后突出显示的http_access allow authenticated行允许访问经过身份验证的用户。

重启Squid服务

systemctl restart squid

参考

  1. 在Ubuntu 18.04/16.04/CentOS 7上安装和配置Squid代理的方法
  2. 在CentOS 7操作系统上安装及设置Squid代理的过程

results matching ""

    No results matching ""