스니핑 : '코를 킁킁거리다'라는 뜻을 가진 단어이며, 네트워크에서 전송되는 패킷을 훔쳐보는 행위.

스누핑 : '염탐하다'라는 뜻으로 네트워크상에 떠도는 중요한 정보들을 염탐하고 훔치는 행위. 스니핑이랑 유사.

스푸핑 : '속이다. 도용하다'라는 뜻으로 대상을 속이고 위장하여 공격하는 기법.

 

실습

구분 시스템 정보
공격자 칼리리눅스(192.168.0.122, 00:0c:29:4f:eb:fa)
희생자 윈도우A(192.168.0.124, 00:0c:29:2d:52:1b)
윈도우B(192.168.0.3, a8:5e:45:51:62:47)
공유기 아이피타임(192.168.0.1, 88:36:6c:32:90:63)

실습 환경은 위와 같다. VMware으로 설치한 호스트들이며, 네트워크는 브리지 모드로 실제로 사용하는 네트워크망이다. IPTIME사의 공유기에는 네트워크 공격에 대한 방어 기능들이 탑재되어있어 비활성화 후 진행했다.

 

스니핑은 두 가지 환경이 있다. 허브 환경에서의 스니핑은 무작위 모드만 활성화시키면 패킷을 캡처할 수 있다. 그 이유는 허브는 모든 데이터를 플러딩 하기 때문에 쉽게 캡처가 가능하지만, 스위치 환경에서는 MAC 테이블을 보고 데이터를 전달하기 때문에 무작위 모드로만은 불가능하다. 그래서 스위치재밍이나, ARP 스푸핑 등으로 스니핑 환경을 만들 수 있는데 여기서는 간단하게 ARP 스푸핑과 ARP 다이렉트 공격 실습을 하겠다.

 

칼리리눅스의 'ettercap' 라는 중간자 공격(MITM) 툴을 사용해서 호스트 A, B를 속일수 있습니다.

 

(좌) 스푸핑 전 / (우) 스푸핑 후

호스트A 입장에서는 호스트B의 맥주소가 4f-eb-fa 인줄알고 데이터를 보내지만 공격자가 arp reply를 지속적으로 보내 호스트B의 맥주소를 공격자의 맥주소로 위장하여 가로채고 있다. 즉, 공격자가 중간자 역할을 하여 서로간 통신이 끊기지 않게 데이터를 전달하여 A와 B사이의 통신을 훔쳐볼 수 있고 이를 ARP 스푸핑이라 한다. ARP 스푸핑은 특정 대상을 삼아서 공격하지만 모든 호스트를 공격하는 방법도 있다. ARP 리다이렉트는 라우터의 맥주소를 공격자의 맥주소로 위조해 모든 통신이 공격자에게 거쳐서 외부로 나가게한다.

 

(좌) 스푸핑 전 / (우) 스푸핑 후

이렇게 스푸핑 공격을 해서 스니핑을 할 수 있다면 암호화가 안된 패킷을 훔쳐볼 수 있다. 위 사진은 FTP의 로그인 과정이 캡처된 사진이고, 사용자 계정과 비밀번호가 그대로 노출되고 있다.

HTTP는 비 연결성 특징을 가지고 있기 때문에 통신하는 서로가 요청/응답이 끝나면 통신을 종료하게 된다. 쉽게 말하면, 로그인을 하고 페이지를 이동할 때마다 로그인을 해야 하는 불상사가 발생할 수 있다. 이러한 단점은 쿠키와 세션을 사용해서 보완할 수 있다.

 

쿠키와 세션의 역할은 비슷하지만 크나큰 차이는 저장되는 위치이다. 쿠키는 어떤 웹사이트를 방문했을 때 텍스트 형태로 클라이언트에 저장되며, 클라이언트의 상태 정보를 담은 임시파일이다. 이후 똑같은 웹사이트를 다시 방문했을 시 저장되어 있는 쿠키값과 함께 서버에 자원을 요청하게 된다. 그래서 자동 로그인, 광고 하루 안 보기, 장바구니 담기 등 같은 기능에 사용된다. 좀 더 이해하기 쉽게 홈페이지를 만들어 쿠키를 생성해보았다.

 

