brunch

매거진 침해대응

You can make anything
by writing

C.S.Lewis

by Moai Nov 19. 2022

네트워크와 보안 #3 - 방화벽

Firewall, PaloAlto


보안에는 3대 프로세스로 Protection, Detection, Response(Reaction)이 있다.


Protection은 침입이 일어나지 않도록 보호조치를 하는 것을 말한다. ex) Firewall

Detection은 Protecton을 뚫고 들어오는 공격이 있는지 확인하는 것을 말한다. ex) IDS

Response는 침입이 발생했을 경우 대응하는 것을 말한다. 여기에는 복구도 포함된다. ex) IPS




어떤 회사의 보안담당자가 다음의 보안정책을 적용하고 싶다면 어떻게 해야할까?


직원이 위험한 사이트에 접근하는 것을 막고 싶다.

직원의 PC가 악성코드에 감염된 경우 해커의 명령&제어(C&C)서버와 통신하는 것을 막고싶다.

직원이 회사의 기밀정보를 유출하지 않도록 특정 클라우드, 메일 사용을 막고싶다.

회사에서 운영하는 서비스에 오직 한국에서만 접속가능하도록 하고 싶다.


지금부터 회사 네트워크의 보초역할을 하는 방화벽에 대해 설명하고자 한다.


네트워크에서 방화벽은 성문의 보초가 지나가는 행인의 통행증을 검사하고 출입을 허가하는 것과 비슷하다. 성문 보초가 아무리 잘 통제하더라도 개구멍이 있으면 무의미하다. 효과적으로 통제하기 위해서는 네트워크라는 성안에 들어갈 수 있는 길은 성문 외에는 출입한 길이 없어야한다.


 - 접근제어

방화벽 관리자는 사전에 접근/차단에 대한 rule을 방화벽에 명시한다. 특정 IP, Port로 들어오고 나가는 패킷에 대해 주어진 rule에 따라 통과시킬지 말지를 결정한다. 허용하는 룰만 통과 시키고 그 외 명시되지 않은 접근은 모두 차단한다. 


 - 로깅, 감사

위에서 작성한 방화벽 정책은 정확하게 문서화하고 잘못된 것이 없는지 정기적으로 모니터링해야 한다. 그리고 무결성을 보장하기 위해 방화벽 설치 후 직접적으로 로그인할 수 없도록하고 설정해야한다. 혹시 모를 사고 발생 시 추적을 위해 다음과 같은 정보를 저장한다.

방화벽을 통과하는 패킷 및 연결에 대한 정보

허용되지 않은 접속 시도 및 연결에 대한 정보

관리자의 설정 변경 정보


이처럼 방화벽은 들어오고 나가는 패킷을 제어하고 그 결과를 로깅한다. 하지만 그 양이 많다보니 정밀한 제어는 불가능하고 다음에 해당되는 패킷에 대해서는 보호할 수 없다.

사전에 정의된 룰에 해당되지 않는 연결

방화벽 내부에서 일어나는 작업

방화벽을 우회한 접속(무선랜, 핫스팟, ...)


장점

여러분의 네트워크에는 아주 오래전에 구매한 서비스를 사용중이다. 이 서비스는 취약점이 100개도 넘지만 더이상 업데이트가 되지 않아서 패치할 수도 없고 매우 중요한 서비스라 제거할 수도 없다. 이 때 이 서비스를 외부에서 접근할 수 없도록 방화벽이 차단할 수 있다. 

특정 서비스를 위해서는 많은 서버들이 필요하다. 웹서버, DB서버, redis서버, 테스트용 서버, 개발 서버, 커버로스 서버, 등등.. 여기서 외부에서 접근할 필요가 있는 서버는 웹서버 하나이다. 그리고 그 외 서버는 외부에서 접근할 필요가 없으므로 접근을 막는 것이 좋다. 이 때 특정 서비스만 접근할 수 있도록 접근 제어할 수 있다.


단점

하지만 이렇게 보호해야할 서버와 PC들이 많아지게 되면 관리가 매우 힘들어진다는 단점이 존재한다.


방화벽은 TCP/IP의 여러계층에서 제어할 수 있다. 상위 계층일 수록 많은 정보를 볼 수 있기 때문에 자세하게 접근제어를 할 수 있지만 그만큼 장비의 높은 자원을 필요로 한다. 낮은 계층에서는 IP/PORT만으로 접근제어를 하기 때문에 강력한 로깅, 인증을 제공하지 못한다. 


또한 작은 패킷, 쪼개진 패킷 등 디도스/도스 공격에 매우 취약하다. 따라서 방화벽 외에 안티 디도스 장비를 사용하고 로드 밸런싱, 백업을 위한 추가 장비를 설치한다. 바이패스 스위치라는 것도 있는데 방화벽이 살아 있는지 계속 확인해서 다운될 경우 우회경로를 통해 바로 스위치로 연결시킬수도 있다.




