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

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

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

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

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

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

在撰写本文时,最好的版本是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

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

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

  1. 「好书·推荐」李筱懿《情商是什么》

    今天,你读书了吗? 小编认为读书是所有事物当中尤为重要的.可能这时候会有人说:"生命才是最重要的."你们想想没有文化知识的人,是不是无异于行尸走肉呢?也有人会说:"金钱才 ...

  2. RHEL6下squid代理之正向代理

    Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器.Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高W ...

  3. 「starter推荐」简单高效 Excel 导出工具

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:牛人 20000 字的 Spring Cloud 总结,太硬核了~ 作者:冷冷gg 链接:https://jue ...

  4. nextpolish安装_「三代组装」使用Pilon对基因组进行polish

    软件安装 官方提供了编译好的jar包,方便使用 wget https://github.com/broadinstitute/pilon/releases/download/v1.23/pilon-1 ...

  5. react安装_「React实战」三分钟搭建React开发环境

    其实16年的时候就已经接触到React,那个时候也只是入门,时隔多年,工作上一直都没有接触到相关的业务,不知不觉,前端的天也开始渐变,看到 了很多招聘要求上都是要求会React,三大框架怎么也得熟悉使 ...

  6. github流程图_「强烈推荐」开源的在线流程图工具--draw.io

    作为开发者,画流程图是工作中经常遇到的事.你是否也在寻找一个免费的好用的流程图工具? 在线流程图工具,常用的有processon.com. lucidchart.com和我今天要推荐的draw.io. ...

  7. django开源电子文档管理系统_「开源推荐」BookStack v2.8 发布,简洁美观的在线文档管理系统

    程序介绍 BookStack,基于 Mindoc.使用Go语言的Beego框架开发的功能类似GitBook和看云的在线文档管理系统,拥有简洁美观的页面布局,实现了文档采集.导入.电子书生成以及版本控制 ...

  8. 「好书推荐」那些精彩的引人深思、充满反转的推理小说推荐

    大家好,我是七秒读书网站的小龙 ,如果你觉得生活真的是非常无聊,然后就觉得做什么事情都提不起兴趣.那么为什么不做一点什么来充实一下自己呢?比如看看书! 所以呢今天我给大家推荐几本我特别喜欢看的 &qu ...

  9. 「好书推荐」《边城》沈从文的乡土情怀代表作,汪曾祺、林徽因、曹文轩等真情推荐!

    大家好,我是七秒读书网站的小龙 ,今天要推荐的这本书是<边城>是著名作家沈从文的代表作,发表于一九三四年,他曾经名列亚洲周刊二十世纪中文小说100强的第二名,排名仅次于鲁迅的呐喊,学者们盛 ...

最新文章

  1. SEO快速排名算法独家揭秘
  2. python话雷达图-python使用matplotlib绘制雷达图
  3. ubuntu远程windows桌面
  4. TCP/IP详解学习笔记(7)-广播和多播,IGMP协议
  5. opengl glad.h和 glu.h
  6. 继承的CSS类在Chrome开发者工具里的显示
  7. .gpg 进程 linux,小知识之Linux系统中的最大进程数,最大文件描述,最大线程数...
  8. mysql双主 绿色_mysql (双主,互主)
  9. python 科学计算设计_《Python科学计算-(第2版)》怎么样_目录_pdf在线阅读 - 课课家教育...
  10. 基于java的打砖块游戏_cocos creator 制作的打砖块游戏
  11. 解决Ubuntu make 命令 sudo: make: command not found
  12. 高品位登录页面,优秀案例给你灵感!
  13. Asp.Net MVC4入门指南(8):给数据模型添加校验器
  14. 常用编程语言介绍及特点
  15. 自考软件工程常考简答题历年真题
  16. 让电脑变成无线路由器的简单方法
  17. Carsim安装教程-破解carsim2016.01和Carsim2018
  18. Xcode6 打包报错 ITMS-90096
  19. 【论文笔记】Understanding Software Changes: Extracting, Classifying, and Presenting Fine-Grained Source Co
  20. SSAO与HBAO学习笔记(持续改进)

热门文章

  1. mysql 重启_windows下重启mysql的方法
  2. python画海绵宝宝_《1,2,3到动物园》数数书,适合幼儿园小班宝宝亲子共读,从游戏中了解数字的概念...
  3. Qt界面设计器中的界面预览与程序运行时界面不一样
  4. Python 常用函数 - Python入门教程
  5. C语言 __cplusplus - C语言零基础入门教程
  6. Python min 函数 - Python零基础入门教程
  7. BugkuCTF-PWN题pwn5-overflow2超详细讲解
  8. 设置pandas显示行数_Pandas这样来设置,做数据分析舒适百倍
  9. java字节流转字符串_字节流与字符流的区别及相互转换
  10. oracle实验七 答案,Oracle表的常用查询实验(七)