간소하지만 광고 팝업창이라 치자. 여기서 내가 작성한 소스코드는 홈페이지에 접속하면 쿠키값을 검사해 없으면 팝업창을 띄우게 된다. 팝업창에서 '오늘 하루 그만 보기'를 누르면 쿠키가 생성되면서 홈페이지에 다시 접속해도 쿠키가 만료될 때까지 팝업창이 안 뜨게 한다.

 

쿠키 확인은 브라우저마다 다른데 크롬 브라우저 기준으로 사이트 주소 왼쪽에 느낌표를 누르면 확인 가능하다. 쿠키 이름, 경로, 만료 날짜 등 해당 쿠키에 관한 정보를 확인할 수 있다. 하지만 쿠키는 클라이언트, 즉 사용자의 하드디스크에 저장하다 보니 쿠키에 대한 변조 및 유출 우려가 있고 웹브라우저를 변경하면 저장되어있는 쿠키는 사용 불가하다. 그래서 나온 게 세션이다.

 

세션은 쿠키와 반대로 서버에 저장되다 보니 변조 및 유출에 대한 우려가 없고, 클라이언트의 웹브라우저 종류에 상관없이 사용 가능하다. 하지만 양이 많아질수록 서버에 대한 부하가 커진다는 단점이 있다. 세션은 식별할 수 있는 세션 ID를 사용하는데 세션 ID를 쿠키로 저장한다. 결국 세션도 쿠키를 사용하지만 민감한 정보를 저장하진 않는다. 그런데 쿠키값에 있는 세션 ID가 스니핑으로 인해 유출당했을 경우 보안상 문제가 생긴다.

 

닉네임 '세션하이재킹' 으로 로그인되어 있고, PHP의 세션 ID는 PHPSESSID에 저장되니 눌러보면 확인 가능하다. 만약 저 값이 XSS나 스니핑 등의 취약점으로 유출되었을 시 공격자는 세션 ID로 로그인을 할 수 있다.

 

위 사진을 보면 공격자가 발급받은 쿠키값이 보인다. 하지만 여기다가 피해자의 쿠키값을 대입하면 피해자 아이디로 로그인이 될 것이다. 이를 세션 하이재킹이라 한다.

 

공격 성공 화면

그러면 세션도 쿠키도 둘다 안전하지 않으면 뭘 쓰느냐고 의아해할 수 있는데, 이는 웹 취약점 또는 네트워크 보안 문제에서 발생한 것이기 때문에 웹 시큐어코딩이나 HTTPS 프로토콜을 사용한 암호화 방법, 네트워크 보안 구축 등 으로 예방할 수 있다.

'공부 > ' 카테고리의 다른 글

XSS와 CSRF  (0) 2020.06.10

XSS(Cross-Site Scripting)

XSS는 해커가 웹 사이트에 악성 스크립트를 삽입해 사용자를 공격하는 취약점이다. 입력받은 값을 검사하지 않았을 때 발생하며, 이 취약점으로 인해 악성 홈페이지 접속하게 한다던지 또는 세션이나 쿠키를 탈취할 수 있다.

 

 

시큐어 코딩이 안된 웹사이트에 위와 같이 글을 작성해보았다. 스크립트를 이용해 공격자 사이트로 쿠키값을 넘겨주는 코드이다. 

 

이미지 사이즈 크기를 0으로 해 놓았기 때문에 사용자는 자신이 공격당한 것을 알아채지 못한다.

 

공격자 서버

