安装squid_「首席推荐」设置Squid转发代理或者正向代理

b2010390c35f05e073e8bcdf8f893394.png

如果您正在阅读这篇文章,您可能会因为缺少与Squid相关的信息而感到沮丧,Squid是一种非常流行的转发代理。这些令人沮丧的事情包括:在小的软件修订之后出现的重大的可用性变化,对幕后发生的事情的误解,以及真正糟糕的文档。这是一个全面的入门,它将使你和鱿鱼。

首先,为什么要使用转发代理?在过去,在将所有连接发送到internet之前终止所有代理上的连接是非常流行的。这在企业中已经不那么流行了,但有时您可能仍然会遇到这种情况。然而,Squid可以做的远不止截获纯文本通信——它还可以对SSL/TLS通信进行实时解密,并且可以采用两种不同的配置,这些配置具有各自的安全含义。

转发代理有两种子类型——显式和隐式,代理SSL/TLS通信有两种方式——终止和不终止。这四种组合中的任何一种都是可能的,并且每种都有自己的需求集。显式v.隐式只是指客户端是否必须在其端指定(并可能验证)转发代理。在这种情况下,客户知道这正在发生。它使用CONNECT消息与代理进行接口,并帮助它协商到目的地的连接。

另一方面,隐含的联系更棘手,也更危险。在这个配置中,代理正在执行在另一个上下文中被认为是中间人攻击的操作。客户端完全不知道,他们的通信正在发送的某个地方伪装成目的地,对他们的通信进行解密,然后重新加密后发送到真正的目标服务器。响应也被动态捕获,并发送回原始服务器。正如我们所知,SSL/TLS通过使用非对称加密来保护与私钥的通信安全,并通过维护受信任公钥的注册表来防止中间人攻击。隐式转发代理绕过了这两种保护(尽管常常是故意的,有时甚至是安全的)。客户机没有显式地指定连接,而是像往常一样发送它的流量。在上游的某个地方,流量实际上是由第三层设备路由到代理的,然后代理将流量发送到另一个接口,以避免在另一端被检测到。它提供了一个对任何域都有效的证书,这些域是在请求实时到达时生成的,由于客户端需要被配置为信任代理使用的同一根CA证书,因此将允许连接。(请记住,作为根证书受信任的任何证书都可以为任何和所有域和路径签署有效的证书,而不仅仅是自己的。)

fffa7a3e1fd052edd7eee26bfe710b07.png

然而,这种配置非常有用。因为代理终止连接并与目的地重新协商,所以它实际上可以更改在飞行中使用的加密类型。假设您有使用Java 6的旧软件。你可以把前面的鱿鱼代理服务器,允许它实现PCI遵从性,即使软件只能使用TLS通过普通HTTP或HTTPS通信v1(目前不一致),代理将对交通使用TLS 1.2黄金标准。

b07dc0fa186bccf0eb99dd587707f281.png

如何配置这样的配置?当然,这可能会有点麻烦。对于每个操作系统来说也是不同的,但是基础是相同的。这并不适合胆小的人,需要一些在Linux中编译软件的经验。

712c36c2559ee5b7133a1bf460a12787.png

在撰写本文时,最好的版本是Squid 3.5。从项目网站下载并解压到一个目录。您的linux发行版将需要gcc、make和其他潜在的开发环境工具。特别是在ubuntu上,安装build-essential应该覆盖你。你需要在这个盒子上加两个网卡,这样你才能在它们之间进行NAT。

您需要创建一个用户,名为:squid。

adduser squid

确保使用这些标志正确链接到所需的库。

./configure

--prefix=/usr

--exec-prefix=/usr

--includedir=/usr/include

--datadir=/usr/share

--libdir=/usr/lib64

--libexecdir=/usr/lib64/squid

--localstatedir=/var

--sysconfdir=/etc/squid

--sharedstatedir=/var/lib

--with-logdir=/var/log/squid

--with-pidfile=/var/run/squid.pid

--with-default-user=squid

--enable-silent-rules

--enable-dependency-tracking

--with-openssl

--enable-icmp

--enable-delay-pools

--enable-useragent-log

--enable-esi

--enable-follow-x-forwarded-for

--enable-auth

--enable-ssl-crtd

--disable-arch-native

--with-openssl

接下来是make,然后是make install。

您需要生成自己的CA。

cd /etc/squid

mkdir ssl_cert

chown squid:squid ssl_cert

chmod 600 ssl_cert

cd ssl_cert

openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -keyout myCA.pem -out myCA.pem

您可以确定您的CA的有效期应该超过1年。

openssl x509 -in myCA.pem -outform DER -out myCA.der

你的squidconf应该是这样的:

#

# Recommended minimum configuration:

#

# Example rule allowing access from your local networks.

