New way to deploy SSL ××× in Linux

導讀Squid 實現的 SSL Proxy,相對於各類 ××× 和傳統的 SSH 加密通信手段,SSL 代理具有更優越的性能和更好的安全性;Squid 不僅可以根據需要選擇需要經過代理的域名並進行緩存,可以有效提高外部網絡訪問速度,還可以實現高度的身份隱藏功能,具有良好的隱私安全保障。

簡介

本文所採用的服務器均爲 CentOS 7 x86_64 版本,使用 FirewallD 作爲防火牆。

Squid 作爲代理服務器實現,Stunnel 進行 HTTPS 與 HTTP 之間的轉換。

本文需要擁有合法的服務器證書,若沒有請申請或自簽發,免費 SSL 證書可以使用 StartSSL / WoSign 等

Squid

Squid 是一個高性能的代理緩存服務器,可以加快內部網瀏覽 Internet 的速度,提高客戶機的訪問命中率。

Squid 不僅支持 HTTP 協議,還支持 FTP、gopher、SSL 和 WAIS 等協議。

和一般的代理緩存軟件不同,Squid 用一個單獨的、非模塊化的、I/O驅動的進程來處理所有的客戶端請求。

Stunnel

Stunnel 是一個自由的跨平臺軟件,用於提供全局的 TLS/SSL 服務。

針對本身無法進行 TLS 或 SSL 通信的客戶端及服務器,Stunnel 可提供安全的加密連接。

該軟件可在許多操作系統下運行,包括 Unix-like 系統,以及 Windows. Stunnel 依賴於某個獨立的庫,如 OpenSSL 或者 SSLeay,以實現 TLS 或 SSL 協議。

搭建服務

系統環境

公有云上的 CentOS 7 x86_64(非 OpenVZ),雙核,2 GB 內存,SELinux 不開啓

服務架構

Users < - HTTPS -> Squid A < - HTTP -> Stunnel A < - HTTPS -> Squid B < - HTTP/HTTPS -> Internet

其中,服務器 A 位於內部網絡但可以訪問服務器 B,服務器 B 位於外部網絡,此舉一是實現了 Users 都 B 的全方位加密,二是實現了外部網絡與內部網絡的隔離,在防火牆的幫助下可以更好地保證 A 的安全與穩定;而且,一旦 B 遭遇***,A 可快速切換至另一個 B 服務器。

準備證書

關於證書:請使用包含整個證書鏈的證書,否則在部分操作系統上可能出現證書異常

請將您的證書放置於 /etc/cert/ssl.crt

請將您的私鑰放置於 /etc/cert/ssl.key

用戶認證

本文默認配置沒有啓用任何 Squid 認證,如有需要請自行配置。

在啓動認證的情況下, Stunnel 工作不會受到影響,因此無需更改 Stunnel 配置。Linux就該這麼學

服務器 A 搭建腳本

安裝組件

yum install -y squid stunnel openssl openssl-devel
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload

寫入 Stunnel 配置,請根據情況修改花括號的內容

echo "client = yes
[https]
accept = 127.0.0.1:808
connect = {Server B IP:port}" > /etc/stunnel/stunnel.conf

設置 Stunnel 自啓

echo "stunnel" >> /etc/rc.local

創建無需代理的站點列表,語法如.baidu.com,每個域名一行

touch /etc/squid/inner-sites

修改 Squid 配置文件

sed -i 's/http_access deny all/http_access allow all/g' /etc/squid/squid.conf
sed -i 's/http_port 3128/https_port 443 cert=\/etc\/cert\/ssl.crt key=\/etc\/cert\/ssl.key/g' /etc/squid/squid.conf
sed -i '$a\acl all src 0.0.0.0/0.0.0.0' /etc/squid/squid.conf
sed -i '$a\acl inner-sites dstdomain \"/etc/squid/inner-sites\"' /etc/squid/squid.conf
sed -i '$a\always_direct allow inner-sites' /etc/squid/squid.conf
sed -i '$a\never_direct allow all' /etc/squid/squid.conf
sed -i '$a\request_header_access Via deny all' /etc/squid/squid.conf
sed -i '$a\request_header_access Via deny all' /etc/squid/squid.conf
sed -i '$a\request_header_access Via deny all' /etc/squid/squid.conf

啓動服務

stunnel
systemctl start squid
systemctl enable squid

服務器 B 搭建腳本

安裝組件

yum install -y squid stunnel openssl openssl-devel
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload

修改 Squid 配置文件

sed -i 's/http_access deny all/http_access allow all/g' /etc/squid/squid.conf
sed -i 's/http_port 3128/https_port 443 cert=\/etc\/cert\/ssl.crt key=\/etc\/cert\/ssl.key/g' /etc/squid/squid.conf
sed -i '$a\request_header_access Via deny all' /etc/squid/squid.conf
sed -i '$a\request_header_access Via deny all' /etc/squid/squid.conf
sed -i '$a\request_header_access Via deny all' /etc/squid/squid.conf

啓動服務

systemctl start squid
systemctl enable squid


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章