SPACE.IN

[ Network ] ACCESS LIST (ACL) / Extended ACL 본문

Network

[ Network ] ACCESS LIST (ACL) / Extended ACL

__IN 2024. 8. 20. 23:52

● 라우터 보안 access list
: 네트워크에 접근 여부를 허용할지 말지를 결정하는 리스트 (필터링)
: 라우터에서 설정한다고 해서 네트워크 계층까지가 아니고 응용계층의 일부분까지도 관리한다.
: 물리 - 응용 계층 모두를 완벽히 막을 수 없기 때문에 UTM과 같은 전문 방화벽 장비를 사용한다
: ACL은 크게 numbered과 named으로 구분 각각 standard와 extended가 있다

표준 ACL 1-99 : 출발지 주소만 참고하여 제어
확장 ACL 100-199 : 출발지, 목적지 주소, 프로토콜, 포트 참고 제어 가능


●  ACL 기본 규칙


1) ACL은 맨 윗줄부터 아래로 차례대로 수행
> 그래서 좁은 범위 설정을 먼저 해야한다 그렇지 않으면 모든 패킷이 허용된다 
= 전혀 필터링 효과가 없다

ex.
R(config)# access-list 9 deny 125.101.2.0 0.0.0.255 
R(config)# access-list 9 permit any 



2) 맨 마지막 줄에는 deny any가 생략되어 있다
단 deny로 끝나는 ACL이 있다면 반드시 마지막 줄에 permit 구문을 작성해야한다 그렇지 않으면 모두 거부된다

ex.
R(config)# access-list 12 deny 125.101.2.0 0.0.0.255
>> 요러고 끝내면 안된다는 말인겨


3) 순서대로 입력되고 수행되기 때문에 중간에 삽입, 수정, 삭제가 불가능함
별도의 메모장에서 미리 작성하고 검증을 한 후에 실행하자



4) ACL은 해당하는 인터페이스에 ACL이 정의되지 않으면 동작하지 않는다



5) 언제 적용할 지도 지정해야 한다. 
outbound / inbound

 

 

  ACL 설정


* ACL 정의 하는 명령어
R(config)# access-list (list 숫자) (permit | deny) {<출발지ip> <와일드카드마스크> | any}
  :: list 숫자는 1 - 99 중에 관리자 마음대로 정하는거, 여기서 | 는 또는이란 뜻

* ACL 적용하는 명령어
R(config)# int s0/0
R(config-if)# ip access-group <list 숫자> <in | out> :: inbound , outbound



+ deny any는 맨 끝에 생략되어있다고 생각하면 됨 (permit any는 생략안되어있어서 필요하면 써야함)

+ ACL은 목적지 라우터에서 설정해야한다



ex. 출발지가 210.100.8.0/24인 패킷이 라우터로 들어오지 못하게 설정

R(config)# access-list 7 deny 210.100.8.0 0.0.0.255 
R(config)# access-list 7 permit any 

R(config)# int s0/0
R(config-if)# ip access-group 7 in  : 들어오지 못하게 설정이라서



ex. 출발지가 190.150.82.0/24 인 패킷만 들어오게 설정하세요

R(config)# access-list 7 permit 190.150.82.0 0.0.0.255  :: 이거만 적어도 뒤에 deny any가 생략되어있어서 안써두댐 (R(config)# access-list 7 deny any 생략된거임)

R(config)# int s0/0
R(config-if)# ip access-group 7 in




ex. 출발지가 51.100.92.8/32인 패킷이 외부로 나가지 못하게 설정하세요.

R(config)# access-list 7 deny 51.100.92.8 0.0.0.0 
R(config)# access-list 7 permit any

R(config)# int s0/0
R(config-if)# ip access-group 7 out


[ 실습 0 ]
3.1.1.1 주소가 연결되지 않도록 설정
access-list 1 deny 3.1.1.1 0.0.0.0 : ip하나만 막는거라서 0.0.0.0으로 주는거 !
access-list 1 permit any

access-list 2 deny 3.1.1.2 0.0.0.0
access-list 2 permit any

int f0/0
ip access-group 1 out 

int f0/1
ip access-group 2 out




[ 실습1 (클라우드) ]

access-list 1 deny any

access-list 2 permit 3.0.0.0 0.255.255.255
access-list 2 deny any

access-list 3 permit 2.0.0.0 0.255.255.255
access-list 3 permit 4.0.0.0 0.255.255.255
access-list 3 deny any

 



[  실습 2 (클라우드) ]
access-list 1 deny 192.168.10.1 0.0.0.0
access-list 1 deny 192.168.30.1 0.0.0.0
access-list 1 permit any

192.168.40.1  인터페이스에
int f0/0
ip access-group 1 out
으로 적용

 

● Extended ACL

(config)# access-list <list number> <permit | deny> ip <출발지 주소> <와일드마스크> <목적지주소> <와일드카드마스크> 
(config)# access-list <list number> <permit | deny> <protocol> <출발지 주소> <와일드마스크> <목적지주소> <와일드카드마스크> eq <port번호>


:: 여기서 list num은 100보다 크다잉, 프로토콜 포트마다 다 적용해줘야함, eq = equal
:: 0.0.0.0 와일드마스크대신 host쓸수있음


ex. 
R(config)# access-list 222 permit tcp any 201.11.102.10. 0.0.0.0 eq 80
R(config)# access-list 222 permit tcp any host 201.11.102.10 eq 80


+ tcp : ftp 20 21 / telnet 23 / smtp 25 / http 80 / https 443
+ udp : dns 53 / tftp 69 / dhcp 67 38

 

ex1. 라우터에 들어오는 신호 중 출발지가 192.11.100.0/24이고 목적지가 210.150.6.0/24 네트워크인 트래픽 모두를 차단하시오
R(config)# access-list 120 deny ip 192.11.100.0 0.0.0.255 210.150.6.0 0.0.0.255
R(config)# access-list 120 permit ip any any

ex2. 라우터에 들어오는 것 중 목적지가 210.150.6.0/24 네트워크에 있는 모든 신호들을 차단하세요
R(config)# access-list 130 deny ip any 210.150.6.0 0.0.0.255
R(config)# access-list 130 permit ip any any

ex3. 라우터로 들어오는 신호 중 출발지가 200.101.52.0/24 네트워크만이 129.29.32.0/24 네트워크에 있는 FTP와 Telnet 서버에 접속할 수 있도록 하라
R(config)# access-list 110 permit tcp 200.101.52.0 0.0.0.255 129.29.32.0 0.0.0.255 eq 20
R(config)# access-list 110 permit tcp 200.101.52.0 0.0.0.255 129.29.32.0 0.0.0.255 eq 21
R(config)# access-list 110 permit tcp 200.101.52.0 0.0.0.255 129.29.32.0 0.0.0.255 eq 23
:: permit를 줄때는 맨 마지막 deny 생략가능 (왜? 차피 마지막은 deny 생략되어있는거니까)

ex4. 197.2.13.1/32에서 나가는 트래픽 중 http와 tftp만을 차단하고 나머지는 모두 허용해라
R(config)# access-list 111 deny tcp host 197.12.13.1 any eq 80
R(config)# access-list 111 deny udp host 197.12.13.1 any eq 69
R(config)# access-list 111 permit ip any any

ex5. 들어오는 트래픽 중 목적지가 http서버 (201.11.102.10) ftp서버 (192.20.81.1)인 트래픽만 들어올 수 있도록 설정하시오
R(config)# access-list 222 permit tcp any host 201.11.102.10 eq 80
R(config)# access-list 222 permit tcp any host 192.20.81.1 eq 20
R(config)# access-list 222 permit tcp any host 192.20.81.1 eq 21

 

[ 실습 1 (클라우드) ]
access-list 100 deny tcp host 192.168.10.1 host 192.168.30.1 eq 80
access-list 100 permit icmp host 192.168.10.1 host 192.168.30.1

access-list 100 deny icmp host 192.168.20.1 host 192.168.30.1 
access-list 100 permit tcp host 192.168.20.1 host 192.168.30.1 eq 80

server가는 인터페이스에
int f1/0
ip access-group 100 out 

확인) pc에서 web-browser, command prompt사용해서 확인

 



[ 실습2 (클라우드)]
1) dns서버에 dns > http://www.naver.com / http://www.ftp.com
2) pc에 dns서버 ip 주기 223.255.255.1 
3) 
access-list 100 permit tcp host 192.168.10.1 host 191.255.255.1 eq 80
access-list 100 permit tcp host 192.168.20.1 host 191.255.255.1 eq 21
access-list 100 permit icmp host 1.1.1.1 host 191.255.255.1 echo 
만들고 서버 쪽으로 하기
4) int f0/1
ip access-group 100 out

 

 


[ 실습 3 (클라우드) ]
access-list 100 permit tcp host 192.168.10.1 host 192.168.20.1 eq 80
access-list 100 deny tcp 192.168.10.0 0.0.0.255 host 192.168.20.1 eq 80
access-list 100 permit ip any any 
서버쪽으로가는 인터페이스
int f0/0
ip access-group 100 out