# Adapt to list your (internal) IP networks from where browsing

# should be allowed

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 localnet src 127.0.0.1

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

sslproxy_cert_error allow all

#disable this in production, it is dangerous but useful for testing

sslproxy_flags DONT_VERIFY_PEER

#

# Recommended minimum Access Permission configuration:

#

# Deny requests to certain unsafe ports

http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports

http_access deny CONNECT !SSL_ports

# Only allow cachemgr access from localhost

http_access allow localhost manager

http_access deny manager

# We strongly recommend the following be uncommented to protect innocent

# web applications running on the proxy server who think the only

# one who can access services on "localhost" is a local user

#http_access deny to_localhost

#

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

#

# Example rule allowing access from your local networks.

# Adapt localnet in the ACL section to list your (internal) IP networks

# from where browsing should be allowed

http_access allow localnet

http_access allow localhost

# And finally deny all other access to this proxy

http_access deny all

# Squid normally listens to port 3128

http_port 3128

# Uncomment and adjust the following to add a disk cache directory.

#cache_dir ufs /var/cache/squid 100 16 256

# Leave coredumps in the first cache dir

coredump_dir /var/cache/squid

http_port x.x.x.x:3129 ssl-bump

cert=/etc/squid/ssl_cert/myCA.pem

generate-host-certificates=on dynamic_cert_mem_cache_size=4MB

#this is what generates certs on the fly. Point to the CA you generated above.

https_port x.x.x.x:3130 ssl-bump intercept

cert=/etc/squid/ssl_cert/myCA.pem

generate-host-certificates=on dynamic_cert_mem_cache_size=4MB

acl step1 at_step SslBump1

ssl_bump peek step1

ssl_bump stare all

ssl_bump bump all

always_direct allow all

#

# Add any of your own refresh_pattern entries above these.

#

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服务。确保/var/log/squid中没有错误

你可以使用以下命令:

sudo netstat -peant | grep ":3130"

以确保squid已经成功地连接到端口。

此命令需要在每次启动时应用到NAT流量,该流量将被路由到IP上的端口443(在您的原始设备上使用静态路由y.y.y)。y或上一个网络组件)监听到的乌贼正在监听另一个NIC绑定到的乌贼(x.x.x.x)

iptables -t nat -I PREROUTING -p tcp --dport y.y.y.y:443 -j DNAT --to x.x.x.x:3130

假设客户机信任根证书,squid代理将透明地代理所有发送到出站的连接。

原文:https://www.ssltrust.com.au/help/setup-guides/setup-squid-proxy

本文:https://pub.intelligentx.net/setup-squid-forward-proxy

讨论:请加入知识星球【首席架构师圈】或者飞聊小组【首席架构师智库】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android压缩图片质量,Android 图片质量压缩有关问题

Android 图片质量压缩问题本帖最后由 u013064347 于 2014-01-13 10:22:47 编辑网上看到一个图片质量压缩法,传入1M以内图片能正常压缩,但是传入2M多的图片就报内存溢出,应该怎么解决?附上代码Bitmap imagesBitmapFactory.decodeFi…

python标准库os_Python基础--人们一些最爱的标准库(sys os fileinput)

这篇博客就介绍介绍常见的、人们钟爱的python中的标准库。 sys 从字面上也能看出来,是system的缩写。这个模块能够访问与python解析器紧密联系的变量和函数。 argv 命令行参数 exit 退出当前程序 modules 映射模块名到载入模块的字典 path 目录 platform 平台标识符…

android区域截图app,【干货】最新App应用市场截图尺寸大全

今天给大家分享最新的干货,刚好碰上这段时间设计市场截图,所以给各位设计新人,分享本人整合的尺寸大全,希望对你们的设计之路有所帮助。一、IOS App Store尺寸尺寸(机型) 大小(px)3.5寸(iphone4/4s)…

python如何运行一个python程序_在python中,如何运行一个命令行程序,它在发送Ctrl+D之前不会返回...

