내 요구 사항은 다음과 같습니다
- 프록시는 투명해야 합니다.
- 도메인 이름으로 웹사이트를 필터링할 수 있어야 합니다.
- 그래요~ 아니다트래픽을 해독하고 싶습니다. 저는 SNI 스니핑 기반 솔루션을 찾고 있습니다. 클라이언트에 인증서를 설치할 필요가 없습니다.
수많은 답변이 떠돌고 있지만 그 답변은 올바르지 않거나(이를 수행하려면 트래픽을 해독해야 한다고 주장함) 불완전합니다.
답변1
이를 수행하는 방법은 Squid 3.5에 도입된 SSL peek 기능을 사용하는 것입니다. 보다여기자세한 설명을 위해. --with-gnutls
또는 --with-openssl
(확인 ) 을 사용하여 컴파일해야 합니다 squid -v
. 일부 배포판에서는 이를 제외합니다.
간단히 말해서 관련 오징어 구성은 다음과 같습니다.
acl denylist_ssl ssl::server_name google.com # NOT dstdomain
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump splice !denylist_ssl # allow everything not in the denylist
ssl_bump terminate all # block everything else
https_port 3129 intercept ssl-bump cert=/etc/squid/dummy.pem
(여담: 2단계에는 서버 인증서 수신만 포함되는데 왜 2단계가 아닌 1단계만 살펴보아야 하는지 잘 모르겠습니다. 문서에서는 이를 전혀 명확하게 설명하지 않습니다. ssl_bump peek all
권장하는 대로 사용하면 이 작업이 완전히 중지됩니다 . ).
그런 다음 iptables를 사용하여 일반적인 포트 443을 3129로 리디렉션합니다(또는 원하는 경우 오징어가 443에서 직접 수신하도록 합니다).
-A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3129
더미에 어떤 인증서든 사용할 수 있지만 실제로는 사용하지 않습니다(트래픽을 해독하지 않기 때문입니다).
이와 같은 것이 작동합니다.
openssl req -new -newkey rsa:4096 -sha256 -days 365 -nodes -x509 -keyout dummy.pem -out dummy.pem
출처: