투명한 SSL 프록시 신화와 사실


8

SSL에 대한 투명 프록시를 설정하는 방법 (오징어 아님)에 대해 여러 시간 동안 검색했습니다. 일반적인 대답은 할 수 없지만 몇 가지 방법이 있다는 것을 알고 있습니다 . 내 목적은 다음과 같습니다.

  1. 블랙리스트 / 화이트리스트 도메인 이름 (IP 번호 아님). 내용이 전혀 필터링되거나 수정되지 않습니다.
  2. 이 목록을 통해 사용자를 강제하십시오. 웹 브라우저에서 이러한 설정을 수정하면 실행 취소 할 수 있습니다.

다음 페이지는 수정되지 않은 트래픽을 전달할 수 있지만 iptables https privoxy를 사용하여 투명 프록시를 https?

다음 페이지는 내가 직접 할 수 없었던 443의 iptables 규칙을 보여줍니다. http://alien.slackbook.org/dokuwiki/doku.php?id=slackware:proxy

다음 페이지는 Squid에서만 작동하도록하는 방법을 설명합니다. http://www.rahulpahade.com/content/squid-transparent-proxy-over-ssl-https

편집 : 한 사람이 여기에 말합니다 : IPTABLES를 사용하여 Squid 주위에 HTTPS (443) 통과를 작성하려면 어떻게합니까? "가장 좋은 방법은 포트 443에 대한 직접 액세스를 차단하고 사용자에게 HTTPS를 사용하려면 프록시를 사용하도록 브라우저를 구성해야한다는 것을 알려주는 것입니다." 그러나 나는 프록시에서 작동하지 않도록 443을 완전히 차단하는 방법을 알고 있습니다.

답변:


7

도메인 이름을 필터링하려는 경우 가능한 두 가지 방법이 있습니다. HTTPS 연결에 프록시를 사용해야하고 해당 항목을 필터링해야한다는 것을 알고있는 경우 클라이언트가 발행 한 CONNECT 메소드에서 이름을 가져올 수 있습니다 (오징어는이를 지원합니다) BTW). 당신이 경우 또는, 정말 정말 투명하게 할 필요가, 당신은 (암호화) 요청 헤더에보고해야합니다.

암호화 된 요청 헤더를 보려면 키가 있어야합니다. 키를 가지려면 a) 클라이언트가 "올바른"인증서로 신뢰하고 b) 가능한 모든 호스트 (와일드 카드 모두)를 인증하는 인증서가 필요합니다.

그래서 당신이해야 할 일은

  1. 프록시 인증서를 설정하십시오. 소프트웨어 사용 방법에 따라 다릅니다. stunnel 을 사용 하여 프록시 측에서 SSL 연결을 종료하고 HTTP 프록시를 필터링하고 iptables DNAT 대상을 사용하여 나가는 모든 트래픽에 대해 SSL을 다시 설정하고 stunnel을 다시 설정할 수 있습니다. MitM SSL 프록 싱을위한 "박스형"솔루션도있을 수 있습니다.
  2. 프록시를 사용하려는 모든 클라이언트에 위에서 언급 한 인증서를 설치하십시오.

대부분 투명한 프록시가 필요한 경우 프록시를 사용하도록 클라이언트를 재구성하지 않거나 재구성 할 수 없기 때문입니다. 요청이이 경우에도 클라이언트에 인증서를 설치하고 "신뢰할 수있는"것으로 표시하는 옵션이 없을 수 있습니다. 따라서 투명한 SSL 프록시를위한 기술적 방법이 있지만 그다지 이길 수 없을 것 같습니다.


이것은 투명한 프록시에 대한 사실을 매우 명확하게하기에 충분했습니다. 감사합니다!
Teresa e Junior

"... HTTPS 연결을 위해 프록시를 사용해야하고 해당 항목을 필터링해야한다는 것을 알고 있다면 클라이언트가 발행 한 CONNECT 메소드의 이름을 어떻게 사용합니까?"
Big McLargeHuge

Squid와 함께 @ davidkennedy85는 다른 액세스 방법을 필터링하는 것과 거의 같은 방식으로 ACL을 사용하십시오. 예 : servercomputing.blogspot.de/2012/01/…
the-wabbit 21:01에

