bxm's IT Story

Zone based Firewall 방화벽(2) - 방화벽 우회와 방어 본문

Network/Firewall (KEDU)

Zone based Firewall 방화벽(2) - 방화벽 우회와 방어

bxmsta9ram 2021. 7. 15. 09:20

## 9. DPI(Deep Packet Inspection) ##

* 전통적인 방화벽 장비는 L3/L4 정보를 기반으로 필터링을 수행한다. 그에 반해 오늘날 방화벽 장비들은 어느 정도 

  Application 계층 검사 혹은 제어가 가능하다.

 

* ZFW에서 DPI 기능을 사용하게 되면, Application 계층 Inspection 및 Control이 가능하다.

 

 

## 방화벽 우회를 해서 접속해보는 실습

SW1]

conf t

int vlan 1

  ip add 100.1.1.252 255.255.255.0

  no shut

 

no ip routing

ip default-gateway 100.1.1.254

 

line vty 0 4

  password cisco123

  login

  end

wr

 

DMZ]

conf t

ip nat inside source static tcp 100.1.1.252 23 1.1.100.6 80       

## 100.1.1.252 23 -> 1.1.100.6 80번으로 바꿔라.

 

int f0/1

  ip nat inside

  exit

 

int f0/0

  ip nat outside

  end

wr

 

 

FW]

conf t

class-map type inspect match-all WEB_SER

  no match access-group 101

  end

wr

 

 

## 현재 방화벽에서 Telnet을 허용하지 않았으므로, Kali에서 DMZ의 23번에 접속하려고 할 때 접속이 안된다.

    그래서 1.1.100.6 80번으로 접속을 하면 NAT가 동작하면서, 100.1.1.252 23번으로 들어갈 수 있음.

    (현재 80번은 허용했으므로 방화벽을 통과하는 것이 가능하다. 80번으로 변장하고나서 방화벽을 들어가자마자

    변장을 벗고, 23번으로 들어간다)


## 접속 시도 ##

GNS3]

캡쳐

ip.addr==1.1.100.6

 

 

Kali]

telnet 1.1.100.6.80

cisco123

방화벽을 우회해서 Telnet에 접속에 성공하였다!

 

 

 

GNS3]

## 로그를 보면

분명히 Telnet을 했는데 80번 포트로 우회해서 접속한 것을 확인할 수 있다!! 이렇게 방화벽 우회가 가능한 것을 관찰할 수 있음.


GNS3]

이 곳을 캡처해보기.

ip.addr==100.1.1.252

 

 

Kali]

## 다시 Telnet 접속 시도한 후 Wireshark 봐보기

방화벽을 우회하자마자 23번으로 바뀐 것을 확인할 수 있다.

 

* 위와 같이 설정 후 Kali에서 [telnet 1.1.100.6 80] 명령어를 사용하면 <FW>에 Telnet이 허용되지 않음에도

  불구하고, 80번 포트로 우회하여 DMZ 스위치에 Telnet 연결이 가능하다. 현재 <FW>에 Application 계층을 검사하는

  DPI를 활성화 시키지 않았기 때문에 L3/L4 정보만 사용하여 Filtering을 수행하기 때문에  포트 우회가 가능하다.



## 그렇다면 이런 방화벽 우회를 막을 수 있는 방법은 무엇이 있을까 ##

* ZFW의 경우 Application을 검사하거나 제어하는 DPI 기능을 사용할 수 있다. DPI를 설정하는 방법은 다음과 같다.

1  L7 Class-map을 생성 후 트래픽을 분류
2  L7 Policy-map을 생성하여 정책을 정의.
3  L3/L4 Policy-map에, 위에서 정으한 L7 Policy-map을 호출.
4  Zone-pair에 L3/L4 Policy-map을 적용한다.

 

<Ex1>

  Outside에서 DMZ에 위치한 Kedu.edu 사이트에 접속하려는 트래픽이 발생되면, FW에서 log를 발생 시키세요.

  또한, TCP 80번 포트를 사용하여 방화벽을 우회하려는 트래픽은 차단 후 log가 발생되도록 설정하시오.

        

 

FW]

conf t

parameter-map type regex KEDU      ## KEDU라고 이름을 붙이자.

  pattern .*kedu                            ## .으로 시작하고, 모든 파일 /kedu.edu로 접속하려는 경우에 log를 발생시켜라!

  exit

 

class-map type inspect http L7_HTTP_C

  match request header host regex KEDU   ## L7 헤더를 검증할 것이고, 헤더에 .*kedu 문구가 오는 것을 분류 하겠다.

 

class-map type inspect http match-any L7_HTTP_C2

  match request port-misuse any             ## 포트를 우회하거나,

  match req-resp protocol-violation       ## 문법에 맞지 않는 것을 잡아내겠다.

 

 

 

policy-map type inspect http L7_HTTP_P

  class type inspect http L7_HTTP_C

    log                                               ## log를 발생시켜라

    exit

 

  class type inspect http L7_HTTP_C2

    reset                                          ## 포트를 우회하거나 문법에 맞지 않는 것은 리셋 시켜버리고 로그 발생!

    log

    exit

  exit

 

 

 

 

class-map type inspect http HTTP_C

  match protocol http                          ## 어제 개고생한거 ^^

 

policy-map type inspect OUT->DMZ_P    ## DMZ_P에다가 적용을 하고,

  no class type inspect WEB_SER

  class type inspect HTTP_C                   

    inspect

    service-policy http L7_HTTP_P

 


Kali]

telnet 1.1.100.6 80

외부 호스트이기 때문에 침입이 거부되었음!!

 

FW]

방화벽에서도 log가 생성되었음.

 

## 지금까지 돈 안들이고 쓰는 방화벽중에 최고인 Zone based FW에 대해서 공부해보았다. 

    다음 시간에는 돈 주고 사용하는 방화벽 'Cisco ASA 방화벽'에 대해서 공부해보겠다.