安装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区域截图app,【干货】最新App应用市场截图尺寸大全

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

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

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

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…

识别物体是否存在_【科学实践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),是对工作流程及其各…

postgresql 查询序列_时间序列数据库(TSDB)初识与选择

作者:码哥字节 如需转载联系我的公众号背景 这两年互联网行业掀着一股新风,总是听着各种高大上的新名词。大数据、人工智能、物联网、机器学习、商业智能、智能预警啊等等。以前的系统,做数据可视化,信息管理,流程控制…

concurrenthashmap实现原理_Mybatis:PageHelper分页插件源码及原理剖析

PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件,其实我并不想加上好用两个字,但是为了表扬插件作者开源免费的崇高精神,我毫不犹豫的加上了好用一词作为赞美。原本以为分页插件,应该是很简单的,然而PageH…

计算机网络dst,计算机网络基础课程—Socket接口

什么是TCP/IP------本课程的主要部分TCP/IP如何工作-----TCP/IP软件结构与实现如何用TCP/IP-------TCP/IP应用程序编程接口前面说过,TCP/IP标准并不指定应用程序与TCP/IP协议软件的接口,但并不是说没有提供任何指导,首先,它指定了…

python输入圆的半径公式_[图文]铁路曲线正矢的计算公式

一、圆曲线正矢的计算1.1 圆曲线正矢的计算公式取圆曲线上两点拉一直线,叫做弦。弦上任意点至曲线上的垂直距离叫矢或叫矢距。在弦中央点的矢距叫正矢(下图)。AB一弦;AC、CB一半弦;CD一正矢;EF一矢距正矢计算公式为其中: f-正矢 C-弦长 R-半径 式中单位均为m。公式用文字表示即…

docker 安装nacos_康过来!Nacos配置和管理微服务的使用

Nacos 具有如下特性:服务发现和服务健康监测:支持基于DNS和基于RPC的服务发现,支持对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求;动态配置服务:动态配置服务可以让您以中心化、外部化和动态化的方式管…

matlab中如何调用gpu进行并行计算_极致安卓-Termux/Aid learning开启WebGL手机GPU并行计算...

在我的之前的测评中,我利用Termux和Aid Learning测试过基于C/C的openmp并行程序,基于Java的并行程序,还有基于MPI以及基于Java的分布式集群并行。但是很遗憾,一直无法成功开发基于OpenCL的GPU并行编程。这是主要是因为Android并没…

python默认编码方式_关于设置python默认编码方式的问题

2019-8-27 07:45:36 本帖最后由 傻纸 于 2019-8-27 10:02 编辑 查了一会资料得出的结论是如果你用的是python3.x,那么就最好别去设置sys.defaultencoding或者sys.stdout.encoding 记住在需要编码的时候用encode,解码的时候decode就可以了。。。 这个问题…