링크: Fail Open or Fail Closed?

우리나라 CC 인증 평가에서 네트워크 방화벽 제품의 기본 정책은 “모든 연결 차단”이고, 장애가 발생했을 때 역시 “모든 연결 차단”이다. CC 인증을 받으려면 별로 이견의 여지가 없다. 하지만, 장애 상황에서 네트워크 제품이 어떤 동작을 취해야 하느냐(차단? 개방?)는 제품이 보호해야 하는 대상 자산이나 서비스의 중요성과 장애나 침해사고 발생 비용을 평가하고 결정해야 한다.

잘 알려진 보안의 기본 상식은 다계층 방어(DID, Defence-In-Depth)이다. 네트워크 방어에 DID를 적용하면 가장 앞 단이 DDoS 대응 장비, 그 다음으로는 방화벽, 그리고 그 뒷단에 IPS가 놓인다. 우리 나라 CC 인증 평가 스킴을 기준으로 할 때, DDoS 대응 장비는 보통 fail-open, 방화벽은 fail-close, IPS도 fail-close가 된다. 하지만 실제 적용을 보면 CC 인증이 바라보는 관점과 많이 다르다(그렇지만 실제 사이트에서 IPS를 운용할 때 가장 많이 선호하는 방식은 fail-open이다). 그리고, 경계 방어 체제를 잘 구축해놓고도 서버 존 앞에 방화벽을 하나 더 놓고 운용하기도 하는데, 이때엔 fail-open을 적용을 요구하는 곳도 꽤 있을 것으로 생각한다. 보안 관점에서 생각하면 놀랄 일이겠지만 서비스 가용성이 서비스 장애 발생으로 유발될 비용보다 더 중요하다면 이것도 합리적인 선택이다. 위에 언급한 링크의 댓글에서는 아마존을 예로 들고 있다.

우리나라의 CC 인증 평가 스킴은 제품 사용자가 fail-open과 fail-close(보통 바이패스로 표현한다)를 선택할 기회를 주지 않는다. 개인적으론 네트워크 장비에서 관리자가 fail-open과 fail-close를 선택할 수 있도록 인증 스킴이 허용해주면 좋겠다. 지금 평가 스킴에서는 하드웨어 바이패스가 가능한 제품이라면 BIOS같은 데서 바이패스를 허용하거나 차단하도록 설정하는 방식은 허용해주지만, 이건 거의 예외적인 상황이다.

특히나 UTM 제품군이라면 더욱 그렇다. UTM이 단일 경계선 장비로 쓰인다면 장애 상황에서 fail-close를 유지하는 것이 보안 관점에서는 맞다. 하지만, 다계층 방어 체계가 구성된 상태에서 IPS 기능만 사용한다거나, DMZ나 내부망 구간에서 브리지 모드로 방화벽 기능만 사용한다면 fail-close를 유지할 이유가 없다(하지만 보안 스위치를 써서 접근 제어를 하는게 더 좋겠지…).

IPS 제품군도 마찬가지다. 국내 평가 스킴에서는 IDS에 방화벽 기능을 통합한 것으로 보고 있어서 기본 상태를 deny-all, fail-close로 간주하고 있다. 그러나 이미 방화벽이 접근 제어를 하고 있는 상황에서 뒷단에 IPS가 놓이면 탐지된 공격 패킷/세션만 차단하고 나머지는 허용해주는 것이 정상아닌가…