안녕하세요!
저번 시간에는 ACL에 대해서 알아봤습니다
이번 시간에는 EVE-NG로 라우터 장비에 ACL을 설정하여 어떻게 동작하는지
실습을 통해서 알아보려고 합니다
실습 환경 구축하기
https://eveningdev.tistory.com/61
https://eveningdev.tistory.com/62
실습 환경이 없으신 분들은 이전 포스팅을 참고하셔서 실습 환경을 갖춰주시면 되겠습니다
ACL(Access Control List) 설정하기
Step 1 Access-list 정책 만들기
R1(confg)#access-list access-list-number { permit | deny } {test conditions}
- Access-list : Access list 설정 명령어
- Access-list-number : Access-list를 구분하는 숫자, Standard와 Extended 등을 구분
- { permit | deny } : Entry 허용 여부 결정
- {test conditions} : Entry 검사 조건 내용
Step 2 필터링 적용하기
R1(config-if)#{protocol} access-group access-list-number { in | out }
- {protocol} : Access-list 사용하는 통신 프로토콜. 주로 IP라고 적으면 된다.
- Access-group : Access list 인터페이스 적용 설정 명령어
- Access-list-number : Access-list를 구분하는 숫자, 만들어진 Access-list 조건문 번호를 입력
- { in | out } : Access list 검사 적용 정책 ( in : 인터페이스로 들어가는 데이터, out : 나가는 데이터 )
ACL(Access Control List)에는 Standard 방식과 Extended 방식이 있으며
두 방식 모두 Numberd, Named로 정책을 만들 수 있다
Standard ACL 설정하기
1. Access-list IP 트래픽 필터 리스트 작성
R1(config)#access-list access-list-number { permit | deny } source source-wildcard
- Access-list-number : Entry가 속할 list 번호 설정. 1~99, 1300~1999 사이의 번호
- permit | deny | remark는 해당 Entry에 매치되면 취할 Action을 정의
- Source는 송신지 IP 주소를 정의
- Source-wildcard는 wildcard mask를 사용하여 주소 필드의 어느 비트들이 일치되어야 하는지 설정
2. Access-list를 interface에 적용
R1(config-if)#ip access-group access-list-number { in | out }
- List를 적용할 Interface에서 설정
- Inbound 또는 Outbound시 검사하도록 설정
- Default = outbound
- Interface에서 "no ip access-group access-list-number" 명령을 사용하여 적용된 Access-list를 제거
Extended ACL 설정하기
1. Access-list IP 트래픽 필터 리스트 작성
R1(config)#access-list access-list-number { permit | deny } protocol source src-wildcard [operator port] destination dst-wildcard [operator port] [established][log]
- Access-list-number : Entry가 속할 list 번호 설정. 100~199, 2000~2699 사이의 번호를 사용
- Permit | deny | remark는 해당 Entry에 매치되면 취할 Action을 정의
- Source와 Destination은 송수신지 IP 주소를 정의
- Wildcard는 wildcard mask를 사용하여 주소 필드의 어느 비트들이 일치되어야 하는지 설정
- Operator port는 lt(less than), gt(greater than), eq(equal to), neq(not equal to)와 Protocol Port 번호를 명시
- Established는 Inbound TCP에 대해서만 사용된다
- Log는 Console로 log Message를 보낸다
2. Access-list를 interface에 적용
R1(config-if)#ip access-group access-list-number { in | out }
Named ACL 설정하기
1. Access-list IP 트래픽 필터 리스트 작성
R1(config)#ip access-list {standard | extended} Name
R1(config-std or ext)#{permit | deny} {test conditions} -> Entry 생성
R1(config-std or ext)#no {permit | deny} {test conditions} -> Entry 삭제
2. Access-list를 interface에 적용
R1(config-if)#ip access-group Name { in | out }
ACL(Access Control list) 실습하기
EVE-NG를 켜고 01 ACL 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를 적용하여 vIOS4에서 vIOS1로 가는 패킷에 대해 허가 및 거부를 해보자
Standard Numbered ACL R4 > R1 deny
!-- vIOS2 ACL deny 정책 만들기
conf t
access-list 10 deny host 1.1.34.4
access-list 10 permit any
exit
// 1.1.34.4에 대한 접근만 거부하고 나머지 호스트들에 대해서 허가
!-- vIOS2 ACL deny 인터페이스에 정책 적용
int g0/1
ip access-group 10 in
// 만들어준 정책을 g0/1 인터페이스에 적용 vIOS2 g0/1 입장에서는 vIOS4->1가는 패킷은 들어오기 때문에 in
!-- vIOS2 ACL deny 적용되었는지 확인
end
show access-list
!-- vIOS4에서 확인
ping 1.1.12.1
!-- 다음 실습을 진행하기 위해서는 만들어준 정책을 지워주는 작업이 꼭 필요함
conf t
int g0/1
no ip access-group 10 in
exit
no access-list 10
vIOS2에서 Standard Numbered 형식의 정책 생성 및 적용
ACL로 인해 vIOS4 -> vIOS1으로 가는 패킷이 거부된 모습
Extended Numbered ACL R4 > R1 deny TCP
!-- vIOS2 ACL deny 정책 만들기
conf t
access-list 100 deny tcp host 1.1.34.4 host 1.1.12.1
access-list 100 permit ip any any
exit
// port, source address, destination address
!-- vIOS2 ACL deny 인터페이스에 정책 적용
int g0/1
ip access-group 100 in
!-- vIOS2 ACL deny 적용되었는지 확인
end
show access-list
!-- vIOS4에서 확인
ping 1.1.12.1
telnet 1.1.12.1
ssh -l admin 1.1.12.1
// TCP에 통신에 대한 ACL을 설정했기 때문에 telnet, ssh로 확인
!-- 다음 실습을 진행하기 위해서는 만들어준 정책을 지워주는 작업이 꼭 필요함
conf t
int g0/1
no ip access-group 100 in
exit
no access-list 100
vIOS2에서 Extended Numbered 형식의 정책 생성 및 적용
ACL로 인해 vIOS4 -> vIOS1으로 가는 Ping은 되지만
ACL로 인해 vIOS4 -> vIOS1으로 가는 TCP(telnet, ssh)가 거부된 모습
Standard Named ACL R4 > R1 deny
!-- vIOS2 ACL deny 정책 만들기
conf t
ip access-list standard deny_R4->R1
deny host 1.1.34.4
permit any
exit
// 1.1.34.4에 대한 접근만 거부하고 나머지 호스트들에 대해서 허가
!-- vIOS2 ACL deny 인터페이스에 정책 적용
int g0/1
ip access-group deny_R4->R1 in
// 만들어준 정책을 g0/1 인터페이스에 적용 vIOS2 g0/1 입장에서는 vIOS4->1가는 패킷은 들어오기 때문에 in
!-- vIOS2 ACL deny 적용되었는지 확인
end
show access-list
!-- vIOS4에서 확인
ping 1.1.12.1
!-- 다음 실습을 진행하기 위해서는 만들어준 정책을 지워주는 작업이 꼭 필요함
conf t
int g0/1
no ip access-group deny_R4->R1 in
exit
no ip access-list standard deny_R4->R1
vIOS2에서 Standard Named 형식의 정책 생성 및 적용
ACL로 인해 vIOS4 -> vIOS1으로 가는 패킷이 거부된 모습
Extended Named ACL R4 > R1 deny
!-- vIOS2 ACL deny 정책 만들기
conf t
ip access-list extended deny_R4->R1_tcp
deny tcp host 1.1.34.4 host 1.1.12.1
permit ip any any
exit
// port, source address, destination address
!-- vIOS2 ACL deny 인터페이스에 정책 적용
int g0/1
ip access-group deny_R4->R1_tcp in
!-- vIOS2 ACL deny 적용되었는지 확인
end
show access-list
!-- vIOS4에서 확인
ping 1.1.12.1
telnet 1.1.12.1
ssh -l admin 1.1.12.1
// TCP에 통신에 대한 ACL을 설정했기 때문에 telnet, ssh로 확인
!-- 다음 실습을 진행하기 위해서는 만들어준 정책을 지워주는 작업이 꼭 필요함
conf t
int g0/1
no ip access-group deny_R4->R1_tcp in
exit
no ip access-list extended deny_R4->R1_tcp
vIOS2에서 Extended Named 형식의 정책 생성 및 적용
ACL로 인해 vIOS4 -> vIOS1으로 가는 Ping은 되지만
ACL로 인해 vIOS4 -> vIOS1으로 가는 TCP(telnet, ssh)가 거부된 모습
Standard / Extended Policy 추가 및 제거
!-- vIOS2 ACL deny 정책 만들기
conf t
ip access-list extended deny_R4->R1_tcp
no 20 permit
// Entry Number 20 제거
25 permit icmp any any
30 permit udp any any
// Entry Number 25, 30 추가 -> Entry Number는 낮을수록 우선순위가 높음
exit
!-- vIOS4에서 확인
end
show access-list
ACL Entry에서 20을 지우고 25, 30을 추가한 모습
이렇게 icmp, udp에 대해서 허가된 모습
이렇게 Standard / Extended ACL을 만들어 트래픽을 컨트롤해줄 수 있습니다
Standard Numbered, Named / Extended Numbered, Named / 정책 추가 및 제거까지 실습해봤습니다
감사합니다!
'Network > 컴퓨터 보안' 카테고리의 다른 글
[네트워크] EVE-NG로 ZFW(Zone-based policy Firewall) 실습하기 (0) | 2022.06.12 |
---|---|
[네트워크] EVE-NG로 CBAC(Context-Based Access Control) 실습하기 (0) | 2022.06.05 |
[네트워크] ACL(Access Control List)의 목적 및 기능 알아보기 (1) | 2022.05.24 |
클라우드, 개발, 자격증, 취업 정보 등 IT 정보 공간
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!