이 취약점은 웹 사이트에서 입력값을 검증하지 않아서 발생했기 때문에 PHP 내장 함수인 htmlspecialchars를 사용하면 XSS 공격에 방어할 수 있다. htmlspecialchars 함수는 ' " < > &  문자들을 HTML 엔티티 문자로 변환하기 때문에 스크립트를 사용할 수 없다.

 

htmlspecialchars 함수 적용

 

CSRF(Cross-Site Request Forgery)

XSS와 마찬가지로 입력값이 검증되지 않으면 스크립트 구문으로 공격이 가능하지만 XSS는 공격 대상이 클라이언트인 반면, CSRF는 서버로 대상으로 공격한다. CSRF는 등록, 수정, 삭제 등의 행위를 사용자의 의지와는 무관하게 공격하게끔 할 수 있다. XSS와 다르게 해당 웹 사이트를 공격하기 위해서 요청, 응답 메세지 분석이 필요하는 귀찮은 점도 있다.

 

게시글 생성 코드

위 코드를 작성하면 누군가가 저 글을 볼때마다 관리자의 이름으로 글이 계속 생성된다. 생성뿐만아니라 코드 작성에 따라 삭제도 가능하며, 권한이 있는 사이트면 관리자급 권한 상승을 하여 개인정보도 탈취할 수 있다.

 

대응법은 XSS처럼 기본적으로 함수를 사용해 특수문자를 막는 방법도 있지만, Referrer 검증 또는 토큰을 사용하는 방법이 있다.

'공부 > ' 카테고리의 다른 글

쿠키(Cookie)와 세션(Session)  (0) 2020.06.11

TCP를 공부하다보면 3-way handshake 또는 4-way handshake라는 용어를 많이 접하게 된다. TCP는 연결 지향적인 특성을 가지고 있으며, 통신하고자 하는 상대방과 세션을 연결 후 데이터를 보내게 된다. TCP 세션을 수립할때 3-way handshake 과정을 거치며, 반대로 종료할때는 4-way handshake 과정을 거친다.

 

3-Way Handshake

그림-1

1. 클라이언트가 서버와 세션 연결을 위해 SYN 신호의 패킷을 전송한다.

2. SYN 패킷을 받은 서버는 자신의 SYN와 ACK라는 응답 신호의 패킷을 다시 클라이언트로 전송한다. 이때 ACK는 상대방의 시퀀스 넘버에 +1을 하여 전송한다.

3. 마지막으로 클라이언트가 ACK 패킷을 보내면 서버와의 세션이 성립된다.(ESTABLISHED)

 

이해를 돕기위해 실습을 해보았다.

 

그림-2 (3-way handshake 패킷)

 

그림-2는 와이어샤크로 3-way handshake 과정을 캡처한 사진이다. 클라이언트(192.168.0112)가 서버(192.168.0.3)로 SYN 패킷을 보낸다. 이때 클라이언트의 시퀀스 넘버 0이라는 정보를 같이보냄. 패킷을 받은 서버도 자신의 시퀀스 넘버와 함께 ACK(클라이언트 seq+1)를 보낸다. 마지막으로 클라이언트는 ACK(서버의 seq+1) 보내면서 세션 연결을 한다.

 

4-Way Handshake

그림-3

1. 클라이언트가 서버에게 FIN 신호의 패킷을 보내고 FIN_WAIT_1 상태가 된다.

2. FIN 패킷을 받은 서버는 ACK 패킷을 보내고 CLOSE_WAIT 상태가 된다.

3. 클라이언트는 ACK 패킷을 받으면 FIN_WAIT_2 상태로 변경하고 FIN 패킷을 기다린다.

4. 서버는 FIN 패킷을 보내고 LAST_ACK 상태가 되고, FIN을 받은 클라이언트는 ACK를 서버로 보낸 후 TIME_WAIT 상태로 변경하여 잉여 패킷을 기다린다. 

5. 클라이언트에게 ACK를 받은 서버는 CLOSED 상태로 변경하고 연결을 종료한다.

 

 

그림-4 (4-way handshake 패킷)

 

TCP/UDP란?

4계층인 전송 계층에서 사용되는 프로토콜이며, 컴퓨터가 다른 컴퓨터와 통신을 하기 위한 프로토콜이다.

 

TCP(Transmission Control Protocol)

  • 연결지향
  • 신뢰성 있는 데이터 통신
  • 데이터 순서 보장
  • 혼잡제어, 흐름제어, 오류제어

특징을 설명하기 전에 TCP 세그먼트 구조를 알아보자. 전송 계층의 프로토콜 데이터 단위(PDU)는 세그먼트이다. PDU는 상위 계층에서 하위 계층으로 데이터를 전달될 때 데이터에 각 계층의 특성에 맞는 헤더가 추가되는데 이를 캡슐화라고 하며, 그 과정의 결과물이라고 보면 되겠다. 즉, 세그먼트는 응용계층 PDU인 데이터에 헤더가 추가된 것으로 보면 된다. 

 

그림 1

그림 1은 TCP 세그먼트의 헤더 구조이다. 여기서 몇가지만 알아보자면 Sequence Number는 송신 데이터에 순서를 부여, Acknowledgement Number는 수신 데이터에 순서를 부여하여 순차 전송에 신뢰성을 보장한다. 

 

Window는 흐름제어를 위해 사용하는 필드로, 송신자에게 자신의 가용 수신 버퍼의 크기를 알려준다.

 

Checksum은 오류를 검출하기 위해 사용되는 필드이다.

 

TCP는 송신자와 수신자가 연결된 이후에 데이터를 전송하기 때문에 연결지향적인 특징을 가지고 있다. 3-way handshake 과정을 거쳐 연결하며, 연결을 종료할 때는 4-way handshake 과정을 거쳐 종료한다. 연결/종료 과정에 대한 설명은 따로 포스팅할 예정이다. 

 

UDP(User Datagram Protocol)

  • 비 연결지향
  • 신뢰성 X
  • 오류검출

그림2

어찌보면 UDP는 TCP의 반대라고 볼 수 있다. 헤더 구조도 보면 TCP에 비해 필드도 단순하다. UDP는 TCP와 다르게 양방향 연결을 하지 않고 일방적으로 데이터를 보낸다. 그래서 TCP보다 속도가 빠르지만, 별도의 연결 과정이 없어 신뢰성이 떨어진다. 대표적인 사용처는 실시간 스트리밍에 사용된다.

1계층(물리 계층) - 리피터, 허브

리피터(Repeater)

긴 케이블일수록 신호가 약해지기 때문에 신호를 멀기 보내기 위한 증폭 장치이다. 지금은 다른 네트워크 장비에 기본적으로 리피터 기능이 탑재되어있어 사용하지 않는다.

 

허브(Hub)

리피터 역할을 하며, 기존 리피터와 다르게 여러 장비를 연결할 수 있다. 특징으로는 허브는 CSMA/CD 방식을 적용하고 있기 때문에 여러 장비에서 동시에 데이터를 전송하지 못한다. 예를 들어 A가 데이터를 전송 중일 때 B도 데이터를 보내면 콜리전(충돌)이 일어나게 된다. 하나의 허브에 연결되어 있는 모든 장비들은 같은 콜리전 도메인(Collision Domain)안에 있기 때문에 사용하는 장비가 많아지면 콜리전 도메인의 크기는 커지고, 허브는 들어온 데이터를 모든 포트로 플러딩하기 때문에 콜리전이 자주 발생한다.

 

2계층(데이터 링크 계층) - 브리지, 스위치

브리지(Bridge)

네트워크 세그먼트를 서로 연결해 주는 장치이다. 세그먼트라고 하면 경우에 따라서 의미가 다르다. 여기서 세그먼트란 하나의 큰 네트워크를 구성하는 작은 네트워크들을 세그먼트라고 표현한다. 그 세그먼트를 연결해주는 것이 브리지, 스위치 등 같은 장비들이 있다. 브리지는 5가지의 기능이 있다.

 

Learning - 단어 그대로 학습한다는 뜻이다. A라는 호스트가 데이터를 보내면 A의 맥 어드레스를 브리지의 맥 어드레스 테이블에 저장해놓고, 다른 호스트에서 A라는 호스트에 데이터를 브리지는 맥 어드레스 테이블을 참고하여 전송 여부를 결정한다.

 

Flooding - 목적지 정보가 맥 어드레스 테이블에 없다면 모든 포트로 똑같은 데이터를 전송한다.

 

Forwarding - 목적지 정보가 맥 어드레스 테이블에 있다면 해당 포트로 데이터를 전송한다. 없으면 Flooding.

 

Filtering - 브리지를 건너지 못하게 하는 기능이다. A와 B호스트가 같은 세그먼트, C와 D호스트가 또 다른 세그먼트라고 가정해보자. A호스트가 B호스트와 통신을 하려고 데이터를 보내면 브리지는 맥 어드레스 테이블에서 B호스트의 정보를 확인한다. A와 B호스트는 같은 세그먼트에 있으므로 브리지는 C,D호스트가 있는 세그먼트로 가는 다리를 차단한다. 이러한 기능때문에 허브와 다르게 콜리전 도메인을 나눌 수 있다.

 

Aging - 어떠한 맥 주소를 테이블에 저장하면 계속 유지하는 것이 아니라, 300초가 지나도록 해당 맥 주소를 가진 프레임이 들어오지 않으면 테이블에서 자동으로 삭제된다.

 

스위치(Switch)

스위치는 브리지랑 비슷하지만 차이가 있다. 차이점은 처리방식이 스위치는 하드웨어, 브리지는 소프트웨어 방식이기 때문에 속도는 스위치가 훨씬 빠르다. 또한 브리지에 비해 제공되는 포트 수도 많고, 포트 별로 속도를 지정할 수 있다. 여러모로 브리지의 상위 호환 장비이므로 브리지는 현재 사용되진 않는다. 스위치를 계층별로 분류하면 다음과 같다.

 

L2 스위치 - 가장 기본적인 스위치이다. 데이터 링크 계층에서 동작하며, 맥 주소를 기반으로 패킷을 전달한다. 다른 스위치에 비해 가격이 저렴하다는 장점이 있다.

 

L3 스위치 - L2 스위치에 라우팅 기능이 추가된 장비로 IP 정보를 보고 스위칭한다. 기능적으로 보면 라우터랑 차이가 거의 없지만, 라우터는 소프트웨어 방식이라 속도면에서 하드웨어 방식인 L3 스위치가 훨씬 빠르고, 가격도 저렴하다. 그렇다면 라우터를 쓰는 이유가 없지 않냐고 할 수도 있는데, 제품에 따라 지원하는 기능이 다르기 때문에 용도에 맞게 사용하면 된다. 

 

L4 스위치 - 4계층 프로토콜인 TCP/UDP를 이용하며, IP와 PORT 기반으로 스위칭을 한다. L4 스위치에서는 부하 부산(Load Balancing) 기능을 제공하는데, 많은 양의 트래픽을 여러 서버로 분산시켜주는 기능을 말한다.

 

L7 스위치 - L4 스위치와 기능과 역할을 동일하나, L7 스위치에서는 추가로 페이로드를 분석하여 패킷을 처리한다. 페이로드를 분석함으로써 Dos나 SYN Attack 등 네트워크 공격에 대해 방어가 가능하고, 특정 바이러스 감염 패킷을 필터링할 수 있다. L7 스위치를 투입하면서 네트워크 보안 강화에 힘을 실어줄 순 있지만 가격이 비싸다는 단점이 있다.

 

3계층(네트워크 계층) - 라우터

