頁面不會被 Squid over HTTPS 阻止
我已經設置 Squid 來阻止我自己系統上的頁面(即不在網路上),並且我正在嘗試讓 SSL 與頁面阻止一起工作。為此,我設置了 ssl-bump 並將證書安裝到我的瀏覽器中。
我想阻止
*.reddit.com/*
(在 HTTPS 和 HTTP 上),但我只想允許子 URL*.reddit.com/r/LearnJapanese
(在 HTTP 和 HTTPS 上)這是我的 squid.conf 文件的一部分:
acl bad_domain url_regex "/usr/local/squid/etc/block.acl" acl good_domain url_regex "/usr/local/squid/etc/allow.acl" http_access deny bad_domain !good_domain http_access allow good_domain http_access allow localnet http_access allow localhost http_access deny all # Squid normally listens to port 3128 http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=10MB cert=/usr/local/squid/etc/squid.pem ssl_bump allow all sslproxy_cert_error allow all sslproxy_flags DONT_VERIFY_PEER
block.acl 的內容:
^http(s)?://(.+)?reddit\.com(.+)?$
allow.acl 的內容:
^http(s)?://(.+)?reddit\.com/r/LearnJapanese(.+)?$
它在 HTTP 上執行良好(即可以訪問 reddit.com/r/LearnJapanese,但 Reddit 的其餘部分不能),但我對 HTTPS 沒有同樣的運氣。
當我通過 HTTPS 訪問 Reddit 時,這些頁面根本沒有被阻止,但它們應該被阻止(當然除了 reddit.com/r/LearnJapanese)。
如何阻止通過 HTTP 和 HTTPS訪問所有 Reddit(除了*.reddit.com/r/LearnJapanese/ )?*謝謝你。
我通過編寫
ssl_bump server-first all
和刪除ssl_bump allow all
. 我不確定它是否有助於解決問題,但我也將這些行放入我的終端:/sbin/iptables -t nat -A PREROUTING -p TCP -s 127.0.0.1 --dport 80 -j REDIRECT --to-port 3128 /sbin/iptables -t nat -A PREROUTING -p TCP -s 127.0.0.1 --dport 443 -j REDIRECT --to-port 3128
雖然當我嘗試使用 HTTPS 導航到黑名單頁面時這不會產生“訪問被拒絕”消息,但當我將 Firefox 配置為對所有協議(即 HTTP 和 HTTPS)使用 Squid 代理時,它確實給了我“代理伺服器拒絕連接” ) 並且我添加了之前生成的根證書 (
/usr/local/squid/etc/squid.pem
)。
由於 SSL 是端到端加密,因此像 Squid 這樣的代理對 HTTPS 請求的了解通常比對 HTTP 的了解要少得多(http://wiki.squid-cache.org/Features/HTTPS#CONNECT_tunnel ):
$$ Many $$CONNECT 請求中不存在請求 URL 的公共部分:
- URL 方案或協議(例如,http://、https://、ftp://、voip://、itunes:// 或 telnet://),
- URL 路徑(例如,/index.html 或 /secure/images/),
- 和查詢字元串(例如 ?a=b&c=d)
要了解更多關於 HTTPS 請求的資訊,Squid 必須對其客戶端執行基本上是中間人攻擊。Squid 文件解釋瞭如何執行此操作,但請注意,這會帶來一些關於隱私的問題(您的使用者應該信任您的正常加密資訊,並且 Web 瀏覽器可能會警告攻擊)。