Https

使用 squid 過濾 http/https 成人內容的本地透明代理

  • July 21, 2020

我想使用白名單過濾我所有的網際網路(http 和 https)連接。

我聽說過魷魚,所以我開始嘗試執行它。我找到了兩個主要教程:

https://wiki.squid-cache.org/ConfigExamples/Intercept/SslBumpExplicit

https://docs.diladele.com/tutorials/transparent_proxy_debian/iptables.html#redirect-http-and-https-traffic

還有一段影片:https ://www.youtube.com/watch?v=Bogdplu_lsE

首先我安裝squid4AUR 包(Arch Linux),我通過啟用來建構它

--with-openssl \
--enable-ssl-crtd \

我編輯配置文件 ( /etc/squid/squid.conf) 並添加:

# add a custom blocking rule:
acl block_websites dstdomain .org .io
http_access deny block_websites

http_port 3128 intercept
https_port 3129 intercept ssl-bump \
   cert=/etc/squid/ssl_cert/myCA.pem \
   generate-host-certificates=on \
   dynamic_cert_mem_cache_size=4MB
http_port 3127 ssl-bump \
   cert=/etc/squid/ssl_cert/myCA.pem \
   generate-host-certificates=on \
   dynamic_cert_mem_cache_size=4MB
sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/ssl_db -M 4MB
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all

要生成 SSL 證書(用於 https 過濾),我正在做:

cd /etc/squid/ssl_cert
openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -extensions v3_ca -keyout myCA.pem -out myCA.pem
openssl x509 -in myCA.pem -outform DER -out myCA.der
# now add myCA.der to firefox
sudo /usr/lib/squid/security_file_certgen -c -s /var/lib/ssl_db -M 4MB

然後我使用 iptables 來轉移一切:

sudo iptables -A INPUT -j ACCEPT -p tcp --dport 3128
sudo iptables -A INPUT -j ACCEPT -p tcp --dport 3129
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:3128
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 127.0.0.1:3129

相應的iptables-save

*filter
:INPUT DROP [8:936]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -p tcp -m tcp --dport 3128 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3129 -j ACCEPT
COMMIT

*nat
:PREROUTING ACCEPT [8:936]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination :3128
-A PREROUTING -p tcp -m tcp --dport 443 -j DNAT --to-destination :3129
COMMIT

最後我啟用魷魚:

sudo systemctl enable squid

但這不起作用(firefox 告訴我“我們無法連接到…的伺服器”)。我究竟做錯了什麼?

對不起,由於誤解而回答錯誤。因為評論,我還沒刪。

使用 Firefox 自動檢測系統代理並不總是給定的。手動設置。可能是也可能不是問題,但很高興知道。

引用自:https://serverfault.com/questions/1013855