안녕하세요!
이번 시간에는 EVE-NG로 CBAC(Context-Based Access Control)을 알아보고
실습을 진행해보겠습니다
실습 환경 구축하기
https://eveningdev.tistory.com/61
https://eveningdev.tistory.com/62
실습 환경이 없으신 분들은 이전 포스팅을 참고하셔서 실습 환경을 갖춰주시면 되겠습니다
CBAC 실습에 앞서 선행으로 알고 계시면 좋은 개념
https://eveningdev.tistory.com/66
ACL에 대해 알아보기
CBAC(Context-Based Access Control)이란?
- CBAC(Context-Based Access Control)은 ACL에서 사용하는 L3/L4 레벨의 트래픽을 제어할 뿐만 아니라 다양한 응용 계층의 트래픽을 제어할 수 있다.
- NAT나 PAT에서 내부 주소까지 변환시켜 주며, FTP나 H.323까지 복수개의 세션을 사용하는 어플리케이션에 대해서도 스테이트풀 방화벽 기능(Stateful F/W)을 지원한다.
- 스테이트풀 방화벽 기능(Stateful F/W)이란 외부에서 수신하는 패킷에 대하여 내부에서 출발한 것인지 또는 처음 외부에서 시작된 세션인지를 구분할 수 있는 것을 말한다.
CBAC(Context-Based Access Control) 기능
1. 트래픽 필터링
2. 침입 탐지
- 동적 ACL의 단점 보완: 내부에서 나간 패킷을 기억해서 들어올 때 허용(Stateful)
CBAC(Context-Based Access Control) 동작 방식
일반적으로 CBAC는 내부에서 출발한 패킷이 돌아올 때 허용하는 역할을 하므로, 허용하지 않을 나머지 패킷들을 차단하는 ACL과 함께 사용한다.
- 인터페이스에 CBAC가 설정된 방향으로 패킷을 수신 또는 송신할 때 임시 ACL을 만들어 기존 ACL 상단에 추가한다.
- 해당 세션의 패킷이 돌아올 때 허용하고, 해당 세션이 끝나면 임시 ACL을 제거한다.
1. TCP 세션의 종료는 FIN 패킷으로 감지한다
- FIN 패킷 감지 후 5초가 지나면 CBAC 상태 테이블에서 해당 세션을 제거한다.
2. UDP 세션은 기본적으로 30초간 해당 트래픽이 없으면 종료된 것으로 간주
- CBAC 상태 테이블에서 해당 세션을 제거한다.
- DNS 스푸핑 공격과 DoS 공격을 방지하기 위하여 내부에서 외부로 DNS 질의를 보내고 5초 이내에 응답이 없으면 해당 세션을 제거한다. 또한 DNS 서버가 정상적으로 응답하면 즉시 해당 세션을 제거한다.
3. ICMP 세션은 기본적으로 10초 이내에 응답이 없으면 CBAC 상태 테이블에서 해당 세션을 제거
- 응답 시에는 해당 메세지 타입만 허용한다.
CBAC(Context-Based Access Control) 실습하기
EVE-NG를 켜고 02 CBAC 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가 통신이 가능한 상태임을 확인할 수 있다
다음과 같이 Gi0/1 포트에 ACL, CBAC를 적용하여 vIOS4에서 vIOS1로 가는 패킷에 대해 허가 및 거부를 해보자
기본적인 CBAC 설정 및 동작 확인
내부에서 시작하는 TCP, UDP, ICMP 패킷들이 외부에서 돌아올 때 허용하는 CBAC를 설정
1. ACL에서 TCP 옵션을 사용하면 외부로 가는 TCP 패킷을 모두 검사하고 돌아올 때 허용할 임시 ACL을 만들어 기존의 ACL 문장 상단에 추가
!-- vIOS2 설정
ip inspect name mycbac tcp
ip inspect name mycbac udp
ip inspect name mycbac icmp
2. CBAC와 같이 사용할 ACL를 만든다. 외부에서 시작되는 패킷 중 OSPF와 같이 중요한 것들은 이 ACL에서 적용하고, 나머지 패킷들은 다 차단한다.
!-- vIOS2 설정
ip access-list extended acl-in
permit ospf host 1.1.23.3 any // ospf를 제외한 나머지는 차단
3. CBAC와 ACL을 적용할 인터페이스 설정 모드에서 설정한다.
!-- vIOS2 설정
int g0/1
ip inspect mycbac out // 패킷이 외부로 나가는 시점에 임시 ACL이 만들어져서 Stateful 상태가 됨
ip access-group acl-in in
설정 후 vIOS1에서 외부 네트워크인 vIOS3으로 텔넷을 해보면 성공한다
vIOS2에서 확인해보면 내부망인 1.1.12.1에서 외부망인 1.1.23.3으로 전송된 telnet 패킷이 돌아올 때 허용하는 임시 ACL이 만들어져 있고, 이것으로 인해서 vIOS1에서 vIOS3로 갔다가 돌아오는 telnet 패킷이 허용된다.
!--vIOS2 inspect session 확인 명령
show ip inspect sessions detail // 시간이 지나면 사라짐
vIOS1에서 외부망으로 나갈 때 TCP 임시 ACL 만들어진 모습
vIOS에서 외부망인 1.1.23.3으로 ping을 보내는 모습
vIOS1에서 외부망으로 나갈 때 ICMP 임시 ACL 만들어진 모습
원래대로 ACL만 적용되어 있다면 Stateless 상태이기 때문에 ping이 갔다가 돌아올 때 패킷이 차단되어야 하는데
vIOS1에서 vIOS3으로 나갈 때 CBAC으로 인해 CBAC 테이블에 임시 ACL이 생성되어 돌아오는 패킷 역시 허용한다
Q. 외부에서 시작된 패킷은 어떻게 될까?
ip access-list extended acl-in
permit ospf host 1.1.23.3 any // ospf를 제외한 나머지는 차단
ospf를 제외한 나머지 패킷들은 다 차단하고 있고 ip inspect mycbac out로 패킷이 나가는 시점이 임시 ACL을 생성하기 때문에 외부에서 시작된 패킷은 모두 차단된다.
실제로 외부에서 내부로 패킷을 보낼 때 차단이 되는지 확인해보자
OSPF로 통신하고 있기 때문에 ping이 가야 하는데 ACL로 인해서 vIOS3 -> vIOS1 패킷이 차단된 모습
이렇게 CBAC(Context-Based Access Control)는 ACL과 같이 사용되며
ACL이 Stateless이기 때문에 CBAC과 같이 사용하여 Stateful 하게 패킷을 컨트롤(필터링)하는
방화벽 소프트웨어 기능입니다.
CBAC를 이용하면 응용 계층 프로토콜 세션 정보를 기반으로 지능적으로 필터링할 수 있고,
Dynamic ACL의 단점을 보완하는 장점을 가지고 있습니다.
다음 포스팅에서는 ZFW(Zone-Based FileWall)에 대해서 포스팅하도록 하겠습니다.
감사합니다!
'Network > 컴퓨터 보안' 카테고리의 다른 글
[네트워크] EVE-NG로 ZFW(Zone-based policy Firewall) 실습하기 (0) | 2022.06.12 |
---|---|
[네트워크] EVE-NG로 ACL(Access Control List) Standard / Extended ACL 실습하기 (0) | 2022.06.04 |
[네트워크] ACL(Access Control List)의 목적 및 기능 알아보기 (1) | 2022.05.24 |
클라우드, 개발, 자격증, 취업 정보 등 IT 정보 공간
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!