SSL 연결없이 웹 사이트에 액세스하지 못하게하는 방법은 무엇입니까?


11

SSL 인증서가 설치된 웹 사이트 가 있으므로 https대신 웹 사이트에 액세스하면 http보안 연결을 사용하여 연결할 수 있습니다.

그러나 나는 여전히 웹 사이트에 비보안 적으로 액세스 할 수 있음을 알아 차렸다. http대신 에 사용하여 https.

사람들이 웹 사이트를 안전하지 않은 방식으로 사용하지 못하게하려면 어떻게해야합니까?

예를 들어 웹 사이트에 디렉토리가있는 경우. samples/이 디렉토리에만 비보안 연결을 방지 할 수 있습니까?

답변:


12

불행하게도,이 문제에 대한 유일한 해결책은 사용자 https://에게만 제공하고 사용하도록 기대 하는 것입니다. SSL / TLS를 사용하고 있는지 확인하는 것은 궁극적으로 사용자의 책임입니다.

웹 사이트가 SSL / TLS 연결 만 허용하더라도 다른 솔루션은 MITM (Man-in-the-Middle) 공격에 취약합니다. 공격자는 http://example.com( example.com포트에서 수신 대기하지 않더라도 사용자가 요청한대로) 트래픽을 가로 채고 자신에게 연결 https://example.com하여 사용자에게 다시 프록시 하여 트래픽을 교체 할 수 있습니다.

이로 인해 자동 리디렉션 에 대한 OWASP 규칙 이있었습니다. 경로 재 지정이 위험을 완화하는 나쁜 방법은 아니지만 (특히 수동 도청 자에 대한) 방법은 아니지만 근본적인 문제를 해결하지는 못했을 것입니다.

사용자를 HTTPS 사이트로 안내하는 데 사용할 수있는 다양한 기술이 있으며이를 사용하는 것은 좋지 않습니다 (활성 MITM 공격자로부터 사용자를 보호하지는 않지만).

첫째, 웹 서버에 일반 HTTP로 제공해야 할 것이 없다면 포트 80을 끄십시오 (예 : Listen 80Apache Httpd의 구성에서 제거 ). 사용자는 https://항상 사용해야 하므로 불편할 수 있습니다.

둘째, 특정 경로 ( Location또는 Directory) 에 대한 Apache Httpd 구성 섹션 에서 SSLRequireSSL지시문을 사용하십시오 : SSL / TLS를 사용해야합니다 (실제로 다른 포트에서 구성한 경우에도). 다른 웹 서버에는 비슷한 지시문이있을 수 있습니다.

셋째, mod_rewrite코드를 사용 하거나 코드 내에서 (응용 프로그램 인 경우) 리디렉션을 사용할 수 있습니다 . 특정 위치에 대해 이와 같은 작업을 수행해야합니다 ( 특수 변수 참조HTTPS ; 302도 사용할 수 있지만 더 영구적 인 경우 301이 좋습니다).

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(samples/.*)$ https://example.com/$1 [R=301,L]

더 중요한 것은 해당 보안 섹션에 대한 모든 링크가 사용되는지 확인하십시오 https://. 자동 리디렉션을 사용하여 작업을 수행하지 마십시오. 따라서 개발 단계에서는 전혀 사용하지 않는 것이 좋습니다 .

그러나 나는 여전히 웹 사이트에 비보안 적으로 액세스 할 수 있음을 알아 차렸다. http대신 에 사용하여 https.

당신이 모두 동일한 구성 사용하는 것처럼 이것은 또한 소리 httphttps. Apache Httpd를 사용하는 경우 구성 VirtualHost을 포트 80 용과 포트 443 용의 두 가지로 나눌 것을 제안합니다 . 정확히 동일한 구성을 가질 필요는 없습니다. HTTPS에만 해당하는 것을 넣지 마십시오. HTTP 가상 호스트에서.


