HSTS도 그렇게 안전하지만은 않다

제목은 자극적으로 적었지만 사실 별 거 아닌 기술이다.
학교에서 라즈베리 파이를 가지고 놀 때마다 시간이 안 맞아서 문제가 생기는 경우가 많았는데 이게 학교에서 NTP를 아예 막아둬서 생기는 문제였다.
일반적인 컴퓨터라면 자체적으로 시계가 있으니 동기화가 안 되어도 시간이 별로 틀리지 않게 되니 별 문제는 없지만(그래도 실습실 컴퓨터처럼 외부에 연결이 절대 될 리가 없는 PC들은 시간이 10분 정도 차이가 나기도 한다) 라즈베리 파이는 내장 배터리가 없으니 부팅 할 때 NTP로 시간을 못 받아 오면 1970년대로 돌아가는 것이다.

HSTS는 쿠키처럼 시간을 지정해서 그 기간동안은 HTTP 프로토콜의 주소를 입력해도 HTTPS로 브라우저가 강제로 이동하게 만드는 (패킷을 잡아보면 HTTP 요청이 아예 없다) 기술인데 DNS처럼 암호화를 하지 않는 NTP 요청을 스푸핑 해서 클라이언트측의 시각을 바꿔버리면 HSTS의 기간이 만료되고 다시 HTTP로 요청을 할 때 SSL strip 공격을 먹이는 방법이다. (참고)

HTTPS를 사용하는 주소로 즐겨찾기에 등록을 해 두면 그것마저 소용이 없고 나처럼 주소창에 직접 입력하는 사람들에게만 효과가 있겠지만 아무튼 되기는 된다는 거다. 그런데 내 경험상 시각이 안 맞으면 SSL 인증서의 유효기간마저 안 맞아서 브라우징이 되지도 않는데 저게 되는건지 모르겠다. 페이스북의 경우 인증서는 1년짜리이고 HSTS의 만료 기간은 3개월이니까 안 될 건 없지만서도.

WordPress 로그인에 SSL 적용

WordPress는 SSL 관련 설정이 관리자 화면에 전혀 없다. 심지어 로그인을 할 때도 https가 아닌 http를 사용하게 되는데 그냥 https를 붙여서 접속하라고만 한다. 이건 좀 아니라고 생각해서 플러그인을 깔아야 하나 고민중에 설정파일을 바꾸면 로그인을 할 때는 https를 사용한다고 하여 wp-config.php에 아래와 같은 설정을 추가했다.

이렇게 하면 관리자 페이지와 로그인 페이지는 SSL이 적용된 페이지가 열리게 된다.