Windows VPN 서버는 사용자 이름과 암호를 요구하며, 그 하나의 대화 상자가 서로 무관한 세 가지 임무를 감춥니다. 하나는 그 사람이 누구인지 증명하고, 하나는 회선을 지켜보는 누군가가 그 증명을 재사용하지 못하게 하며, 하나는 그 후 어떤 주소에 도달할 수 있는지 정합니다. 대부분의 소규모 배포는 터널을 먼저 강화하고 처음 두 임무를 기본값으로 남겨 두는데, 이는 잘못된 순서입니다.

공격자가 일하는 순서대로 일하십시오. 먼저 회선에서 잡을 수 있는 것. 다음으로 그 기록으로 나중에 재생할 수 있는 것. 마지막으로 인증된 공격자가 내부에 들어간 뒤 도달할 수 있는 것.

세 가지 임무, 하나의 대화 상자

신원은 사람들이 생각하는 부분이지만 문제의 삼분의 일에 불과합니다. 신원 증명은 교환을 기록하고 나중에 다시 시도하는 관찰자를 견뎌야 합니다. 권한 부여는 신원이 확정된 뒤 서버가 내리는 별개의 결정이며, Windows는 자격 증명을 검증하는 서비스와 다른 서비스에 그것을 보관합니다.

세 가지가 모두 하나의 머릿속 바구니에 있으면, 흔한 결과는 강하게 인증한 다음 사용자에게 모든 것을 허용하는 서버입니다. 그것을 나중에 고치는 것은 지금 정책을 정하는 것보다 어려운데, 그때쯤이면 방화벽 프로필, 주소 풀, 경로가 모두 옛 가정을 부호화하고 있기 때문입니다.

어떤 설정을 건드리기 전에 셋을 메모에서 분리하고, 그런 다음 가장 약한 고리부터 위로 고치십시오.

MS-CHAPv2가 재생 테스트를 견디지 못하는 이유

서버가 아직 MS-CHAPv2와 함께 PPTP를 받아들인다면, 터널은 의미 있는 방식으로 암호를 보호하지 않습니다. 챌린지와 응답을 잡아 오프라인에서 공격할 수 있으며, 2012년에 공개 크래킹 서비스가 전형적인 암호라면 그러한 핸드셰이크에서 약 하루 만에 복구하는 것을 보여 주었습니다. 더 길고 복잡한 암호는 비용을 높일 뿐, 공격자가 네트워크에서 얻는 재료를 없애지는 못합니다.

필요한 속성은 재생할 수 없는 자격 증명입니다. 클라이언트 인증서와 함께 쓰는 EAP-TLS는 각 장치에 고유한 신원을 주고 정확히 한 장치만 폐기할 수 있게 합니다.

인증서 배포는 실제 작업으로, 사설 CA, 클라이언트가 확인하는 폐기 경로, 인력 교체에도 견디는 갱신 계획이 필요합니다. 그 작업을 프로젝트로 다루고, 작동하는 터널까지의 장애물로 다루지 마십시오. 방화벽 교체에 예산을 잡듯 예산을 잡으십시오. 공유 암호는 첫 폐기까지가 더 쌀 뿐입니다.

사전 공유 키는 쌍을 인증하지, 사람을 인증하지 않습니다

L2TP/IPsec의 사전 공유 키는 두 게이트웨이가 같은 비밀을 안다는 것을 증명합니다. 누가 접속하는지는 말하지 않으며 그 계층에서 직원을 서로 구분할 수 없습니다. 핸드셰이크를 잡은 사람은 키를 오프라인에서 공격할 수 있으므로, 긴 무작위 값을 사용하고 일부 안내서가 제안하는 열 글자를 크게 넘기십시오.

그 프로필의 모든 클라이언트가 비밀을 공유하므로, 한 사람을 빼는 것은 남은 모든 사람에게 다시 배포하는 것을 뜻합니다. 머신 수준 비밀 위에 별도의 사용자 인증 단계를 두고, 클라이언트가 늘어나면 인증서로 옮기십시오. 사전 공유 키와 MS-CHAPv2의 조합은 두 개의 약한 층이며, 두 번째가 첫 번째를 무력화합니다.

권한 부여는 Network Policy Server의 몫입니다

Windows의 NPS가 누가 접속할 수 있는지 결정하며, 그것은 인증이 이미 성공한 뒤에 이루어집니다. 그 분리는 제품에서 가장 유용한 강화 제어이며, 많은 배포가 손대지 않은 채 둡니다.

실제 제약을 반영하는 정책 조건을 쓰십시오: 그룹 구성원 자격, 지원 인력이 있는 시간대, 상태 검사에서 나온 장치 상태입니다. 데이터가 마찰을 정당화하는 곳에는 두 번째 요소를 더하고, 정책은 접속 시도마다 평가되므로 문서가 아니라 살아 있는 제어가 됩니다.

RADIUS 계정 관리는 누가 언제 접속했는지에 대한 기록도 하나 줍니다. 그 로그는 사고 검토와 추측의 차이이며, 누가 읽든 읽지 않든 존재합니다.

성공한 로그인이 도달할 수 있는 범위를 제한하십시오

VPN 어댑터는 전체 서브넷이 아니라 자기 역할에 필요한 서비스만 허용하는 방화벽 프로필에 들어가야 합니다. 라우팅 문제는 필터링과 별개입니다. 전체 터널은 클라이언트 장치를 보호하고 모든 바이트를 상향 링크로 보내며, 분할 터널은 로컬 트래픽을 로컬에 두고 장치를 그것이 있는 네트워크에 노출합니다.

두 선택 중 어느 것도 보안 기본값이 아닙니다. 둘 다 전제하는 방화벽 프로필 옆에 적어 두어야 합니다.

실패 경로를 검증하십시오

무엇이 깨져야 하는지 시험하십시오: 틀린 암호, 만료된 인증서, 폐기된 장치, 그룹 밖 사용자입니다. 각각 다른 지점에서 실패해야 하고, 로그는 어느 것이었는지 말해야 합니다. 먼저 테스트 계정으로 집합을 실행하고, 다음에 실제 사용자로 반복하십시오. 이유 없이 이벤트 로그에 남는 거부는 그 기록이 필요해지기 훨씬 전에 고칠 가치가 있습니다.

그다음 어떤 포트가 공개되었고 왜인지 확인하십시오. PPTP는 TCP 1723과 포트가 아닌 IP 프로토콜로서의 GRE를, IKEv2는 UDP 500과 4500을, L2TP는 UDP 1701과 IPsec을 필요로 합니다. 클라이언트가 접속하도록 관리 인터페이스를 노출하는 것은 수리가 아니라 발견되기를 기다리는 두 번째 사고입니다.

마지막으로 서버가 무엇을 얼마나 오래 기록하는지 정하십시오. 인증 이력이 없는 끝점은 사고 후 첫 질문, 즉 그 시도가 애초에 승인되었는지에 답할 수 없습니다.

관련 글