본문 바로가기

Network, Security

방화벽이란?

방화벽은 미리 정해진 패턴, 정책을 기반으로 시스템으로 들어가고 나가는 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템이다. 방화벽은 내부 네트워크와 외부 네트워크 사이에 필터 역할을 하여 정해진 조건(룰)에 따라 트래픽을 필터링한다.

 

1세대 방화벽 (Port and Packet) 필터링 => L4 방화벽

포트와 패킷을 기반으로 접근을 통제한다. 미리 정해진 룰에 허용할 포트와 IP, 허용하지 않을 포트와 IP를 지정하여 해당 룰에 맞춰서 패킷을 필터링한다. 룰 설정에서 Inbound와 Outbound로 나눠진다. 1세대 방화벽은 4계층 방화벽으로 포트 주소까지 확인이 가능하여 IP, 포트주소를 이용한 필터링이 가능하다. 포트 주소를 볼 수 있기 때문에 특정 포트, 서비스를 대상으로 하는 공격을 방어할 수 있고 이러한 공격은 지금까지도 존재하기 때문에 1세대 방화벽은 지금까지도 사용중이다. 가장 첫번째에 위치한 방화벽이라서 관문 방화벽이라고도 한다.

Inbound는 외부에서 내부로 들어오는 패킷을 제어한다.

Outbound는 내부에서 외부로 나가는 패킷을 제어한다.

룰은 화이트리스트로 구성할 수도 있고 블랙리스트로 구성할 수도 있다. 화이트 리스트는 All Deny and Some Permit으로 룰에 등록된 패킷 이외의 모든 패킷을 차단한다. 블랙리스트는 All Permit and Some Deny로 룰에 등록된 패킷만 차단하고 나머지는 모두 허용한다. 이러한 특징으로 볼 떄 화이트리스트가 블랙리스트에 비해 우회, 변조를 모두 차단하기 때문에 차단 범위가 넓고 예상하지 못한 위험요소까지 막을 수 있어 강력하다고 볼 수 있지만, 예상하지 못한 범위까지 차단하는 부분에서 단점으로 적용될 수 있다. 정상 사용자임에도 내부로 접근을 차단당할 수 있으며 실제 서비스를 운영하는 기업의 입장에서는 정상 사용자를 거부하게되는 상황이 벌어질 수 있으므로 화이트리스트로 구성할 시 네트워크 전체를 파악해야할 필요가 있다. 그에 비해 블랙리스트는 가변적으로 늘어나는 상황 대처가 수월하여 서비스를 운영하는 입장에서 더 사용하기 좋다.

이러한 Inbound와 OutBound, 화이트리스트, 블랙리스트를 조합하여 방화벽을 구성할 수 있다. 예를 들어 Inbound는 화이트리스트로 구성하고 OutBound는 블랙리스트로 설정하는 등의 방식으로 구성할 수 있다. 운영하는 서비스의 특성을 고려하고 정확히 파악하여 효율적인 방화벽 구성을 해야할 필요가 있다. 룰 구성 시 화이트리스트로 구성하고 싶다면 'All Deny'를 룰 설정 파일의 맨 아래에 위치시키고 위쪽 부터 차례로 허용할 포트와 IP를 지정해주면 된다. 반대로 블랙리스트로 구성하고 싶다면 'All permit'을 맨위로 보내고 그 아래로 차단할 IP와 포트 목록을 작성하면 된다. 이러한 특징으로 볼 때 룰 파일은 위에서 아래로 (Top Down 방식) 읽어 정책을 확인하는 것을 알 수 있다.

1세대 방화벽에서 확인할 수 있는 정보 : 시간, 수신지 IP, 목적지 IP, 수신지 Port, 목적지 Port 전체 전송량(데이터 사이즈)를 알 수 있다.