차세대 방화벽

예전 방화벽은 IP주소와 포트를 기반으로 차단룰을 만들고 커넥션을 검증했다면 최상위 계층 L7 방화벽은 실제 패킷 내용을 검사해서 어떤 애플리케이션이 통신하고 있는지까지 파악할 수 있다. 차세대 방화벽 또한 URL이나 패킷 내용을 보고 현재 이 트래픽이 어떤 애플리케이션인지 까지 가늠할 수 있다. 예전 방식에서는 웹서핑을 제어하려면 모든 웹서비스를 허용/차단할 수 밖에 없었는데 지금은 특정 어플리케이션만 허용하거나 차단할 수 있다. 

https://applipedia.paloaltonetworks.com/

여기에서 자세한 어플리케이션 룰을 확인할 수 있다.

최근에는 이러한 기능뿐만 아니라 악성트래픽, 도메인 자동 차단, SSL 트래픽 복호화, ldap 연동 등 다양한 기능이 추가되고 있다. External Dynamic Link (EDL) 업데이트를 통해 차단할 아이피 목록을 커스텀하게 설정할 수도 있다.


모든 트래픽을 팔로알토와 같은 L7 방화벽으로 차단하면 부하가 생길 수 있기 때문에 L4 로드밸런싱, L3 라우팅, L2 스위치 등을 따로해서 장비를 분산시키는 것이 일반적이다.





마지막으로 방화벽을 어디에 위치시킬 것인지를 고민해보자

쇼핑몰을 운영하는 회사의 경우 DMZ 에 외부에 오픈된 서버(프론트엔드)를 놓는다. 외부에서 이 서버로 원격접속은 불가능하도록 접근제어를 설정하고 서비스포트(80, 443)만 오픈한다. 서버 엔지니어가 서버 운영을 해야하므로 직원 내부망에서 DMZ 서버 원격 접근은 허용해준다. DMZ에서 외부로 나가는 포트는 열 필요가 없지만 가끔 패치나 linux 라이브러리를 다운받아야 하는 경우가 있다. 이때는 모두 오픈하지말고 프록시 서버를 하나 설치해서 이 프록시 서버를 통해서 패치를 다운받을 수 있도록 설정하자. 직원 내부망에서 외부로 나가는 요청의 경우 웹 같은 경우 대부분 permit하게 해준다. 다만 악성 트래픽이나 웹하드 주소 같은 경우엔 회사 정책으로 차단할 수 있다. 




방화벽은 보통 한대만 구매하지 않는다.

방화벽이 죽으면 운영중인 서비스가 중단될 수 있기 때문에 자칫하다가 회사가 망할 수도 있다. 추가 장비를 더 구매해서 HA(High Availability)를 구성한다. 


Active-Standby (AS구성)

동일한 방화벽을 구매해서 대기중으로 설정한다. 대기중인(Standby) 방화벽은 사용중인 (Active) 방화벽과 정책이 동일해야하므로 LACP와 같은 프로토콜을 통해 설정을 자동으로 동일하게 맞추는 작업을 하게 된다. 이 방법의 가장큰 문제점은 방화벽에 장애가 발생해서 대기중인 방화벽이 Active가 될 때 미세하지만 잠깐 순단이 발생하게 된다.


Active-Active (AA구성)

여기서 앞단에 L4 스위치를 둔다면 로드밸런싱이 가능해져서 두개의 방화벽을 모두 사용할 수 있게 된다. 돈은 조금 들 수 있지만 두개의 방화벽을 모두 사용할 수 있고 순단을 막을 수 있다. 다만 이 방법엔 정책이 변경돼서 장애가 발생할 경우 둘 다 문제가 발생할 수 있다.


L2 Fallback (바이패스 스위치

이렇게 방화벽이 둘 다 죽는 경우를 대비해서 우회경로를 만들어야 한다. 너무 트래픽이 몰려서 방화벽이 제대로 동작하지 못할 경우 트래픽을 모두 흘려보내도록 L2 스위치로 만들어버릴 수도 있다. 


풀 메시

그렇다면 스위치가 죽어버리면 어떻게 해야할까..? 비용이 발생할 수 있지만 L4스위치도 로드밸런싱을 해준다.

참고로 맨 하단에 L2스위치를 두는 이유는 SNAT(Source Network Address Translation)으로 직원 내부망을 만들어주기 위함이다. 무선 공유기처럼 여러명의 사용자가 하나의 공인 아이피에 대해 인터넷 통신을 허용하게 해준다. 그리고 특정 주소에 포트가 오픈된 설정이 없을 경우 외부에서 내부로 연결은 불가능하다. 

매거진의 이전글 네트워크와 보안 #2 - 정보수집
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari