안녕하세요!
저번 시간까지 ACL과 CBAC에 대해서 실습을 진행했습니다
이번 시간에는 EVE-NG로 ZFW(Zone-based policy Firewall)을 알아보고
실습을 진행해보겠습니다
실습 환경 구축하기
https://eveningdev.tistory.com/61
https://eveningdev.tistory.com/62
실습 환경이 없으신 분들은 이전 포스팅을 참고하셔서 실습 환경을 갖춰주시면 되겠습니다
ZFW 실습에 앞서 선행으로 알고 계시면 좋은 개념
https://eveningdev.tistory.com/66
ACL에 대해 알아보기
https://eveningdev.tistory.com/67
CBAC에 대해 알아보기
ZFW(Zone-based policy Firewall)이란?
- 라우터의 각 인터페이스를 특정 존에 할당하고, 존 사이에 보안정책을 적용하는 것을 말한다.
- 라우터에서 방화벽 기능을 설정하는 방식을 전용 방화벽인 ASA나 PIX와 유사하게 하였을 뿐만 아니라, 기능도 거의 전용 방화벽 수준으로 향상시켰다.
Zone 생성하기
1. 존을 만들고, 각 인터페이스를 존에 할당한다.
2. 존 페어(zone-pair)를 만든다.
3. CPL(cisco policy language)를 이용하여 보안정책을 정의한다.
4. 존 페어(zone-pair)에 보안 정책을 적용한다.
ZFW(Zone-based policy Firewall) 실습하기
EVE-NG를 켜고 03 ZFW Basic Config Lab 생성
토폴로지 화면에서 마우스 우클릭 후 [Cisco vIOS Router] 선택
Number of nodes to add -> 4대로 바꾸고 Save
[ 실습 토폴로지 구성 ]
각 장비를 [Start] 눌러서 켜준 후 터미널로 열기
IP 할당 및 Inside / Outside 구분 각 라우터에 OSPF 설정
장비 기본 설정(복사 붙여넣기용)
!-- vIOS1, 2, 3, 4 공통 설정
enable
configure terminal
enable secret 1q2w3e4r
ip domain-name hyuk.net
no ip domain-lookup
username user01 secret 1q2w3e4r
username admin privilege 15 secret 1q2w3e4r
ip ssh version 2
ip ssh time-out 30
crypto key generate rsa general-keys modulus 1024
line con 0
exec-timeout 0
logging sync
login local
exit
line vty 0 4
exec-timeout 0
logging sync
transport input telnet ssh
login local
exit
!-- vIOS1 IP address 및 OSPF 설정
int g0/0
ip add 1.1.12.1 255.255.255.0
no sh
router ospf 10
network 1.1.12.1 0.0.0.0 area 0
exit
!-- vIOS2 IP address 및 OSPF 설정
int g0/0
ip add 1.1.12.2 255.255.255.0
no sh
int g0/1
ip add 1.1.23.2 255.255.255.0
no sh
router ospf 10
network 1.1.12.2 0.0.0.0 area 0
network 1.1.23.2 0.0.0.0 area 0
exit
!-- vIOS3 IP address 및 OSPF 설정
int g0/1
ip add 1.1.23.3 255.255.255.0
no sh
int g0/2
ip add 1.1.34.3 255.255.255.0
no sh
router ospf 10
network 1.1.23.3 0.0.0.0 area 0
network 1.1.34.3 0.0.0.0 area 0
exit
!-- vIOS4 IP address 및 OSPF 설정
int g0/2
ip add 1.1.34.4 255.255.255.0
no sh
router ospf 10
network 1.1.34.4 0.0.0.0 area 0
위의 장비 기본 Config를 마치면 ping을 통해 통신이 되는지 확인해보자
ping을 통해 vIOS 1과 vIOS 4가 통신이 가능한 상태임을 확인할 수 있다
다음과 같이 G0/0, G0/1 포트 존을 할당하여 방화벽의 기능을 하도록 설정해보자
ZFW(Zone-based policy Firewall) 설정 및 동작 방식
경계 라우터인 R2에서 ZFW를 설정해본다
1. 적당한 존의 이름을 설정하여 존을 생성한다.
!-- vIOS2 설정
conf t
zone security inside
zone security outside
2. 각각의 인터페이스를 적당한 존에 할당한다.
!-- vIOS2 설정
int g0/0
zone-member security inside
int g0/1
zone-member security outside
3. 현재 설정된 존과 각 존에 할당된 인터페이스를 확인한다.
!-- vIOS2 설정
end
show zone security
- 명령어를 입력한 결과에서 self라는 존은 기본적으로 만들어진다. 해당 라우터에서 출발하거나 해당 라우터가 목적지인 패킷을 제어할 때 사용한다.
ZFW(Zone-based policy Firewall) 보안 존 설정 시 가이드라인
1) 하나의 인터페이스에 ZFW와 CBAC를 동시에 설정할 수 없다.
2) 하나의 인터페이스는 오직 하나의 존에만 소속된다.
3) 하나의 인터페이스가 보안 존에 소속되면 policy-map에서 명시적으로 허용하지 않는 한 해당 인터페이스를 통하여 입출력되는 모든 트래픽이 차단된다.
4) policy-map은 두 개의 존 사이에만 적용 가능하기 때문에, 어느 보안 존에도 소속되지 않는 인터페이스는 보안 존에 소속된 인터페이스와 통신할 수 없다.
5) 한 라우터에서 모든 인터페이스 간의 통신이 이루어지기 위해서는 모든 인터페이스가 반드시 보안 존에 소속되어야 한다.
6) 보안 존에는 ACL을 적용할 수 없다. 필요시 해당 ACL을 class-map에 포함시키고 policy-map에서 패킷을 폐기시키면 된다.
7) 존 멤버 인터페이스에는 ACL을 적용시킬 수 있다.
8) 동일 보안 존에 소속된 인터페이스 간에는 어떤 정책도 허용되지 않고, 자유로이 패킷이 허용된다.
존에 소속된 인터페이스 사이의 트래픽은 policy-map의 정책을 따르지만, 존에 소속된 인터페이스가 최종 목적지인 패킷들은 모두 수신한다.
1. vIOS1 -> vIOS2 ping
- 존에 소속된 vIOS2 인터페이스로는 패킷들을 모두 수신된다.
2. vIOS4 -> vIOS2 ping
- 존에 소속된 vIOS2 인터페이스로는 패킷들이 모두 수신된다.
3. vIOS1 -> vIOS4 ping
- 그러나 서로 다른 존에 소속된 패킷들은 기본적으로 모두 차단한다.
4. 이처럼 다른 존에 소속된 장비 간의 트래픽은 명시적으로 허용해야만 통과된다.
존 페어(zone-pair) 만들기
- 존 페어를 사용하면 두 개의 존 간에 단방향의 방화벽 정책을 정의할 수 있다. Zone-pair security 명령어를 사용하면 존 페어를 만들 수 있으며, 출발지 및 목적지 존을 지정하여 트래픽의 방향을 지정할 수 있다.
- 두 개의 존이 있고, 양 방향으로 트래픽을 허용하려면 각 방향당 하나씩의 존 페어를 만들어야 한다. 그러나 리턴 트래픽은 자동으로 허용되므로 항상 두 개의 존 페어를 만들 필요는 없다. 나가는 트래픽을 허용하면 돌아오는 트래픽은 자동으로 허용된다.
- 필요시 self 존을 출발지나 목적지 존으로 선택할 수 있다. 디폴트 셀프 존은 시스템에서 정의한 존이며, 멤버가 없다. 셀프 존이 포함된 존 페어는 해당 라우터가 최종 목적지이거나 해당 라우터에서 시작되는 트래픽을 제어할 때 사용한다. 라우터를 통과하는 트래픽에는 적용되지 않는다.
1. inside 존에서 outside 존으로 갔다가 돌아오는 트래픽을 제어하기 위하여 vIOS2에 Outbound 존 페어를 만든다.
!-- vIOS2 설정
conf t
zone-pair security Outbound source inside destination outside
2. 설정 후 만들어진 존 페어 확인
!-- vIOS2 설정
end
show zone-pair security
CPL을 이용한 보안 정책의 정의 및 적용
- ZFW에서 존 사이의 트래픽을 제어하려면, CPL(cisco policy language)을 이용하여 보안정책을 정의하고 이를 존 페어에 적용하면 된다.
1. class-map 명령어로 트래픽을 분류
2. policy-map 명령어로 정책을 설정
3. sevice-policy 명령어로 존 페어에 보안 정책을 적용
필요시 클래스 맵에서 트래픽을 분류할 때 사용하기 위하여 ACL을 이용해 미리 특정 트래픽을 지정할 수도 있다.
inside -> outside로 가는 모든 트래픽을 허용하는 ZFW용 보안정책을 설정해보자.
1. 첫 번째로 class-map을 이용하여 트래픽을 분류한다.
!-- vIOS2 설정
conf t
ip access-list extended acl-out
permit ip any any
class-map type inspect class-outbound
match access-group name acl-out
- HTTP 등과 같이 프로토콜의 종류만으로 트래픽을 분류하는 경우가 아니라, 모든 트래픽을 허용하거나 IP 주소를 이용하여 특정 트래픽을 분류하려면 미리 ACL을 만든다.
- ZFW에서는 class-map, policy-map, service-policy 다음에 항상 type inspect 명령어를 함께 사용한다.
- 클래스 맵(class-map) 내에서 match 명령어를 사용하여 미리 설정한 ACL을 참조한다.
2. 두 번째로 policy-map을 이용하여 보안 정책을 정의한다.
!-- vIOS2 설정
conf t
policy-map type inspect policy-outbound
class type inspect class-outbound
inspect
- policy-map의 이름을 지정한 뒤, 미리 만든 class-map을 호출한다. inspect 명령어를 사용하여 해당 트래픽이 inside 존에서 outside 존으로 나가는 것과 이 트래픽이 돌아오는 것을 허용한다.
- 폴리시 맵은 존 간의 트래픽에 대해서 세 가지 중 하나의 행동을 한다.
1. drop - 기본 동작으로, ZFW는 ACL과 달리 종단 장비에게 폐기 통지를 하지 않는다.
2. pass - 패킷을 통과시키지만 접속이나 세션정보를 기록하지 않으므로, 돌아오는 패킷을 자동으로 허용하지 않는다.
3. inspect - 패킷을 통과시키면서 접속이나 세션정보를 유지하여 돌아오는 패킷을 허용한다.
3. 마지막으로 미리 만든 policy-map을 Outbound 존 페어에 적용한다.
!-- vIOS2 설정
conf t
zone-pair security Outbound
service-policy type inspect policy-outbound
4. 설정 후 확인해보자
1) vIOS1 -> vIOS4 ping
2) vIOS1 -> vIOS4 telnet
- 설정 후 inside에서 outside 존으로 핑과 텔넷이 된다.
3) vIOS2 show policy-map type inspect zone-pair sessions
- vIOS2에서 현재 ZFW에 의해서 허용된 세션 정보를 확인할 수 있다.
4) vIOS4 -> vIOS1 ping, telnet
- 그러나 outside 존에서 inside 존으로의 트래픽은 차단되어 vIOS4 -> vIOS1으로의 핑과 텔넷은 모두 차단된다.
존 페어로 단 방향으로만 설정해주었기 때문에 양방향 통신을 하기 위해서는 존 페어를 하나 더 생성한다.
5. 존 페어 추가 생성 후 CPL을 이용하여 해당 트래픽을 지정
!-- vIOS2 설정
1) acl-in 생성
conf t
ip access-list extended acl-in
permit ip any any
2) class-map 생성
class-map type inspect class-inbound
match access-group name acl-in
3) policy-map 생성
policy-map type inspect policy-inbound
class type inspect class-inbound
inspect
4) policy-map을 zone-pair에 적용
zone-pair security Inbound source outside destination inside
service-policy type inspect policy-inbound
- 출발지가 outside 존이고, 목적지가 inside 존인 존 페어를 만들고, 미리 만든 폴리시 맵을 적용한다. 폴리시 맵의 마지막에는 항상 class-default 클래스 맵이 있어, 별로도 지정하지 않으면 기본 행동은 drop이다.
5) 설정 후 vIOS4 -> vIOS1으로 ping, telnet으로 확인해보자.
- 존 페어를 추가로 생성하여 설정한 후, outside 존에서 inside 존으로의 ping, telnet이 허용된 모습
CBAC은 인터페이스를 기반으로 트래픽을 검사하기 때문에 세분화된 정책 설정과 관리가 힘들고
다수의 인터페이스와 연결된 경우에는 더 복잡한데 이런 문제점을 개선한 것이 오늘 실습한 ZFW이다.
이번 시간에는 ZFW의 기본 설정으로 실습을 진행했습니다.
다음에 기회가 된다면 ZFW과 ACL의 관계, 다수의 인터페이스 간 ZFW 설정에 대해서 실습하는 포스팅 하겠습니다.
감사합니다!
'Network > 컴퓨터 보안' 카테고리의 다른 글
[네트워크] EVE-NG로 CBAC(Context-Based Access Control) 실습하기 (0) | 2022.06.05 |
---|---|
[네트워크] EVE-NG로 ACL(Access Control List) Standard / Extended ACL 실습하기 (0) | 2022.06.04 |
[네트워크] ACL(Access Control List)의 목적 및 기능 알아보기 (1) | 2022.05.24 |
클라우드, 개발, 자격증, 취업 정보 등 IT 정보 공간
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!