한계 : 불특정 다수에게 오픈되는 서비스(Port : TCP : 80, 443 // UDP : 53 등)에서 공격 발생시 HTTP body 부분에 공격에 대한 힌트를 찾을 수 있는데 1세대 방화벽의 경우 4계층 방화벽으로 응용게층 영역의 정보를 볼 수 없다.

 

2세대 방화벽

2세대 방화벽은 1세대에서 통신상의 문제를 해결한 것으로 정확한 틀이 없다. 기존 1세대 방화벽에서 정상 세션도 거절되는 현상이 발생했는데, Port를 화이트리스트로 지정 시 서비스 이용자의 브라우저 포트를 거절해버리는 현상이 있었다. 또한 큰 크기의 데이터는 패킷으로 전송 시 1500byte로 나눠지는데 이때 나눠진 패킷을 전부 검사를 하기 때문에 성능저하가 발생했다. 이러한 문제를 해결하기 위해 2세대 방화벽에서는 세션단위로 검사를 진행하고 상태를 확인하는 Statful Inspection F/W를 구성했다. 즉, 기존 1세대 방화벽의 문제를 해결하고 기능을 추가한 현태의 방화벽이 2세대 방화벽이다.

 

3세대 방화벽 => 7L 방화벽

대표적인 7계층 방화벽으로 IDS(Intrusion Detection System)이 있다. IDS는 이상 행위를 '탐지'하고 알려주는 시스템이다. 이상 행위 발생 시 알림만 주기 때문에 해당 알림을 받은 관리자는 적절한 판단하에 해당 행위에 대한 조치를 해야한다. 이러한 IDS는 패킷이 들어오기 전 알람이 오는것이 아닌 내부에 접근 후 알람이 오는 형태이기 때문에 알림이 떠도 관리자가 제대로 조치를 못하거나 악의적인 사용자가 조치를 당하기 전 공격을 하고 빠져나가 버리면 무용지물이 된다. 2001년 ~ 2002년 Code red 웜이 판을 치던 시대였는데 이때 IDS의 한계를 느끼고 개발된 것이다 IPS(Intrusion Prevention System)이다. IPS는 기존 IDS에서 알림만 주는것이 아닌 방화벽 기능을 추가하여 차단 기능까지 갖춘 시스템이다.

7L 방화벽은 비정형 데이터로 구성된 데이터가 방화벽에 들어온다. (HTTP, Text, FTP 등) 사이즈도 다르고 고정된게 없어서 비정형이라고 한다. 기존 1, 2세대 방화벽의 경우 4계층에서 동작하기 때문에 정형화된 패킷의 헤더를 통해 룰을 정하기가 편했지만 7계층의 경우 다양한 형태가 존재하기 때문에 여기서 필터링을 위한 룰 적용에는 정규표현식을 이용한다.

룰 작성 시 공격에 대한 패턴을 정규표현식으로 구성하여 작성하고 정해진 규칙에 따라 데이터를 필터링한다. 이러한 정규표현식은 무조건 정답이지는 않다. 즉, '이러한 패턴은 공격일 것이다.' 라고 지정하는 형태이므로 정상적인 동작도 차단될 수도 있다.

수집 되는 로그 : 시간, 공격유형, 탐지근거, Rule, 4계층에서 수집되는 정보들, 처리결과(알림, 차단), 시스템(서비스) 등 여러 정보를 수집할 수 있다.

 


 

방화벽의 룰 설정에 따라 탐지에 대한 오탐(False Positive)과 미탐(False Negative)이 발생하게 된다. 특히 비정형 데이터에 대해 정규표현식을 이용한 필터링 시 패턴이 들어가게 되면서 더욱 심해졌다.

  Positive Negative
False 오탐 미탐
True 정상통신 정상

오탐 : 정상 통신임에도 불구하고 차단해버릴 경우이다. 룰을 공격 범위보다 더 넓게 즉, 공격이라고 인정되는 행위보다 더 넓은 범위로 루즈하게 설정 시 정상 행위임에도 불구하고 차단해버리는 오탐의 여지가 높아진다.

미탐 : 비정상 통신임에도 불구하고 허용할 경우이다. 룰을 공격 범위에 최대한 가깝게 즉, 공격이라고 인정되는 행위에 최대한 타이트하게 설정할 시 지정한 공격 패턴 이외의 변형된 형태의 공격 시 탐지를 못하게 되어 미탐의 여지가 높아진다.

이러한 오탐과 미탐은 운영하는 서비스에 따라 오탐을 줄이고 미탐을 어느 정도 허용할지 또는 미탐을 줄이고 오탐을 어느 정도 허용할지 선택해야 한다. 보안을 하는 입장서는 서비스 통신의 흐름이나 가용성을 저하시키는 보안은 안좋기 때문에 적절한 범위를 지정하는 것이 중요하다.

반응형