ACL
ACL(Access Control List) 접근 제어 항목
1. ACL 목적
- 트래픽 필터링
- 방화벽 구성
- IP 주소 및 서브넷 정의
2. ACL 설정시 파악할 요소
- 출발지 / 목적지
- 허용(permit) / 차단(deny)
- in / out
3. ACL 처리 과정 및 주의 사항
1) 서브넷 범위가 작은 항목부터 설정해야 한다.
- ACL를 설정하면 설정된 순서대로 순서 번호를 할당 받는다.
- 순서 번호대로 검사하여 조건에 만족된 항목이 있으면, ACL 동작을 실시한다.
- 그 다음 항목은 검사하지 않는다.
Ex1) 잘못된 예제
R1(config)#access-list 10 permit 13.13.0.0 0.0.255.255
R1(config)#access-list 10 deny 13.13.30.0 0.0.0.255
R1(config)#end
R1#show ip access-list
Standard IP access list 10
10 permit 13.13.0.0, wildcard bits 0.0.255.255
20 deny 13.13.30.0, wildcard bits 0.0.0.255 ←범위가 크게 설정되면 작은 경우 검사하지 않음
R1#conf t
R1(config)#no access-list 10
Ex2) 알맞은 예제
R1(config)#access-list 10 deny 13.13.30.0 0.0.0.255
R1(config)#access-list 10 permit 13.13.0.0 0.0.255.255
R1(config)#end
R1#show ip access-list
Standard IP access list 10
10 deny 13.13.30.0, wildcard bits 0.0.0.255
20 permit 13.13.0.0, wildcard bits 0.0.255.255
R1#conf t
R1(config)#no access-list 10
2) ACL 마지막 항목에는 'deny any'가 동작한다.
Ex1) 잘못된 예제
R1(config)#access-list 10 deny 13.13.30.0 0.0.0.255
R1(config)#end
R1#show ip access-list
Standard IP access list 10
10 deny 13.13.30.0, wildcard bits 0.0.0.255
(마지막에 'deny any' 처리 실시)
Ex2) 알맞은 예제
R1(config)#access-list 10 permit any
R1(config)#end
R1#show ip access-list
Standard IP access list 10
10 deny 13.13.30.0, wildcard bits 0.0.0.255 (11 matches)
20 permit any
3) 항목 부분 추가 및 부분 삭제 불가능
R1#show ip access-list
Standard IP access list 10
10 deny 13.13.30.0, wildcard bits 0.0.0.255 (11 matches)
20 permit any
R1#conf t
R1(config)#access-list 10 deny 13.13.20.0 0.0.0.255
R1(config)#end
R1#show ip access-list
Standard IP access list 10
10 deny 13.13.30.0, wildcard bits 0.0.0.255 (11 matches)
20 permit any
30 deny 13.13.20.0, wildcard bits 0.0.0.255
R1#conf t
R1(config)#no access-list 10 deny 13.13.30.0 0.0.0.255
R1(config)#end
R1#show ip access-list
3. Standard ACL
- ACL 번호 : 1~99
- 검사 항목 : 출발지
Ex1) ’13.13.10.0/24’ 사용자들이 ‘172.16.1.1’ 서버에 접근하는 것을 차단하여라.
access-list 10 deny 13.13.10.0 0.0.0.255
access-list 10 permit any
!
int fa0/1
ip access-group 10 out
Ex2) ‘13.13.10.0/24’ 사용자들이 인터넷을 사용하는 것을 제한하며, ‘172.16.1.1/24’ 서버로는 접근이 가능한 ACL 설정을 알아보도록 하자.
access-list 10 deny 13.13.10.0 0.0.0.255
access-list 10 permit any
!
int s1/0
ip access-group 10 out
Ex3) ‘172.16.1.1/24’ 서버는 인터넷과 연결된 외부 사용자들에게 서비스가 되지 않도록 하며, 오직 ‘13.13.10.0/24’ 사용자들에게만 서비스가 가능한 ACL 설정을 알아보도록 하자.
access-list 10 deny 172.16.1.1 0.0.0.0
access-list 10 permit any
!
int s1/0
ip access-group 10 out
[실습] 출발지가 ‘13.13.30.0/24’인 패켓만 ‘13.13.10.0/24’ 서브넷으로 접근하는 것을 차단하며, ACL 필터가 동작하면 로그 메시지를 출력하는 예제를 알아보도록 하자.
@ R1
access-list 10 deny 13.13.30.0 0.0.0.255 log
access-list 10 permit any
!
int s1/0
ip access-group 10 in
R1#show run
R1#show ip access-lists
Standard IP access list 10
10 deny 13.13.30.0, wildcard bits 0.0.0.255 log
20 permit any
R3#ping 13.13.10.1 source 13.13.30.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 13.13.10.1, timeout is 2 seconds:
Packet sent with a source address of 13.13.30.1
U.U.U
Success rate is 0 percent (0/5)
R3#telnet 13.13.10.1 /source fa0/0
Trying 13.13.10.1 ...
% Destination unreachable; gateway or host down
R2#ping 13.13.10.1 source 13.13.20.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 13.13.10.1, timeout is 2 seconds:
Packet sent with a source address of 13.13.20.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/36/44 ms
R1#
*Mar 1 00:23:18.415: %SEC-6-IPACCESSLOGNP: list 10 denied 0 13.13.30.1 -> 13.13.10.1, 1 packet
R1#show ip access-lists
Standard IP access list 10
10 deny 13.13.30.0, wildcard bits 0.0.0.255 log (6 matches)
20 permit any (15 matches)
R1#conf t
R1(config)#int s1/0
R1(config-if)#no ip access-group 10 in
R1(config-if)#exit
R1(config)#
R1(config)#no access-list 10
R1(config)#end
R1#show ip access-lists
4. Extended ACL
- ACL 번호 : 100~199
- 검사 항목 : 출발지/목적지, 프로토콜(ip, tcp, udp, icmp, eigrp, ospf), 포트 번호
- 블로그 그림 참조
Ex1) 출발지가 ‘13.13.30.1’인 PC가, FTP 서버 ‘13.13.10.1’로 접근하는 트래픽 허용
프로토콜 출발지 IP 주소 출발지 포트 목적지 IP 주소 목적지 포트
tcp 13.13.30.1 any 13.13.10.1 20, 21
access-list 110 permit tcp host 13.13.30.1 host 13.13.10.1 eq 20
access-list 110 permit tcp host 13.13.30.1 host 13.13.10.1 eq 21
Ex2) 출발지가 ‘13.13.20.1’인 PC가, 웹-서버 ‘13.13.10.100’로 접근하는 트래픽 허용
프로토콜 출발지 IP 주소 출발지 포트 목적지 IP 주소 목적지 포트
tcp 13.13.20.1 any 13.13.10.100 80
access-list 110 permit tcp host 13.13.20.1 host 13.13.10.100 eq 80
Ex3) 출발지가 ‘13.13.30.1’인 PC가, ‘13.13.10.1’로 Ping 되는 것을 차단하여라.
프로토콜 출발지 IP 주소 출발지 포트 목적지 IP 주소 목적지 포트
icmp 13.13.30.1 X 13.13.10.1 X
access-list 110 deny icmp host 13.13.30.1 host 13.13.10.1 echo ←외부에서 오는 echo request 만 차단함.
access-list 110 deny icmp host 13.13.30.1 host 13.13.10.1 ← 모든 ICMP 옵션을 차단
Ex4) 출발지가 ‘13.13.30.1’인 PC가, ‘13.13.10.1’로 접근하는 트래픽 차단
프로토콜 출발지 IP 주소 출발지 포트 목적지 IP 주소 목적지 포트
ip←모든 프로토콜의미 13.13.30.1 - 13.13.10.1 -
access-list 110 deny ip host 13.13.30.1 host 13.13.10.1
Ex5) RIP 라우팅 업데이트 허용
access-list 110 permit udp any eq 520 any eq 520
Ex6) EIGRP & OSPF 패켓 허용
access-list 110 permit eigrp any any
access-list 110 permit ospf any any
Ex7) 웹-서버 ‘13.13.10.100’에서 PC ‘13.13.20.1’로 다운로드 되는 트래픽 차단
프로토콜 출발지 IP 주소 출발지 포트 목적지 IP 주소 목적지 포트
tcp 13.13.10.100 80 13.13.20.1 any
access-list 110 deny tcp host 13.13.10.100 eq 80 host 13.13.20.1
Ex8) ’13.13.10.0/24’ 사용자들이 ‘172.16.1.0/24’ 서브넷으로 접근하는 것을 차단하여라.
access-list 110 deny ip 13.13.10.0 0.0.0.255 172.16.1.0 0.0.0.255
access-list 110 permit ip any any
!
int fa0/0
ip access-group 110 in
Ex9) Extended ACL
① 출발지가 ‘13.13.10.1’ 호스트가 FTP 서버 ‘172.16.1.1’로 접근하는 것을 차단하여라.
② 출발지가 ‘13.13.10.0/24’ 서브넷이 FTP 서버 ‘172.16.1.1’로 접근하는 것은 허용하여라.
③ 외부 사용자가 인터넷을 통하여 ‘172.16.1.1’ 서버로 Telnet 접속하는 것을 차단하여라.
④ 이외 나머지 트래픽들은 접근이 가능하도록 허용하여라.
access-list 110 tcp deny host 13.13.10.1 host 172.16.1.1 ep 20
access-list 110 tcp permit host 13.13.10.1 host 172.16.1.1 ep 23 ←telnet 기능을 넣고 싶다면...
access-list 110 tcp permit 13.13.10.0 0.0.0.255 host 172.16.1.1 ep 21 ←생략가능
access-list 110 tcp permit 13.13.10.0 0.0.0.255 host 172.16.1.1 ep 20 ←생략가능
access-list 110 tcp permit 13.13.10.0 0.0.0.255 host 172.16.1.1 ep 23
access-list 110 tcp deny any host 172.16.1.1 ep 23
access-list 110 permit ip any any
!
int fa0/1
ip access-group 110 out
!
Ex9-1)
① 출발지가 ‘13.13.10.1’ 호스트가 웹-서버 ‘172.16.1.1’로 접근하는 것을 차단하여라.
② 출발지가 ‘13.13.10.0/24’ 서브넷이 웹-서버 ‘172.16.1.1’로 접근하는 것은 허용하여라.
③ 외부 사용자가 인터넷을 통하여 ‘172.16.1.1’ 서버로 ping 하는 것을 차단하여라.
④ 단, '172.16.1.1' 서버는 외부로 Ping이 되어야 한다.
⑤ 이외 나머지 트래픽들은 접근이 가능하도록 허용하여라.
프로토콜 출발지 IP 주소 출발지 포트 목적지 IP 주소 목적지 포트
tcp 13.13.10.1 any 172.16.1.1 80
icmp any x 172.16.1.1 x
access-list 120 deny tcp host 13.13.10.1 host 172.16.1.1 eq 80
access-list 120 permit tcp 13.13.10.0 0.0.0.255 host 172.16.1.1 eq 80 ←생략가능(access-list 120 permit ip any any)
access-list 120 deny icmp any host 172.16.1.1 echo
access-list 120 permit ip any any
!
int f0/1
ip access-group 110 in
!
Ex10) Extended ACL
① 출발지가 ‘13.13.10.1~2’ 호스트가 웹-서버 ‘172.16.1.1’로 접근하는 것을 차단하여라.
② 출발지가 ‘13.13.10.0/24’ 서브넷이 웹-서버 ‘172.16.1.1’로 접근하는 것은 허용하여라.
③ 외부 사용자가 인터넷을 통하여 ‘172.16.1.1’ 서버로 ping 하는 것을 차단하여라.
④ Ping을 차단할 경우, 라우터에 인터페이스 정보와 함께 로그가 출력되도록 하여라.
⑤ 이외 나머지 트래픽들은 접근이 가능하도록 허용하여라.
access-list 110 deny tcp host 13.13.10.1 host 172.16.1.1 eq 80
access-list 110 deny tcp host 13.13.10.2 host 172.16.1.1 eq 80
access-list 110 permit icmp 13.13.10.0 0.0.0.255 host 172.16.1.1
access-list 110 deny icmp any host 172.16.1.1 echo log-input
access-list 110 permit ip any any
!
int fa0/1
ip access-group 110 out
!
① R1은 외부에서 오는 트래픽 중 출발지 네트워크가 ‘13.13.30.0/24’인 트래픽이 내부 로컬 네트워크 ‘13.13.10.1’로 Telnet 접근을 차단하여라.
② R1은 외부에서 ‘13.13.10.100’ 서버로 Ping이 되는 것을 차단하라. 단, ’13.13.10.100’ 서버는 외부로 Ping 되어야한다.
③ R1은 외부에서 오는 트래픽 중 출발지 네트워크가 ‘13.13.20.0/24’인 트래픽이 내부 로컬 웹서버 ‘13.13.10.100’에 접근하는 것을 차단하여라.
④ R1은 위에 조건을 제외한 나머지 트래픽은 허용한다.
⑤ 위의 조건을 구성할때에는 최대한 간결하게 ACL를 구성하며, ACL 항목을 R1 Serial 1/0 에 적용하여라.
access-list 110 deny tcp 13.13.30.0 0.0.0.255 host 13.13.10.1 eq 23
access-list 110 deny icmp any host 13.13.10.100 echo
access-list 110 deny tcp 13.13.20.0 0.0.0.255 host 13.13.10.100 eq 80
access-list 110 permit ip any any
!
int s1/0
ip access-group 110 in
!
- R1은 외부에서 오는 트래픽 중 출발지 네트워크가 '13.13.20.0/24'인 트래픽이 내부 로컬 네트워크 '13.13.10.1' 로 Telnet 접근을 차단하여라
R1#sh ip access-lists
Extended IP access list 110
10 deny tcp 13.13.30.0 0.0.0.255 host 13.13.10.1 eq telnet
20 deny icmp any host 13.13.10.100 echo
30 deny tcp 13.13.20.0 0.0.0.255 host 13.13.10.100 eq www
40 permit ip any any (8 match(es))
access-list 110 deny tcp 13.13.20.0 0.0.0.255 host 13.13.10.1 eq 23
conf t
ip access-list extended 110
35 deny tcp 13.13.20.0 0.0.0.255 host 13.13.10.1 eq 23
R1#sh ip access-lists
Extended IP access list 110
10 deny tcp 13.13.30.0 0.0.0.255 host 13.13.10.1 eq telnet
20 deny icmp any host 13.13.10.100 echo
30 deny tcp 13.13.20.0 0.0.0.255 host 13.13.10.100 eq www
35 deny tcp 13.13.20.0 0.0.0.255 host 13.13.10.1 eq telnet
40 permit ip any any (8 match(es))
R1#show run
R1#show ip access-lists
R3#telnet 13.13.10.1 /source fa0/0
Trying 13.13.10.1 ...
% Destination unreachable; gateway or host down
R3#ping 13.13.10.1 source fa0/0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 13.13.10.1, timeout is 2 seconds:
Packet sent with a source address of 13.13.30.1
U..U.
Success rate is 0 percent (0/5)
R2#telnet 13.13.10.100 80 /source fa0/0
Trying 13.13.10.100, 80 ...
% Destination unreachable; gateway or host down
R1#
*Mar 1 01:07:12.567: %SEC-6-IPACCESSLOGDP: list 110 denied icmp 13.13.30.1 (Serial1/0 ) -> 13.13.10.1 (8/0), 1 packet
R1#
R1#
R1#show ip access-list
Extended IP access list 110
10 deny tcp 13.13.30.0 0.0.0.255 13.13.10.0 0.0.0.255 eq telnet (3 matches)
20 deny icmp host 13.13.30.1 host 13.13.10.1 echo log-input (5 matches)
30 deny tcp 13.13.20.0 0.0.0.255 host 13.13.10.100 eq www (3 matches)
40 permit ip any any
R1#conf t
R1(config)#int s1/0
R1(config-if)#no ip access-group 110 in
R1(config-if)#exit
R1(config)#
R1(config)#no access-list 110
[참고] Named ACL
@ R1
ip access-list extended IN_Filter
deny tcp 13.13.30.0 0.0.0.255 13.13.10.0 0.0.0.255 eq 23
deny icmp host 13.13.30.1 host 13.13.10.1 echo log-input
deny tcp 13.13.20.0 0.0.0.255 host 13.13.10.100 eq 80
permit ip any any
!
int s1/0
ip access-group IN_Filter in
R1#show run
R1#show ip access-list
R3#telnet 13.13.10.1 /source fa0/0
R3#ping 13.13.30.1 source 13.13.10.1
R2#telnet 13.13.10.100 80 /source fa0/0
R1#show ip access-list