라우터(Router)

라우터는 네트워크간 데이터 전송을 위해 최적 경로(Route)를 설정하며, 이 경로를 따라 데이터를 전송하는 장비를 말한다. 앞서 L3 스위치에서 말했던 것처럼 기능은 비슷하지만, 라우터는 가격이 비싸고 초기 설정이 복잡하다는 단점이 있다. 라우터의 종류는 다음과 같다.

 

코어 라우터 - 인터넷 서비스 제공자(ISP)의 랜이나 여러 개의 ISP 네트워크를 서로 연결한다.

 

센터 라우터 - WAN 회선을 거쳐 회사의 본점과 회사의 지점을 서로 연결한다. 또, 인터넷 서비스 제공자와 기업의 네트워크와 연결할 때에도 쓰인다.

 

엣지 라우터 - 지점, 영업소의 네트워크를 WAN 회선에 연결하여 회사의 본점의 라우터에 접근한다.원격 라우터: 랜과 WANG을 중계한다. WAN 라우터라고도 부른다.

 

브로드밴드 라우터 -가정이나 작은 규모의 기업에서 브로드밴드급의 인터넷에 접속할 때 쓰인다.

 

핫스팟 라우터 - 휴대용 핫스팟에서 인터넷에 접속할 때 쓰인다.

 

ISP 라우터 - 인터넷을 제공하는 제공자에 의해 접속할 때 쓰이는 라우터이다.

 

출처 : https://ko.wikipedia.org/wiki/%EB%9D%BC%EC%9A%B0%ED%84%B0

'공부 > 네트워크' 카테고리의 다른 글

3-Way Handshake, 4-Way Handshake  (0) 2020.06.06
TCP/UDP  (0) 2020.06.05
IDS / IPS  (0) 2020.05.23
방화벽(Firewall) / 웹 방화벽(Web Application Firewall)  (0) 2020.05.14
OSI 7계층 모델(OSI 7 Layer Model)  (0) 2020.05.10

침입 탐지 시스템(Intrusion Detection System, IDS)란 ?

방화벽과 함께 활용되는 네트워크 보안 솔루션으로 시스템과 네트워크에서 송수신되는 모든 데이터의 움직임을 감시하고, 악의적인 동작들을 탐지한다.

 

네트워크 기반 IDS (NIDS)

네트워크에 위치해 있으며 하나의 독립된 시스템으로 운용된다. NIDS는 무차별 모드(Promiscuous mode)로 동작하는 NIC를 통해 네트워크 패킷을 캡처하여 분석을 통해 탐지하는 시스템이다. 설치할때 기존 네트워크의 환경을 변경할 필요가 없으며, 관리가 쉽다는 장점이 있다. 하지만 많은 양의 트래픽은 성능에 영향을 주고, 암호화된 패킷은 분석할 수 없다는 단점이 있다.

 

호스트 기반 IDS (HIDS)

HIDS는 NIDS가 탐지할 수 없는 침입을 탐지하며, 시스템 이벤트 감시를 통한 정확한 침입 탐지가 가능하다. 호스트에 설치함으로써 호스트별 상세 분석이 가능하며 사용자 단위 분석도 가능하다. 하지만 개별로 설치 및 관리해야 하며, 네트워크 패킷은 탐지 불가하다. 또한 해커에 의해 호스트 침해가 발생하면 HIDS을 장악할 수 있다.

 

침입 방지 시스템(Intrusion Prevention System, IPS)란 ?

다양한 보안기술로 침입이 일어나기 전에 실시간으로 침입을 차단, 방어하는 능동형 보안 솔루션이다. 쉽게 말하면 침입 탐지 시스템(IDS)에 차단 기능이 추가된 시스템이라 보면 된다. IPS의 일반적인 설치 위치는 방화벽 뒤에 설치한다. 1차적으로 방화벽에서 패킷을 필터링하기 때문에 IPS의 성능 부하를 줄여준다. 하지만 반드시 방화벽 뒤에 설치해야 하는 것은 아니다. IPS를 어떻게 사용하느냐에 따라서 위치 디자인이 달라지기 때문에 환경에 맞는 위치에 설치하면 된다.

 

