노출된 모든 서비스는 같은 조언을 듣는다. fail2ban을 올려라. VPN 게이트웨이에 그 조언은 틀리지도 충분하지도 않으며, 이를 하드닝 체크박스로 취급하는 것이 바로 아무 쓸모도 막지 못하는 jail을 남기는 이유다. fail2ban은 지정한 실패 기록을 읽고 일치하는 소스를 차단하도록 적용 백엔드에 요청한다. 그 가치는 전적으로 어떤 인증 표면이 기록을 만들었는지, 기록 속 주소가 실제 클라이언트인지, 그리고 그 주소 뒤의 다른 모든 사람에게 무슨 일이 일어나는지에 달려 있다.

fail2ban의 동작 방식

필터가 로그의 줄을 일치시키고, jail이 소스별 일치 수를 세며, 액션이 방화벽 백엔드를 통해 차단을 적용한다. 세 개의 움직이는 부품이며, 각각 독립적으로 틀릴 수 있다.

셋 중 어느 것도 인증 경로를 건드리지 않는다. fail2ban은 사후에 증거에 반응할 뿐 스스로 자격 증명을 검증하지 않는다. 따라서 jail이 깨끗하게 돌아가도 그것이 지목한 표면은 이전과 똑같이 노출된 채로 남는다.

터널 리스너는 로그인 양식이 아니다

OpenVPN 리스너가 tls-auth 또는 tls-crypt로 보호되면 일반 TLS 처리 전에 제어 채널 보호가 없는 패킷을 버린다. 키를 한 번도 가진 적 없는 스캐너는 필터가 셀 수 있는 것을 아무것도 만들지 않는다. 인증서 인증은 추측할 비밀번호가 없으므로 또 하나의 관문을 더한다. Fail2ban 프로젝트는 일반적인 로그 기반 모델을 문서화하지만, 일반 VPN 필터가 인증되지 않은 패킷을 의미 있는 실패 이벤트로 바꾸지는 않는다.

게이트웨이가 인증서만 받아들인다면, 당신이 막고 있는 무차별 대입 공격 이야기는 그 포트에 아예 없을 수도 있다.

그렇다면 어떤 표면을 보호하고 있는가?

같은 호스트가 흔히 세 가지를 노출한다. 터널 리스너, 클라이언트 프로필 또는 셀프서비스 포털, 그리고 관리 페이지다. 포털과 관리 페이지에는 비밀번호 양식이 있고 필터가 셀 수 있는 로그 줄을 만든다. 터널은 전혀 다른 의미의 핸드셰이크 오류만 만들 수도 있다. jail은 제품 이름이 아니라 표면에 맞춰라.

잘못된 로그를 지켜보는 jail 하나는 없는 것보다 나쁘다. 커버리지 없이 확신을 만들기 때문이다. 로그인 필터를 터널의 핸드셰이크 오류로 돌리면 키를 한 번도 가진 적 없는 스캐너에서 카운터가 울리지만, 포털에 대한 비밀번호 공격은 세어지지 않는다. jail의 숫자를 믿기 전에 필터가 일치시키는 로그 줄을 읽어라.

소스 귀속이 약한 고리다

차단은 겨냥한 주소만큼만 좋다. 서비스가 로컬 리버스 프록시 뒤에 있으면 로그의 클라이언트 주소는 프록시일 수 있고, 그것을 차단하면 모두가 사라진다. 신뢰할 수 없는 소스에서 전달된 헤더를 믿으면 공격자에게 임의의 주소를 차단할 능력을 준다. UDP에서는 소스 주소를 위조할 수 있으므로, 완료된 TCP 로그인을 세는 것보다 더 주의가 필요하다.

소스 귀속 방법을 jail의 README에 기록하라. 신뢰할 수 없는 홉에서 전달된 헤더는 차단을 무기로 만든다.

부수적 비용은 다른 사람들이다

한 사무실 NAT 뒤의 여러 직원이 주소를 공유하므로, 오래된 저장 비밀번호 하나가 임계값을 넘는 순간 사무실 전체를 잠글 수 있다. 로그는 실패한 소스 하나와 계정 하나를 보여줄 뿐, 사무실 전체의 장애를 보여주지 않는다.

짧은 차단과 적당한 임계값이 이를 줄이고, 문서화된 차단 해제 경로는 그래도 발생할 때 지원 부담을 줄인다. 주소는 신원이 아니라 거친 신호이며, 티켓을 여는 사람은 임계값이 아니라 장애를 설명할 것이다.

언제 도입하고, 언제 다른 것을 고칠까

통제하는 표면에서 실제로 귀속 가능하고 반복되는 온라인 로그인 실패가 있고, 적용 백엔드가 그 표면을 실제로 덮을 때 도입하라. 문제가 약한 자격 증명 정책, 인터넷에 노출된 관리 페이지, 또는 침해되었기 때문에 성공적으로 로그인하는 계정이라면 다른 것을 고쳐라. 차단은 그중 어느 것도 고칠 수 없고, 이미 업링크를 포화시킨 트래픽을 흡수할 수도 없다. 마지막 문제는 상류, 패킷이 당신에게 도달하기 전에 필터링할 수 있는 누군가의 몫이다.

모든 jail을 하나의 표면에 묶어 두고, 오탐을 검토하며, 차단된 주소 수가 아니라 피한 인증 작업을 측정하라.

관련 글