如何在CentOS 7上使用Squid创建HTTP代理

网络代理已经存在了很长一段时间,并已被全球数百万用户使用。 它们具有广泛的用途,最受欢迎的是在线匿名,但还有其他方法可以利用网络代理。 以下是一些想法:

  • 在线匿名
  • 提高在线安全性
  • 改善加载时间
  • 阻止恶意流量
  • 记录您的在线活动
  • 规避区域限制
  • 在某些情况下可以减少带宽使用

Proxy Server如何工作

代理服务器是用作客户端和客户端可以从中请求资源的其他服务器之间的中介的计算机。 一个简单的例子是当客户端发出在线请求(例如想要打开网页)时,他首先连接到代理服务器。

然后代理服务器检查其本地磁盘缓存,如果可以在那里找到数据,它将把数据返回给客户端,如果没有缓存,它将使用代理IP地址代表客户端发出请求(不同于客户端)然后将数据返回给客户端。 代理服务器将尝试缓存新数据,并将其用于将来对同一服务器发出的请求。

什么是Squid代理

Squid是一个Web代理,用于我的各种组织。 它通常用作缓存代理,可缩短响应时间并减少带宽使用。

出于本文的目的,我将在Linode CentOS 7 VPS上安装Squid并将其用作HTTP代理服务器。

如何在CentOS 7上安装Squid

在我们开始之前,您应该知道Squid没有任何最低要求,但RAM使用量可能会有所不同,具体取决于通过代理服务器浏览Internet的客户端。

Squid包含在基本存储库中,因此安装简单明了。 但是,在安装之前,请确保您的软件包是最新的。

# yum -y update

继续安装squid,使用以下命令在系统启动时启动并启用它。

# yum -y install squid
# systemctl start squid
# systemctl  enable squid

此时,您的Squid Web代理应该已经运行,您可以使用以下方式验证服务的状态。

# systemctl status squid
样本输出
 squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2018-09-20 10:07:23 UTC; 5min ago
 Main PID: 2005 (squid)
   CGroup: /system.slice/squid.service
           ├─2005 /usr/sbin/squid -f /etc/squid/squid.conf
           ├─2007 (squid-1) -f /etc/squid/squid.conf
           └─2008 (logfile-daemon) /var/log/squid/access.log

Sep 20 10:07:23 youcl systemd[1]: Starting Squid caching proxy...
Sep 20 10:07:23 youcl squid[2005]: Squid Parent: will start 1 kids
Sep 20 10:07:23 youcl squid[2005]: Squid Parent: (squid-1) process 2007 started
Sep 20 10:07:23 youcl systemd[1]: Started Squid caching proxy.

以下是您应该注意的一些重要文件位置:

  • squid配置文件: /etc/squid/squid.conf
  • Squid访问日志: /var/log/squid/access.log
  • Squid缓存日志: /var/log/squid/cache.log

最小的squid.conf配置文件(没有注释)如下所示:

acl localnet src 10.0.0.0/8	# RFC1918 possible internal network
acl localnet src 172.16.0.0/12	# RFC1918 possible internal network
acl localnet src 192.168.0.0/16	# RFC1918 possible internal network
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80		# http
acl Safe_ports port 21		# ftp
acl Safe_ports port 443		# https
acl Safe_ports port 70		# gopher
acl Safe_ports port 210		# wais
acl Safe_ports port 1025-65535	# unregistered ports
acl Safe_ports port 280		# http-mgmt
acl Safe_ports port 488		# gss-http
acl Safe_ports port 591		# filemaker
acl Safe_ports port 777		# multiling http
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern .		0	20%	4320

将Squid配置为HTTP代理

在这里,我们将向您展示如何仅使用客户端IP地址进行身份验证,将squid配置为HTTP代理。

添加Squid ACL

如果您希望允许IP地址通过新的代理服务器访问Web,则需要在配置文件中添加新的acl访问控制列表 )行。

# vim /etc/squid/squid.conf

你应该添加的行是:

acl localnet src XX.XX.XX.XX

其中XX.XX.XX.XX是您要添加的实际客户端IP地址。 该行应添加到定义ACL的文件的开头。 在ACL旁边添加注释是一个很好的做法,它将描述谁使用此IP地址。

请务必注意,如果Squid位于本地网络之外,则应添加客户端的公共IP地址。

您需要重新启动Squid,以便新的更改生效。

# systemctl  restart squid

打开Squid代理端口

正如您在配置文件中看到的那样,只允许某些端口进行连接。 您可以通过编辑配置文件来添加更多内容。

acl Safe_ports port XXX

其中XXX是您要加载的实际端口。 同样,最好在旁边留下评论,以描述将要使用的端口。

要使更改生效,您需要再次重新启动squid。

# systemctl  restart squid

Squid代理客户端身份验证

在使用代理之前,您很可能希望用户进行身份验证。 为此,您可以启用基本的http身份验证。 配置简单快捷。

首先,您需要安装httpd-tools

# yum -y install httpd-tools

现在让我们创建一个文件,稍后将存储用于身份验证的用户名。 Squid使用用户“squid”运行,因此该文件应归该用户所有。

# touch /etc/squid/passwd
# chown squid: /etc/squid/passwd

现在我们将创建一个名为“proxyclient”的新用户并设置其密码。

# htpasswd /etc/squid/passwd proxyclient

New password:
Re-type new password:
Adding password for user proxyclient

现在配置autnetication打开配置文件。

# vim /etc/squid/squid.conf

在端口ACL之后添加以下行:

auth_param basic program /usr/lib64/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

保存文件并重新启动squid以使新更改生效:

# systemctl  restart squid

在Squid代理上阻止网站

最后,我们将创建一个最后的ACL ,以帮助我们阻止不需要的网站。 首先创建将存储列入黑名单的网站的文件。

# touch /etc/squid/blacklisted_sites.acl

您可以添加一些要阻止的域。 例如:

.badsite1.com
.badsite2.com

程序点告诉squid阻止对该站点的所有引用,包括www.badsite1subsite.badsite1.com等。

现在打开Squid的配置文件。

# vim /etc/squid/squid.conf

在端口ACL之后添加以下两行:

acl bad_urls dstdomain "/etc/squid/blacklisted_sites.acl"
http_access deny bad_urls

现在保存文件并重启squid:

# systemctl  restart squid

一旦配置正确,现在您可以配置本地客户端浏览器或操作系统的网络设置以使用您的squid HTTP代理。

结论

在本教程中,您学习了如何自己安装,保护和配置Squid HTTP代理服务器。 通过您刚刚获得的信息,您现在可以通过Squid为传入和传出流量添加一些基本过滤功能。

如果你想加倍努力,你甚至可以配置Squid在工作时间阻止一些网站,以防止分心。 如果您有任何问题或意见,请在下面的评论部分发布。

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

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

支付宝扫一扫打赏

微信扫一扫打赏