bxm's IT Story

Zone based Firewall 방화벽(1) - 방화벽 세팅 본문

Network/Firewall (KEDU)

Zone based Firewall 방화벽(1) - 방화벽 세팅

bxmsta9ram 2021. 7. 14. 09:45

## 아무데서나 실습 막 하면 절대 안된다 ##

## Zone Based F/W이 필요한 이유를 알기 위해 먼저 해킹 시도 ##

 

[VMware] - [File] - [Open] - [Kali]

실행되고 있다.
Username : root
프로그램 Password를 까먹음. ==> Password 초기화하자.

 

## Kali linux 패스워드 재설정 ##

## kali__ 말고, kali 다운로드.

## 브릿지로 놔두기.

kali__ 말고 일반 kali임 !!

Kali]

arpspoof

vi /etc/network/interfaces

 

service networking restart

ifconfig

## IP 바뀌었나 확인해보기!!

IP가 안바뀌었음.

init 6

Username : root

Password : ccie18722

 

 

ifconfig

## IP 바뀌었나 다시 한번 확인해보기!!

제대로 바뀌었다!!

 


## 해킹 ##

호스트 PC]

[CMD] - [arp -a]

공격당하기 전의 게이트웨이 IP 기억하기.

 

ifconfig eth0 promisc

## 왜 해주냐면, 모든 RAM 카드에는 자기의 MAC주소가 L2에 없으면 Packet을 버려버림. 그래서 자기의 MAC 주소가

    없더라도 처리하라는 뜻이다.


공격]

[CMD] - [arpspoof -i eth0 -t 10.6.3.15 10.0.0.1]

   ## 10.6.3.15는 공격할 PC, 10.0.0.1은 Gateway인데 자기의 MAC주소로 속임.

 

 

수비]

[CMD] - [arp -a]

## 공격받은 직후 ##

공격 받고 나서 바뀌었음.

 

 

## 공격자가 공격을 철회 ##

공격자]

## 공격 중지 : Cntl + Z

다시 돌아왔다!!

 

## 만약 안돌아오면,

수비]

netsh interface ipv4 add neighbor

 

ipconfig /all 하면 게이트웨이 나오는데 상대방 IP와 게이트웨이 arp spoofing 하면 다 날라가는거임 ㅋㅋ                   

## 상대방이랑 통신하려면 ARP 해야되는데, 공격하는 사람의 MAC이 칼리의 MAC 주소가 된다.



## 공격을 원천봉쇄 하기 위한 방화벽 구축 사전 Map 짜기 ##

## 돈 안들이고 사용하는 방화벽중에 <ZONE_based_FirwWall>이 가장 진보되고 좋은 방화벽이다

##VLAN이 없기 때문에 Switch는 건들이지 않아도 된다!!


공통]

en

conf t

no ip domain lookup

line c 0

  logg sy

  exec-timeout 0

  exit

line vty 0 4

  pass cisco

end


SW1]

no ip routing


DMZ]

conf t

int f0/0

  no shut

  ip add 1.1.100.6 255.255.255.252

  exit

 

int f0/1

  no shut

  ip add 100.1.1.254 255.255.255.0

  end

wr


FW]

conf t

int f0/0

  no shut

  ip add 200.1.1.254 255.255.255.0

  exit

 

int f0/1

  no shut

  ip add 1.1.100.5 255.255.255.252

  exit

 

int f1/0

  no shut

  ip add 1.1.100.1 255.255.255.252

  exit

 

int f2/0

  no shut

  ip add 200.1.2.254 255.255.255.0

  end

wr


CE]

conf t

int f0/0

  no shut

  ip add 1.1.100.2 255.255.255.252

  exit

 

int f0/1

  no shut

  ip add dhcp

  mac-address 0001.0100.0ef8

  shut

  no shut

  exit

## MAC이 다 똑같으므로 MAC을 조금 수정할 것임.

## mac-address 0001.0100.0ef8

 

int f1/0

  no shut

  ip add 2.2.2.254 255.255.255.0

  end

wr


## Static Routing ##

FW] 한다리 건너 띄어 있으므로 100대역을 모른다.

conf t

ip route 100.1.1.0 255.255.255.0 f0/1 1.1.100.6

ip route 0.0.0.0  0.0.0.0 f1/0 1.1.100.2                     ## Default route를 CE 쪽으로 줘야한다.

end

wr


DMZ] Default route를 아래쪽으로 주면 된다.

conf t

ip route 0.0.0.0  0.0.0.0 f0/0 1.1.100.5

end

wr


CE]

conf t

ip route 0.0.0.0  0.0.0.0 f0/1 10.0.0.1           ## Group 쪽으로 줘야 한다.

 

## CE가 모르는 것들

ip route 200.1.1.0 255.255.255.0 f0/0 1.1.100.1

ip route 200.1.2.0 255.255.255.0 f0/0 1.1.100.1

ip route 100.1.1.0 255.255.255.0 f0/0 1.1.100.1

ip route 1.1.100.4 255.255.255.252 f0/0 1.1.100.1

 

## 아래와 같이 1개씩 줘도 된다.

access-list 1 permit 200.1.0.0 0.0.3.255 

access-list 1 permit 100.1.1.0 0.0.0.255

access-list 1 permit 2.2.2.0 0.0.0.255

 

ip nat inside source list 1 int f0/1 overload

 

 

int f0/0

  ip nat inside

  exit

 

int f1/0

  ip nat inside

  exit

 

int f0/1

  ip nat out

  end

wr


## 통신 되나 확인해보기 (VMware 맞추기) ##

Win701 Win702 Win2016 CentOS Kali
VMnet 1 VMnet 2 VMnet 4 VMnet 5 VMnet 9

 

Win701]

[CMD] - [ping 200.1.1.254]


Win2016]


Win2016]

## IP 그대로

[CMD] - [ping 100.1.1.254]


CentOS]

## IP 그대로

이미 100.1.1.251로 되어있다.
건들일 필요 없다!!

 

ping 100.1.1.254

잘 된다!!


## 각 PC에서 모든 PC까지 통신이 원활!! ##

(내가 그냥 확인차 한 것임)

Win701]

 

 

CentOS]


Kali]

vi /etc/network/interfaces

IP 수정 및 DNS1,2 추가

service networking restart

ifconfig

## IP 바뀌었나 확인!! 바뀌지 않았다.

 

init 6


## 이름풀이 제대로 되는지 확인 ##

Win701]

nslookup

>www.kedu.edu

>www.naver.com

모두 잘 된다.

 

[CMD] - [ping 1.1.100.2]

## 잘 된다.


 

## GNS3 및 이름풀이와 인터넷 연결, Ping 까지 마쳤으니 이제부터 방화벽을 설정 ##

 


## Zone Based F/W 개념 ##

* CBAC의 경우 기존 Interface 기반의 Packet Filitering 방식에 SPI, 즉 3세대 방화벽 기술인 'Stateful Packet Inspection'

  기능을 추가한 것이다. (CBAC + SPI 3세대 방화벽)

 

* SPI(Stateful Packet Inspection)

  : 일반적인 방화벽에서 패킷들을 검사할 때 한 번에 하나씩 처리하게 되어,

      - TCP 등과 같이 여러 패킷으로 분할되어 목적지 도착 전까지는 보안 공격 여부를 알 수 없게 됨.

      - 이를 막기 위해서 패킷들 사이에서 순서와 조건 등을 계속 추적하는 검사를 말함.

 

* 다수의 Interface에 CBAC를 구성할 경우, 각 Interface마다 CBAC 정책이 적용되어야 한다.

 

* ZFW의 경우 Cisco IOS Firewall 기술 중 하나로 Interface 기반이 아니라, Zone 기반으로 동작한다.

 

* 각 Interface를 특정 Zone에 할당하게 되면, 서로 동일한 Zone에 포함된 Interface 사이에서는 통신이 가능하지만,

  서로 다른 Zone에 포함된 Interface는 기본적으로 통신이 되지 않는다.

  ==> 서로 다른 Zone 사이의 통신은 관리자가 별도의 설정, 즉 CPL(Cisco Policy Language)을 사용하여 보안 정책을

         설정해야만 가능하다.


* ZFW의 설정순서

1. Zone 생성 및 Interface 할당

2. CPL(Cisco Ploicy Language)을 사용하여 정책을 정의

    i) 필요한 경우 access-list를 사용하여 특정 network 대역을 정의

   ii) class-map을 생성하여 위에서 분류한 class-map을 호출한 후 정책을 정의

3. 위에서 설정한 CPL의 Ploicy-map을 Zone-pair에 적용

 

* CPL은 QoS 명령어 체계인 MQC(Modular QoS Command)와 거의 동일하다.

 

* ZFW은 ASA 방화벽 장비의 'MPF(Modular Policy Framework)' 기능과 거의 동일하다.


## ZFW 구현 ##

FW]

conf t

zone security Inside

zone security DMZ

zone security Outside

 

int f0/0

  zone-member security Inside

  exit

 

int f2/0

  zone-member security Inside

  exit

 

int f0/1

  zone-member security DMZ

  exit

 

int f1/0

  zone-member security Outside

  end

wr

 

 

show zone security      ## 그림대로 Zone이 제대로 설정되어 있나 확인하기!!

 

## 이제 같은 Zone끼리는 통신이 되지만, 다른 Zone 끼리는 통신이 절대 되지 않음!!


DMZ]

ping 2.2.2.254

## 절대 ping이 안간다!!


## Access-Rule ##