위에서 언급 한 문제를 완화하는 방법은 HTTP Strict Transport Security 를 지원하는 브라우저에 사용하는 것입니다 (내가 아는 한 전체 호스트에 적용됨). https://리디렉션없이 사용하지 않으면 첫 번째 연결이 계속 노출 될 수 있지만 미리로드 된 사이트 목록이있을 수 있습니다 https:// (HSTS 사용 가능).


좋은 정보, gmail은 어떻게 이것을합니까? -그들은 https를 강요하는 것의 모습에서.
toomanyairmiles

3
그들은 리디렉션을 사용합니다. 사용자가 기대하는대로 잘 작동합니다 https://mail.google.com. 사용자 http://mail.google.com가을 (를) 사용하는 것으로 보이면 MITM에 요청을 프록시하는 MITM이있을 수 https://mail.google.com있습니다. 안타깝게도 사용자가 확인하지 않으면 Gmail에서 그 일을 많이 할 수 없습니다. 실제와 동일한 원리 : Alice가 Bob과 대화하고 싶지만 ID를 확인하지 않고 척 (Bob이라고 주장하는 사람)과 대화하는 경우 Bob은이 대화에 대해 알지 못하므로 수행 할 수 없습니다. 그것에 대해 무엇이든. 앨리스의 책임입니다.
브루노

HTTPS로 연결되어 있는지 확인하고 SSL을 사용하지 않으면 HTTPS 주소로 리디렉션하는 PHP 스크립트를 보았습니다. 당장 사이트를 구축하지 않는 한 쉬운 일은 아닙니다.
익명의 펭귄

@AnnonomusPerson, 그것은 정확히 같은 원리이며 HTTP에서 HTTPS 로의 다시 쓰기 규칙이하는 것입니다. 프로그래밍 방식 으로든 구성 으로든 상관없이 여전히 일반 HTTP의 초기 요청으로 리디렉션되어 동일한 문제가 발생합니다.
Bruno

3

http 트래픽을 https로 리디렉션하기 만하면됩니다. 이 기사 'http를 https로 Apache 보안 연결로 리디렉션 – 강제 HTTPS 연결'을 참조하십시오 .

A의 하위 디렉토리 디렉토리 자체에 htaccess로 파일이 배치합니다.

RewriteEngine on
RewriteCondition %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.maindomain.com/directory/$1 [R=301,L] 

특정 하위 디렉토리에 대해서만이 작업을 수행 할 수 있습니까?
CJ7

@CraigJ 죄송합니다. 하위 디렉토리 부분을 놓쳤습니다. 답변이 업데이트되었습니다.
toomanyairmiles

3
이렇게하면 위험이 약간 줄어들지 만 활성 MITM 공격자에게는 작동하지 않습니다.
브루노

0

사이트를 MITM, 스 누퍼 및 PEBKAC로 만드는 데 필요한 단계 외에 HTTPS를 통한 액세스가 실제로 가능합니다. 작동하지 않는 사용자의 책임이어서 는 안됩니다 . 사용자가 보안 브라우저를 대신 사용하도록 권장하십시오.

HTTPS 강제 실행은 HSTS ( HTTP Strict-Transport-Security )를 통해 수행됩니다 . 기본 HSTS는 사용자가 HTTPS를 통해 사이트에 처음 액세스 한 후에 안전합니다 (모든 지원되는 브라우저에서 IE에는 기능이 없음 ). 사전로드 된 HSTS 는 항상 안전하며 최신 빠른 릴리스 브라우저 (Chromium 및 파생 상품, Firefox)를 포함합니다.

HTTP 보안 (주소 지정 URL, 리디렉션, 쿠키 및 혼합 컨텐츠)에 대한 전체 개요는 이 HTTPS 마이그레이션 하우투를 참조하십시오 . HSTS는 점진적 마이그레이션의 마지막 단계입니다. 귀하의 사이트가 새로운 사이트라면 주문을 따를 필요가 없습니다.

관련 표준 : 보안 쿠키 (쿠키가 HSTS 헤더보다 오래 지속되는 경우 중요), HttpOnly 쿠키 ( 쿠키를 보호하는 동안), HPKP (현대 브라우저 및보다 풍부한 공격자 용).

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