◆ Firewall, IDS, IPS 비교

구분 Firewall IDS IPS
목적 접근통제 및 인가 침입 여부의 감지 참입 이전의 방지
특징 수동적  차단, 내부망 보호 로그, 시그니처 기반의 패턴 매칭 정책, 규칙DB 기반의 비정상 행위 탐지
패킷 차단 O X O
패킷 내용 분석 X O O
오용 탐지 X O O
오용 차단 X X O
이상 탐지 X O O
이상 차단 X X O
장점 엄격한 접근 통제, 인가된 트래픽 허용 실시간 탐지, 사후분석 대응기술 실시간 즉석 대응, 세션 기반 탐지 가능
단점 내부자 공격 취약, 네트워크 병목현상 변형된 패턴에 대해서는 탐지 어려움 오탐 현상 발생 가능, 장비 고가

 

그림 1

방화벽이란?

외부로부터 내부망을 보호하기 위한 네트워크 보안 시스템중 하나이다. 그림 1과 같이 불필요한 접근은 차단할 수 있고, 반대로 허용할 수도 있다. 방화벽은 하드웨어, 소프트웨어 두 가지로 나눌 수 있다. 하드웨어 방화벽은 인프라에 설치되는 독립적인 장비이며, 소프트웨어 방화벽은 윈도우의 방화벽이나 리눅스의 iptables, ufw 등이 이에 해당된다. 여기서는 하드웨어 방화벽에 대해 설명할 것이다.

 

방화벽의 종류

1. 패킷 필터링 방화벽

패킷 필터링 방식은 네트워크 계층과 전송 계층에서 동작한다. 단순히 미리 설정해둔 정책에 따라 특정 IP 주소나 포트를 허용 및 차단하는 작업을 한다. 비용이 적고 다른 방식에 비해 빠르다는 장점이 있지만, 설정해둔 정책의 개수나 순서에 따라 방화벽의 성능에 문제가 생길 수 있다. 또한 ACL 규칙을 만들때 인바인드, 아웃바인드 규칙을 모두 설정해야 해서 보안에 취약하다.

출발 IP 목적 IP 출발 Port 목적 Port Permit / Deny
any 10.1.1.2 any 80 permit
10.1.1.2 any 80 any permit

2. 스테이트풀 인스펙션

패킷 필터링 방식과 동일한 패킷 정보를 검사하지만 TCP 연결에 관한 정보를 기록한다. 또한 TCP 순서를 번호를 추적하여 새션 하이재킹 공격을 방어할 수 있으며, 모든 통신 채널을 상태 테이블에 유지하며 관리한다. 위에서 패킷 필터링 방식은 돌아오는 패킷에 대해 허용하는 정책을 추가해야 하는데, 스테이트풀 인스펙션은 인바인드 규칙만 추가해주면 TCP연결시 자동으로 아웃바인드 규칙을 추가하고 통신이 끝나면 자동으로 삭제한다.

 

3. 애플리케이션 방화벽

기존 방화벽이 IP 주소와 포트를 기반으로 규칙을 만들고 검증했다면, L7 방화벽에서는 실제 패킷 내용을 검사해서 어떤 애플리케이션과 통신하고 있는지 확인이 가능하고 좀 더 세밀한 규칙 설정이 가능하다. 예를 들어 카카오톡은 차단하고 텔레그램은 허용하는 만들 수 있다. 대표적인 장비로는 IPS, UTM, WAF 등이 있다.

 

4. 서킷 게이트웨이

