安裝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.pswp.cn/news/532206.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532206.shtml
英文地址,請注明出處:http://en.pswp.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),是對工作流程及其各…