bxm's IT Story
Zone based Firewall 방화벽(1) - 방화벽 세팅 본문
## 아무데서나 실습 막 하면 절대 안된다 ##
## Zone Based F/W이 필요한 이유를 알기 위해 먼저 해킹 시도 ##
[VMware] - [File] - [Open] - [Kali]
## Kali linux 패스워드 재설정 ##
## kali__ 말고, kali 다운로드.
## 브릿지로 놔두기.
Kali]
arpspoof
vi /etc/network/interfaces
service networking restart
ifconfig
## IP 바뀌었나 확인해보기!!
init 6
Username : root
Password : ccie18722
ifconfig
## IP 바뀌었나 다시 한번 확인해보기!!
## 해킹 ##
호스트 PC]
[CMD] - [arp -a]
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 그대로
ping 100.1.1.254
## 각 PC에서 모든 PC까지 통신이 원활!! ##
(내가 그냥 확인차 한 것임)
Win701]
CentOS]
Kali]
vi /etc/network/interfaces
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 ![]() |
## 이제 방화벽 규칙을 다 설정했으므로, 실제로 되는지 확인을 해야한다 ##
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은 바로 막아졌음.
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
## 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의 접근이 이루어져서
계속 끊기는 현상이 발생하는 것임.
내일 계속 ..
'Network > Firewall (KEDU)' 카테고리의 다른 글
Cisco ASA 방화벽(1) - 기본 세팅, 사용법 (0) | 2021.07.15 |
---|---|
Zone based Firewall 방화벽(2) - 방화벽 우회와 방어 (0) | 2021.07.15 |
방화벽 GNS3 (0) | 2021.07.13 |
Network] 차세대 방화벽 UTM - 방화벽의 정석 (0) | 2021.07.12 |
Network] 차세대 방화벽 UTM - 구현 및 세팅 (0) | 2021.07.12 |