새로운 국가에서 울리는 VPN 경고는 결정적으로 보이지만 대개 그렇지 않다. 인증은 시도가 받아들여졌다고 말하고, 세션은 어느 연결이 그것을 실었는지 말하며, 리소스 기록은 그 연결 안에서 무슨 일이 있었는지 말한다. 각각 다른 질문에 답한다. 셋을 하나로 합치는 규칙은 월요일에 서른 건의 티켓을 만들고 금요일에 진짜 사건을 놓친다.

외국 주소는 질문이지 답이 아니다

여행, 다른 국가에서 나가는 이동통신사, 기업 웹 프록시, 재할당된 통신사급 NAT 풀은 모두 공격자를 옮기지 않으면서 보이는 출처를 옮긴다. 로그인 기록은 연결이 네트워크로 어디서 들어왔는지를 보여 주며, 누가 기기를 들고 있었는지는 보여 주지 않는다.

반대의 실패는 조용하기 때문에 더 나쁘다. 사용자 본인의 도시에서 쓰인 훔친 비밀번호는 지리 검사에서 이전의 모든 로그인과 일치하는 로그인을 만든다.

지리를 판결로 다루는 데는 측정 가능한 비용이 든다. 이동하는 노트북은 끊임없는 검토 흐름을 만들고, 검토자는 읽지 않고 닫는 법을 배우며, 그 습관은 진짜 사건이 같은 대기열에 올 때까지 이어진다.

세 가지 기록 유형은 세 가지 다른 질문에 답한다

배포된 제품이 실제로 내보내는 것에서 시작하고, 제품 브로슈어가 내보낼 수 있다고 암시하는 것에서 시작하지 않는다. 인증 결정은 주장된 신원, 방법, 결과를 지목한다. 세션 수명 주기는 연결, 게이트웨이, 할당된 주소를 시작부터 정지까지 지목한다.

RecordQuestion it answersWhat it cannot prove
Authentication decisionWhich identity was accepted or rejected, by which method, at what timeThat the person operating the device was the account owner
Session lifecycleWhich connection, gateway and assigned address were active, and for how longWhat the session did with that access
Resource eventWhich read, write or denied operation a service observedWhich human behind the session triggered it
Policy changeWhether an administrator altered the rule that governs the accessWhether the change was reviewed or intended

빈 셀은 수집의 공백이지 무죄 선고가 아니다. 리소스 이벤트가 전혀 도착하지 않는다면, 의심스러운 읽기가 없다는 것은 파이프라인에 보고할 것이 없다는 뜻이며, 조용한 대시보드는 네트워크가 아니라 파이프라인을 설명한다. 그것들에 의존하는 규칙을 약속하기 전에 배포가 실제로 어떤 기록을 만들어 내는지 적고, 빠진 피드마다 담당자를 지목하라.

회계 세부 정보는 세션이 검증 가능해지는 지점이다. RFC 2866에 설명된 RADIUS 회계는 세션 식별자에 묶인 시작, 정지, 중간 갱신을 운반하므로, 시작은 있고 정지는 없는 세션은 수수께끼가 아니라 이름 붙일 수 있는 공백이다.

사용자 이름이 아니라 세션으로 결합하라

하나의 계정은 동시에 여러 세션을 정당하게 유지한다. 노트북, 휴대전화, 밤새 연결해 둔 실험실 기계다. 그 사용자 이름의 모든 이벤트를 결합하면 세 기기가 하나의 이야기로 녹아들고, 그 조합을 침해로 읽게 된다. 할당된 주소도 재사용되므로 세션이 끝난 뒤에도 주소와 계속 일치하는 결합은 지난달의 기기를 오늘의 사건으로 끌고 온다. 주소 옆에 세션 키를 보관하고, 일치를 세션이 실제로 포괄한 시간 창으로 제한하라.

서비스가 보기 전에 번역이 원래 출처를 제거하는 곳에서는 그 경계에서 살아남는 신원을 사용하라. 상호 TLS 주체나 단일 로그온 어서션 같은 것이다. 주소와 사람 사이에 일대일 대응을 지어내는 것은 단계만 늘어난 같은 실수다.

소유자 없는 경고는 대시보드다

모든 규칙에는 조건, 그것을 만들어 내는 무해한 설명, 확보할 증거, 행동하는 사람이 필요하다. 반복되는 관리 작업 거부, 실패한 비밀번호의 폭주, 침묵하는 수집기는 서로 다른 시계를 가진 세 가지 사건이다.

알림은 격리가 아니며 배포 목록은 아무것도 제한하지 않는다. 살아 있는 세션을 바꾸려면 그것을 할 수 있는 구성 요소가 필요하다. 연결을 끊는 게이트웨이든, 세션을 취소하는 ID 공급자든. 오래된 피드와 빠진 정지 기록도 규칙 문장에 속한다. 하루 동안 아무것도 보내지 않은 수집기는 대시보드에서 조용한 네트워크와 똑같이 보이기 때문이다. 차이는 파이프라인 자체에서만 드러난다.

조용한 한 주를 믿기 전에 수집 경로를 확인하라

규칙 하나를 조정하기 전에 파이프라인을 처음부터 끝까지 증명하라. 아래 명령은 인증과 회계 리스너가 살아 있는지, 테스트 자격 증명이 올바른 이유로 거부되는지, 세션 이벤트가 여전히 도착하는지 확인한다:

ss -uanp | grep -E ':(1812|1813)\b'
radtest alice 'not-the-password' 127.0.0.1 0 testing123
journalctl -u openvpn-server@server --since '-30 min' | grep -c 'Peer Connection Initiated'
timedatectl | grep -E 'System clock|synchronized'

테스트의 Access-Reject는 요청이 서버에 도달했고 공유 비밀이 일치했음을 증명하며, 사람들이 건너뛰는 부분이 바로 그것이다. 대신 시간 초과는 비밀, 리스너 또는 그 앞의 필터를 가리키며, 그것이 고쳐질 때까지 하류의 모든 경고는 검증할 수 없다.

시계 상태는 상관 창이 일치를 전제하기 때문에 중요하다. 몇 분 어긋난 게이트웨이는 그렇지 않으면 깨끗한 세션 결합을 불가능해 보이게 하고, 검토자는 결합이 구별을 멈출 때까지 창을 넓혀 보상한다. 규칙을 편집하기 전에 오프셋을 확인하라.

그다음 무해한 테스트로 규칙 하나를 돌려 보라. 예상치 못한 주소에서 로그인을 만들고, 경고가 울리는지 확인하고, 대응자가 세션과 그 리소스 이벤트를 가져올 수 있는지 확인하고, 티켓이 세션 식별자를 담는지 확인하라. 일관된 이야기를 만드는 규칙은 통과한다. 로그 줄 더미를 만드는 규칙은 여전히 대시보드다. 결과를 규칙 옆에 기록해 다음 검토가 직관이 아니라 증거에서 시작하게 하라.

관련 글