## 이제 Zone이 나뉜 후 부터는, 오로지 정책에 의해서만 트래픽이 지나다닐 수 있다. 다음과 같은 정책을 적용해보자.

1 Inside -> Outside 모든 트래픽 허용
2 Inside -> DMZ DNS, HTTP, HTTPs, SMTP, PRO, IMAP, FTP
3 DMZ -> Inside 없음 (모든 트래픽 차단)
4 DMZ -> Outside DNS, SMTP
5 Outside -> Inside 없음 (모든 트래픽 차단)
6 Outside -> DMZ DNS, HTTP, HTTPs, SMTP, FTP

 

## 1. Inside -> Outside : 모든 트래픽 허용

FW]
conf t
access-list 100 permit ip any any           ## any(출발지) any(목적지) 어디든 상관 없다. 

class-map type inspect IN->OUT_C
  match access-group 100                    ## 위의 100 class-map을 아래에서 또 썼다.
  exit

policy-map type inspect IN->OUT_P
  class type inspect IN->OUT_C             ## 위의 IN->OUT_C를 가져와서 검증하겠다!!
  inspect                                           ## 내보내고, 다시 답변도 받겠다.
  exit

zone-pair security INSIDE source Inside destination Outside
  service-policy type inspect IN->OUT_P
  ## zone-pair의 이름은 INSIDE고, zone 나눌 때 이름 그대로!! (Inside, Outside)


  ## %No specific protocol configured in class IN->OUT_C for inspection. All protocols will be inspected 는
      적용이 안된 것이 아니라, 모든 트래픽을 허용한 것이라서 경고 메시지가 뜨는 것이다!!

  ## Verify 검증
      show zone-pair security
      show policy-map type inspect zone-pair session


FW]
ping 2.2.2.254 source 200.1.2.254
## zone을 건너서 Inside->Outside로 통신이 된다!



show zone-pair security


show policy-map type inspect zone-pair session

## 아까 줬던 policy-map 에 대해서 나온다.

 

 

## 2. Inside -> DMZ : DNS, HTTP, HTTPs, SMTP, POP3, IMAP, FTP 허용

FW]
## class-map의 default는 match-all임(and 연산). match-nay는 or 연산이다.
conf t
class-map type inspect match-any WEB
  match protocol http
  match protocol https                   
  exit                                                  ## match-any 이기 때문에, http든 https든 무엇이든 좋다! 라는 뜻이다.

access-list 101 permit ip any host 100.1.1.251        ## 출발지가 어디든 목적지가 251(CentOS_Web서버)
access-list 102 permit ip any host 100.1.1.250


class-map type inspect WEB_SER           ## match-all이 생략되어 있음.
  match access-group 101
  match class-map WEB

class-map type inspect DNS_SER
  match access-group 102
  match protocol dns
  exit

class-map type inspect match-any MAIL_SERVICE
  match protocol smtp
  match protocol pop3
  match protocol imap

class-map type inspect FTP_C
  match protocol ftp
  exit




## 이제 class-map인 것을 검증을 해야한다.
policy-map type inspect IN->DMZ_P
class type inspect WEB_SER
  inspect
  exit

class type inspect DNS_SER
  inspect
  exit

class type inspect MAIL_SERVICE
  inspect
  exit

class type inspect FTP_C
  inspect
  exit




## 이제 적용해야 한다.
zone-pair security IN->DMZ source Inside destination DMZ
  service-policy type inspect IN->DMZ_P


## Verify ##
show policy-map type inspect IN->DMZ_P

 

## 3. DMZ -> Inside : 모든 트래픽 차단 (기본값)

 

## 4. DMZ -> Outside : DNS, SMTP 허용

FW]
conf t
class-map type inspect DNS_C
  match protocol dns

class-map type inspect SMTP_C
  match protocol smtp



policy-map type inspect DMZ->OUT_P
  class type inspect DNS_C
  inspect
  exit



class type inspect SMTP_C
  inspect
  exit



zone-pair security DMZ->OUT source DMZ destination Outside
  service-policy type inspect DMZ->OUT_P


## Verify ##
show policy-map type inspect DMZ->OUT_P
 

 

## 5. Inside -> Outside : 모든 트래픽 차단 (기본값)

 

## 6. Outside -> DMZ : DNS, HTTP, HTTPs, SMTP, FTP 허용
FW]
conf t

## 이미 위에서 class들을 만들었기에 생략해도 된다(?)
policy-map type inspect OUT->DMZ_P
  class type inspect WEB_SER
  inspect
  exit

  class type inspect DNS_SER
    inspect
    exit  

  class type inspect SMTP_C
    inspect
    exit  



zone-pair security OUT->DMZ source Outside destination DMZ
  service-policy type inspect OUT->DMZ_P



## Verify ##
show zone-pair security


show policy-map type inspect


show policy-map type inspect zone-pair session

