Iptables

如何使用 Squid 通過 https 阻止 mime_types?

  • January 30, 2021

我有這個規則來阻止擴展:

acl bl_ext url_regex -i "/path_to/bl_ext.txt"
http_access deny workdays bl_ext

範例內容文件“bl_ext.txt”:

\.avi([a-zA-Z][0-9]*)?(\?.*)?$
\.m4a([a-zA-Z][0-9]*)?(\?.*)?$
\.m4r([a-zA-Z][0-9]*)?(\?.*)?$
\.m4v([a-zA-Z][0-9]*)?(\?.*)?$
\.mid([a-zA-Z][0-9]*)?(\?.*)?$
\.mov([a-zA-Z][0-9]*)?(\?.*)?$
\.mp3([a-zA-Z][0-9]*)?(\?.*)?$
\.mp4([a-zA-Z][0-9]*)?(\?.*)?$
\.mpeg4([a-zA-Z][0-9]*)?(\?.*)?$
\.mpeg([a-zA-Z][0-9]*)?(\?.*)?$
\.mpegps([a-zA-Z][0-9]*)?(\?.*)?$
\.mpg([a-zA-Z][0-9]*)?(\?.*)?$
#etc, etc, etc

而這條規則來阻止 mime_type:

acl bl_mt rep_mime_type -i "/path_to/bl_mt.txt"
http_reply_access deny bl_mt

範例內容文件“bl_mimetype.txt”:

^audio/mp4$
^audio/mpeg$
^audio/wav$
^audio/.wma$
^audio/x-midi$
^audio/x-mp3$
^audio/x-mp4$
^audio/x-mpeg$
^audio/x-mpegurl$
^audio/x-ms-wma$
^audio/x-pn-realaudio$
^audio/x-pn-realaudio-plugin$
^audio/x-scpls$
^audio/x-wav$
^video/
^video/3gpp$
^video/avi$
^video/flash$
^video/flv$
^video/mp4$
^video/mpeg$
^video/mpeg4$
^video/ogg$
# etc, etc, etc

但這些規則不起作用。根據我做的分析,好像squid是https加密流量時無法阻止擴展(http only)

PD:此外,我嘗試了在網際網路上找到的這些規則,但都沒有:

acl video rep_header Content-Type video\/.*
acl audio rep_header Content-Type audio\/.*
http_reply_access deny video
http_reply_access deny audio

和:

acl mediapr urlpath_regex \.(avi|mp4|mov|m4v|mkv|flv|mpg|mpeg|wmv|rmvb|afx|asf|swf)(\?.*)?$
acl mediaprapp url_regex dvrplayer mediastream ^mms://
http_access deny mediapr mediaprapp
# Media Streams
acl media rep_mime_type ^application/x-shockwave-flash$
acl media rep_mime_type ^video/x-ms-asf$
acl media rep_mime_type ^application/vnd.ms.wms-hdr.asfv1$
acl media rep_mime_type ^application/x-mms-framed$
acl media rep_mime_type ^audio/x-pn-realaudio$
acl media rep_mime_type ^video/
acl media rep_mime_type ^video\/
acl media rep_mime_type ^application/x-shockwave-flash
acl media rep_mime_type ^application/vnd.ms.wms-hdr.asfv1
acl media rep_mime_type ^application/x-fcs
acl media rep_mime_type ^application/x-mms-framed
acl media rep_mime_type ^video/x-ms-asf
acl media rep_mime_type ^audio/mpeg
acl media rep_mime_type ^audio/x-scpls
acl media rep_mime_type ^video/x-flv
acl media rep_mime_type ^video/mpeg4
acl media rep_mime_type ms-hdr
acl media rep_mime_type x-fcs
acl media rep_mime_type mms
acl media rep_mime_type x-ms-asf
acl media rep_mime_type video/flv
acl media rep_mime_type video/x-flv
http_reply_access deny media

但什麼也沒有發生

有沒有辦法在代理記憶體模式(不透明 - 攔截)下通過 https(不使用 SSL Bumping)阻止 Squid 中的文件 mime_type 文件副檔名?謝謝

PD:如果這肯定必須通過 SSL Bump 來完成,那麼我不能。我想知道是否還有其他替代方案或其他程序(例如 ipset、fail2ban、沒有字元串規則的 iptables,因為它們不可靠等)?

SSL Bump 在 Squid HTTPS 內容上設置過濾器

要在 HTTPS 內容上設置 ACL,您需要在 Squid 中配置 SSL Bump 並將您生成的證書導入瀏覽器和/或作業系統。Firefox 有自己的證書儲存。其他瀏覽器可能會使用作業系統上的證書儲存。

來自我的 squid 代理的範例,包括有關如何生成證書的評論。NoBump.txt 文件應包含您不希望出現在中間人的域,例如銀行、一些 google 子域、paypal 和使用公鑰固定的任何其他人。

acl NoBump dstdomain -i "/etc/squid/acl/NoBump.txt"
acl step1 at_step SslBump1
acl step2 at_step SslBump2
acl step3 at_step SslBump3
# vi /etc/pki/tls/openssl.cnf # edit v3_ca to allow cRLSign, keyCertSign
#  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
#  rsync -av /etc/squid/ssl_cert/myCA.pem /etc/pki/ca-trust/source/anchors/
#  update-ca-trust
#  openssl x509 -in myCA.pem -outform DER -out myCA.der
#  chown squid:squid *;chmod 00400 *.pem
#  Firefox -> Certs -> Authorities -> Import myCA.der
#
# You MUST first initialize the DB and chown its dir to squid:squid
# AND you MUST do this (recreate the DB) any time you change the CA certifiate.
#
# rm -Rf /var/lib/ssl_db
# /usr/lib64/squid/ssl_crtd -c -s /var/lib/ssl_db -M 96MB
# chown -R squid:squid /var/lib/ssl_db
# restorecon -F -R -v /var/lib/ssl_db
#
sslcrtd_program /usr/lib64/squid/ssl_crtd -s /var/lib/ssl_db -M 96MB
sslcrtd_children 132 startup=32 idle=32
#
http_port 192.168.1.1:3128 ssl-bump cert=/etc/squid/ssl_cert/myCA.pem generate-host-certificates=on dynamic_cert_mem_cache_size=32
MB version=1
host_verify_strict off
sslproxy_cafile /etc/ssl/certs/ca-bundle.crt
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER
#sslproxy_options NO_SSLv2,NO_SSLv3,SINGLE_DH_USE
sslproxy_options ALL
sslproxy_session_cache_size 64 MB
ssl_bump peek step1
ssl_bump peek step2 NoBump
ssl_bump splice step3 NoBump
ssl_bump bump all
always_direct allow all

這只是一個例子。最好在**Squid 的網站**上閱讀這些選項和完成此操作的不同方法,因為這會隨著 Squid 的較新版本而改變,並且可能會根據您使用的 Squid 版本而有所不同。特別要注意host_verify_strict,因為您可能希望根據您計劃通過此代理訪問的站點來進行。您必須添加從評論中生成的證書並導入瀏覽器和/或作業系統的證書儲存區。

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