由于没有人提供任何代码来帮助解决这个问题,我将做如下的事情。结果发现pexpect非常强大,而且您不需要signal模块。在import os import sys import pexpect def run_server(): server_dir /path/to/server/root current_dir os.path.abspath(os.curdir…

android app外唤起,Android 唤起app的多种方式

方式一(通过Intent唤起):我们自己的app代码:ComponentName componetName new ComponentName("com.lh.jimtrency.webviewdemo","com.lh.jimtrency.webviewdemo.MainActivity");//(另外一个应用程序的包名,要启动的Activi…

2018python做图形界面哪个库简单_2018年常见的python编程开发库都有哪些类型

python编程开发可以说是目前比较热门的一项编程开发语言了,而今天我们就一起来了解一下,关于python编程都有哪些常见的python库可以使用。1、TensorFlow “TensorFlow是一个使用数据流图进行数值计算的开源软件库。图形节点表示数学运算,而图…

android条形图,MPAndroid组条形图未显示

这个问题已经在这里有了答案:????????????>????????????How to check if activity is in foreground or in visible background?????????????????????????????????????22个这是我用于使用MPAndroi…

c++ socket线程池_java 网络编程,Socket编程

Java的网络编程主要涉及到的内容是Socket编程,那么什么是Socket呢?简单地说,Socket,套接字,就是两台主机之间逻辑连接的端点。TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应…

android签名忘记密码,修改Android签名证书keystore的密码、别名alias以及别名密码

之前在测试Eclipse ADT的Custom debug Eclipse ADT的Custom debug keystore所需证书规格,提到过自定义调试证书的密码和1. 首先当然是先复制一份正式证书出来作为要修改为的临时调试证书。2. 修改keystore密码的命令(keytool为JDK带的命令行工具):keytoo…

python列表转换成数字_Python中列表元素转为数字的方法分析

本文实例讲述了Python中列表元素转为数字的方法。分享给大家供大家参考,具体如下: 有一个数字字符的列表: numbers [1, 5, 10, 8] 想要把每个元素转换为数字: numbers [1, 5, 10, 8] 用一个循环来解决: new_numbers …

android 绘图软件,安卓最强大的绘图软件 妙笔生花最新评测

妙笔生花——绘画体验(一)看过使用教程之后,就能进入到真正的功能页面了。功能页面的首页只有一个按钮,点击页面下端的这个按钮之后,就能跳出功能强大的工具选择页面。【妙笔生花】——工具选择页OK,接下来,小编会使用…

识别物体是否存在_【科学实践Vol.1】带你玩转“人脸识别”

随着时代的发展,人脸识别在我们的生活中变得随处可见:商场里的人脸识别储物柜,校园里的人脸识别刷卡机,手机里的面部解锁……这些应用极大的便利了我们的日常生活。今天,就让我们一起走进人脸识别的原理世界。首先我们…

html 自动适应手机屏幕大小,HTML5 canvas自适应手机屏幕大小的一种解决方案

一、最终效果为了不浪费大家时间,先展示最终效果,看看是不是大家需要的解决方案:标准分辨率:其他分辨率的适配情况:二、需求1.canvas的内容能全部展示在屏幕上2.尽量能保证图像不变形3.绘制的文字也能自适应三、解决方…

编写一个能够排序的函数模板。_LeetCode刷题——9.给出n对括号,请编写一个函数来生成所有的由n对括号组成的合法组合...

难度(medium)题目描述:给出n对括号,请编写一个函数来生成所有的由n对括号组成的合法组合。例如n3,解集为: "((()))", "(()())", "(())()", "()(())", "()()()" 思路&#xf…

html5怎么产生手风琴效果,Html5 js如何实现手风琴效果

Html5 js如何实现手风琴效果发布时间:2020-08-03 09:54:10来源:亿速云阅读:92作者:小猪这篇文章主要为大家展示了Html5 js如何实现手风琴效果,内容简而易懂,希望大家可以学习一下,学习完之后肯定…

c++进制转换_一文了解进制之间的原理和转换

点击这段文字: 获取2020年,最强Python学习资料进制这块,可以做简单的了解。生活中我们使用的数字都是十进制的,而二进制是机器能够识别的最直接的语言。但是二进制又太大,记录起来非常的不方便。所以通常会将二进制转化…

用HTML做一个简单的web登录页面,简单的JavaWeb注册登录案例

简单的JavaWeb注册登录案例1.注册页面register.htmlregister姓名:电话:邮箱:qq:2.注册案例实现程序register.java/*** 注册案例实现程序* author lucky**/public class register extends HttpServlet {public void doGet(HttpServ…

一层循环时间复杂度_算法的时间与空间复杂度(一看就懂)

算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。那么我们应该如何去衡量不同算法之间的优劣呢&…

用ajax替换html代码,替换Ajax响应一个div的内部HTML(Replace inner HTML of a div w

我试图一些时间间隔后改变一个div的内部HTML。 我得到我想要使用Ajax正确的反应。 但无法取代内HTML的后,并用Ajax响应地选择。 什么是错我的代码..HTML51 seconds ago58 seconds ago.....10 minute agoĴ查询setInterval(function() {$( ".time" ).each(…

java 审批流_一文读懂工作流

网上关于工作流引擎有比较多的简介,也有很多工作流的实际应用场景。本文结合笔者多年对工作流的经验来阐述一下对工作流的理解。一、什么是工作流?先贴上wiki百科对于工作流的定义工作流(Workflow),是对工作流程及其各…