ZFW 필기본.txt
0.01MB


## 이제 방화벽 규칙을 다 설정했으므로, 실제로 되는지 확인을 해야한다 ##

Win701]

인터넷 정상 접근!!



## 방화벽 규칙을 다 정했으니 URL Filter ##

* ZFW에서는 Regex(정규표현식)를 사용하여 특정 URL 접근을 차단하는 것이 가능하다.

 

* Insied에서 Outside로 전송되는 트래픽중 URL이 [naver.com]인 http 트래픽을 차단해보자.

FW]

conf t

parameter-map type urlfilter Deny_URL

  exclusive-domain deny .naver.com

  exclusive-domain permit .*       ## [naver.com]을 제외한 나머지는 전부 허용하겠다.    (.*은 모든 것을 의미함!!)

 

class-map type inspect match-any HTTP_C

  match protocol http

  match protocol https                   ## 원래 match-any가 없었는데, 막아지나 추가해본 것임!!

                                                ## 오류가 나면 지원 안하는 것

 

 

policy-map type inspect IN->OUT_P

  class type inspect HTTP_C

  inspect

  urlfilter Deny_URL

  exit

 

## Verify ##

show policy-map type inspect IN->OUT_P


에러가 뜬다!! 

 

인터넷 또한 잘된다.

 

## 설정을 제대로 해줬음에도 Win701에서 Naver 접속이 잘 되는 이유 ##

설정 후 Win701에서 'Naver' 웹 사이트에 정상적으로 접근이 된다. 이유는 다음 내용을 주의하지 않았기 때문이다.

 

** 새로운 정책을 추가할 경우 다음 내용에 주의해야 한다!!

  1) Zone-pair당 Policy-map은 하나만 적용이 가능하기 때문에, 이미 적용된 Policy-map이 존재할 경우에는 

     Policy-map에 설정을 추가해야 한다.

  

  2) Policy-map에 다수의 정책이 설정된 경우 하향식으로 순차적 실행이 되기 때문에, 좁은 범위의 정책이 먼저

     실행되도록 설정해야 한다. (ACL과 동일)

 

 

    * 다음과 같이 설정을 입력해야 정상적으로 Naver 사이트 접근이 차단된다. 

 

FW]

conf t

policy-map type inspect IN->OUT_P

  no class type inspect IN->OUT_C

  class type inspect HTTP_C

  inspect

  urlfilter Deny_URL

  exit

 

class type inspect IN->OUT_C

inspect

exit

 

## 역시 접속이 잘된다 ...? ㅋㅋ 이게 전문 방화벽이 아니라서 잘 안막아짐.

## 어제의 UTM은 바로 막아졌음.

결국 저 2줄 때문에 오류나서 Naver 접속이 가능했음.

 

 

FW]

conf t

policy-map type inspect IN->OUT_P
  no class type inspect IN->OUT_P
  no class type inspect HTTP_C
  exit

 

no class-map type inspect match-any HTTP_C
exit

 

conf t
parameter-map type urlfilter Deny_URL
exclusive-domain deny .naver.com
exclusive-domain permit .*
allow-mode on 
exit

class-map type inspect HTTP_C
match protocol http
exit

policy-map type inspect IN->OUT_P
no class type inspect IN->OUT_C
class type inspect HTTP_C
inspect
urlfilter Deny_URL
exit

class type inspect IN->OUT_C
inspect
exit

www.naver.com 을 들어갔으나 403 에러로 정상적으로 막아졌다.


## 8. DoS 공격 완화 기법 ##

* 특정 Zone에서 다른 Zone으로 접근할 경우, 특정 서비스에 대한 Session 숫자를 제한하여 Dos 공격을 방어할 수 있다.

 

* Outside에서 DMZ 웹 서버 접근시 Session 숫자를 4개로 제한해 보자.

FW]

conf t

parameter-map type inspect WEB_Parameter

  session maximum 4

 

policy-map type inspect OUT->DMZ_P

  class type inspect WEB_SER

  inspect WEB_Parameter

 

* 'Inspect parameter-map'의 경우, ZFW으로 Inspect를 수행하는 경우 추가적으로 동작하는 보조 설정이다.

   최대 Session 숫자 제한 / Log 발생 / UDP, ICMP idle time 제어 등이 가능하다.

   ==> parameter-map 설정 후, Inspect 명령어 뒤에 사용한다.

 


## Kali에서 접속을 시도해보자 ##

Kali]

[파이어폭스] - http://www.kedu.edu

 

GNS3]

SW1의 오른쪽선에서 [Start capture] - ip.addr==100.1.1.251

## 이러면 계속 끊기면서 진행이 된다. 이유는 세션 숫자를 4개로 제한하였고, 그런 상황에서 Kali의 접근이 이루어져서

    계속 끊기는 현상이 발생하는 것임.


내일 계속 ..