서킷 게이트웨이는 세션 계층과 애플리케이션 계층 사이에 동작하며, 애플리케이션 방화벽과 달리 서비스별로 프락시가 존재하지 않고, 하나의 대표 프락시를 이용한다. 내부 IP 주소를 숨길 수 있지만, 별도의 프로그램을 배포해서 사용자 PC에 설치해야 하는 번거러움이 있다.

 

5. 하이브리드 방화벽

스테이트풀 인스펙션 + 애플리케이션 게이트웨이의 방식이며, 속도와 성능을 유지하면서 선택적으로 프락시 기능을 사용하는 장점이 있지만, 관리가 어렵고 복잡하다. 대부분의 방화벽이 하이브리드 방식을 사용한다.

 

5. L2 방화벽(브리지모드 or Transparent Mode)

TP모드를 사용하게 되면 Transparent의 뜻처럼 장비 사이에서 투명하게 자리 잡게 된다. 일반적으로 방화벽은 최소 두 개의 NIC를 사용하는데, L2 방화벽은 특성상 IP주소를 할당할 필요가 없으므로 두 인터페이스 모두 같은 IP 주소 대역을 사용할 수 있다. 그러므로 방화벽 설치시 기존 네트워크를 변경하지 않아도 되며, 설치 시간이 빠르고 장애 복구가 쉽다. 단점으로는 사설 IP를 변환시켜주는 NAT 기능을 사용할 수 없다.

 

6. 라우터 모드

브리지모드의 반대되는 개념으로 가장 일반적인 방화벽 구성 형태이다. 최소 두 개의 인터페이스를 가지고 있으며, 별개의 네트워크에 대한 라우팅 기능이 기본적으로 필요하다.

 

웹 방화벽(WAF)이란?

L7 계층에서 동작하며 웹 애플리케이션 보안에 특화되어 있는 솔루션이다. 말 그대로 웹을 보호하는 방화벽이며 SQL 인젝션, XSS 등과 같은 기본적인 웹 공격 대응뿐만 아니라, 정보 유출 방지, 부정 접근 방지, 웹사이트 위변조 방지도 가능하다. 침해사고 통계를 보면 대부분 외부에 노출되어있는 웹에서 발생하고 있고, 솔루션으로 웹 방화벽이 자리매김하고 있다.

 

웹 방화벽의 진화

1세대 웹 방화벽은 블랙리스트와 화이트리스트를 병행하는 방식을 사용했지만, 관리자가 직접 생성하고 관리하는 방식이기 때문에 관리 부담이 크다. 또한 공격 유형도 다양해짐에 따라 웹 방화벽에 등록된 시그니처의 수가 늘어나 성능 저하도 있다. 2세대 웹 방화벽은 분석을 통해 화이트리스트 생성을 자동으로 해주지만, 최종적으로 관리자가 검토 및 적용을 하기 때문에 여전히 관리적인 측면에서 부담이 발생한다. 1세대와 마찬가지로 성능 저하에 대한 문제점은 똑같다. 이러한 단점들을 보안해서 나온 것이 3세대 지능형 웹 방화벽이다. 3세대는 웹 공격 유형별로 트래픽을 검사하여 공격 진위 여부를 판단하기 때문에 오탐률이 낮고, 최소한의 시그니처 추가만으로도 변종 공격에 대한 대응이 가능해서 성능 저하 발생률이 낮을 뿐만 아니라, 관리자의 시그니처 관리 부담이 사라져 효율적으로 운영이 가능하다.

 

참고 서적 : 인프라 보안 - 강병탁 지음

 

'공부 > 네트워크' 카테고리의 다른 글

3-Way Handshake, 4-Way Handshake  (0) 2020.06.06
TCP/UDP  (0) 2020.06.05
OSI 7계층 장비(리피터, 허브, 브리지, 스위치, 라우터)  (0) 2020.06.03
IDS / IPS  (0) 2020.05.23
OSI 7계층 모델(OSI 7 Layer Model)  (0) 2020.05.10

+ Recent posts