「Squid」- 搭建HTTP与HTTPS代理

更新日期:2019年09月19日
@PROXY

内容简介

本文介绍如何使用Squid搭建HTTP与HTTPS代理,并带有基础认证(Digest Access Authentication)功能。

测试环境

CentOS Linux release 7.5.1804 (Core) 成功
Kali GNU/Linux Rolling 成功

服务部署


#1 安装服务

#!/bin/sh

################################################################################
# Debian
################################################################################
apt-get install -y squid apache2-utils

################################################################################
# CentOS
################################################################################
yum install -y squid httpd-tools

#2 配置服务

#!/bin/sh

################################################################################
# 创建必要的目录
################################################################################
mkdir -pv /etc/squid/conf.d/

################################################################################
# 定义认证信息(Digest Access Authentication)
################################################################################
htdigest -c /etc/squid/password.digest public foo

################################################################################
# 定义配置文件
################################################################################
cat <<EOF > /etc/squid/conf.d/09-forward-proxy.conf
# 在Debian中,取消该行注释
# auth_param digest program /usr/lib/squid3/digest_file_auth -c /etc/squid/password.digest

# 在CentOS中,取消该行注释
auth_param digest program /usr/lib64/squid/digest_file_auth -c /etc/squid/password.digest

auth_param digest realm public
acl acl_require_auth proxy_auth REQUIRED
http_access allow acl_require_auth
EOF

################################################################################
# 引入配置文件(在CentOS中需要执行,而Debin已经默认引入)
################################################################################
cat <<EOF >> /etc/squid/squid.conf

# 留个空行,防止配置文件最后一行没有换行
include /etc/squid/conf.d/*.conf
EOF

################################################################################
# 注释某些配置行(在CentOS中需要执行,而Debin可能需要检查一下)
################################################################################
sed -i 's/http_access deny all/# http_access deny all/g' /etc/squid/squid.conf

################################################################################
# 开启IPv4监听(默认只监听IPv6)
################################################################################
sed -i 's/http_port 3128/http_port 0.0.0.0:3128/g' /etc/squid/squid.conf

#3 启动服务

#!/bin/sh

systemctl start squid.service

#4 测试

#!/bin/sh

curl -O -x http://squid.example.com:3128 --proxy-digest -U 'username:password'  \
    https://needproxy.example.com


## 补充说明

(1)道理上讲,我应该解释以下参数的含义,但是配置文件(squid.conf)的注释中已经解释的很清除了。
(2)你要留意配置文件(squid.conf)中有没有http_access deny all配置行,尤其是在CentOS中。

附加说明

在HTTPS代理中,客户端与代理服务器,先通过CONNECT发起连接,然后进行认证,而这个过程还没有建立SSL连接,密码是明文的。

另外,由于HTTPS代理只是形成了一个TCP隧道,所以远程服务器看到的是代理服务器的IP地址,而看不到客户端的IP地址。除非代理服务器拥有了证书。

相关链接

Using Basic Auth HTTPS_PROXY over HTTP
Authenticating a Proxy server over HTTPS

参考文献



Backlinks: 03.Networks and Protocols:1.Computer networking:Proxy:HTTP and HTTPS Proxy

ToC

内容简介

测试环境

服务部署

#1 安装服务

#2 配置服务

#3 启动服务

#4 测试

## 补充说明

附加说明

相关链接

参考文献