당신의 설명은 대부분 무시할 만하다. 나는 많이 배웠다. 감사. 내가 의심하는 것은 호스트 이름 (도메인 이름)이 트래픽을 모니터링하는 모든 사람에게 알려져 있다는 것입니다. security.stackexchange.com/questions/2914/…
Albert Netymk

4

나는 이것이 오래된 질문이라는 것을 알고 있지만 OP가 특정 도메인 이름을 블랙리스트 / 화이트리스트 만 원한다면 프록시를 전혀 사용할 필요가 없으며 DNS 기반 블랙리스트 만 사용할 수 있습니다.

  • 블랙리스트에 추가하려는 도메인에 대해 127.0.0.1을 반환하도록 온 사이트 DNS 서버를 설정하십시오.
  • 인터넷 게이트웨이에서 DNS 서버를 제외한 모든 IP가 TCP / UDP 포트 53에 액세스하는 것을 차단하므로 DNS 서버 만 인터넷 기반 서버에서 DNS 요청을 할 수 있습니다.

다른 도메인도 허용됩니다. 모든 웹 트래픽 SSL 등은 변경없이 게이트웨이를 통과합니다.

편집 : OP가 목록을 통해 사용자를 강제 할 준비가되면 DNS에 액세스하는 다른 방법을 차단 할 수 있습니다. 이렇게하면 사용자가 차단 된 다른 DNS 방법 중 하나를 사용하려고하면 웹 사이트가 작동하지 않습니다. 일명 '나의 길 또는 고속도로'

@wheeler가 언급 한 DNS-over-HTTPS의 경우 https://dns.google.comhttps://cloudflare-dns.com/dns-queryhttps : // 와 같은 사이트에 대한 정기적 인 DNS 조회를 차단할 수 있습니다 . doh.cleanbrowsing.org/doh/family-filter/ . 점점 더 많은 서비스가 온라인으로 제공됨에 따라이 기능은 빠르게 사용할 수 없게됩니다.

개발중인 다른 DNS 방법에 대해 application / dns-udpwireformat과 같은 MIME 유형을 차단하는 방법이 필요할 수도 있습니다.


DNS-over-HTTPS로 간주하는 것은 더 이상 효과적인 해결책이 아닙니다.
휠러

2

델리게이트 는 HTTPS 용 Man-In-The-Middle 프록시 로 작동 할 수 있습니다 .


고맙습니다. 실제로 작동하지만 작동하지 못했습니다! 포트 80에 대한 규칙과 다른 iptables 규칙이 필요한 것 같습니다. 또는 위임에 대해 알아낼 수없는 옵션이 있습니다.
Teresa e Junior

1

투명 모드의 경우 Inline IPS (Suricata, Snort) 시스템을 사용하면 SSL 사이트를 차단할 수 있습니다.

https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Setting_up_IPSinline_for_Linux

특정 사용자에 대한 SSL 사이트 규칙 차단 :

drop ip any 443 -> 192.168.3.x any (content:".facebook.com"; msg:"Simplewall block facebook.com  ";sid:7;rev:1;)

drop ip any 443 -> 192.168.3.204 any (content:".youtube"; msg:"Simplewall block youtube.com" ;sid:4;rev:1;)

확장자에 따른 파일 다운로드 규칙 차단 :

drop ip any any -> 192.168.3.63 any (msg:"File exe block"; fileext:"exe"; filestore ;sid:1;rev:1;)

drop ip any ssl -> 192.168.3.63 any (msg:"File mp3 block"; fileext:"mp3"; filestore ;sid:11;rev:1;)

drop ip any ssl -> 192.168.3.63 any (msg:"File pdf block"; fileext:"pdf"; filestore ;sid:21;rev:1;)

SimpleWall로 이것을 사용해보십시오

Simplewall 웹 인터페이스로 차단 규칙을 추가하는 것은 매우 간단합니다.

Simplewall => Content Filterhttp 컨텐츠 필터와 함께 IPS에 대해 동일한 규칙을 사용하는 규칙을 추가 할 수도 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.