ACL(Access Control List, 접근 제어 목록)
네트워크나 시스템 자원에 대한 접근을 제어하기 위해 사용되는 규칙 또는 필터의 집합이다.
ACL은 주로 네트워크 장비(예: 라우터, 스위치, 방화벽)와 운영 체제에서 사용되며,
특정 트래픽이나 사용자의 접근을 허용하거나 차단하는 역할을 한다.
ACL의 종류
standard(표준) ACL
- ip 패킷 헤더의 소스 ip만 확인 (출발지 ip만 확인)
extended(확장) ACL
- ip의 source, destination, protocol(다음 l4헤더의 프로토콜 종류) 확인
- l4헤더의 source , destination 등을 확인.
필터링 하고자 하는 대상을 특정,
ip로만 구분이 가능하면 standard
아니면 ex) port로 구분해야할 때
extended 사용
ACL 동작 원리
ACL은 ordered series 형태
아래로 acl을 확인 하면서 조건에 해당하는지 확인한다.
매치가 안되면 밑에 문장을 확인한다.
ACL에 일치하는게 하나도 없는 경우
따로 deny함.
firewall과 비슷한 동작 방식 으로 all deny가 default이다.
ex)
1.1.1.0/24 permit
1.1.1.0/32 deny의 경우
1.1.1.0/24에서 permit이 되어버린 경우
1.1.1.0/32까지 check가 가지 않는다.
원래는 1.1.1.0/32 에 해당해서 deny 되어야 하는 것이 맞는데도, 1.1.1.0/24에도 해당하기 때문에 permit이 되버린 후 하단의 문장은 검사하지 않는다.
따라서 specific한 문장을 위로,
general한 문장을 아래로 설정해야 한다.
Wildcard Masking
Wildcard Masking(와일드카드 마스킹)은 네트워크 ACL(Access Control List) 설정 시 특정 IP 주소 범위를 지정하거나 필터링하기 위해 사용되는 개념이다. 와일드카드 마스크는 주로 ACL을 설정할 때 사용되며, 주어진 IP 주소와 비교하여 어떤 비트를 검사할지, 무시할지를 결정한다.
32비트 길이의 이진수로 표현되며, IP 주소의 특정 비트가 일치하는지 아닌지를 결정합니다. 와일드카드 마스크는 '0'과 '1'로 구성되어 있는데:
- '0': 해당 비트를 검사한다. 즉, IP 주소의 해당 비트가 정확히 일치해야 한다.
- '1': 해당 비트를 검사하지 않는다. 즉, IP 주소의 해당 비트가 일치하지 않아도 된다.
예를 들어, 와일드카드 마스크 0.0.0.255는 다음과 같은 의미를 갖는다.
- 처음 세 옥텟(24비트)은 '0'이므로 해당 비트는 모두 일치해야 한다.
- 마지막 옥텟(8비트)은 '255' (이진수로 '11111111')이므로 해당 비트는 검사하지 않는다.
단일 IP 주소 지정
IP 주소 192.168.1.1을 정확히 지정하려면, 와일드카드 마스크는 0.0.0.0이 된다.
- IP 주소: 192.168.1.1
- 와일드카드 마스크: 0.0.0.0
이는 모든 비트가 '0'이므로 해당 IP 주소와 정확히 일치하는 경우에만 필터링 규칙이 적용된다.
특정 범위 지정:
IP 주소 범위 192.168.1.0부터 192.168.1.63까지를 지정하려면, 와일드카드 마스크는 0.0.0.63이 된다.
- IP 주소: 192.168.1.0
- 와일드카드 마스크: 0.0.0.63
이 경우, 처음 26비트는 검사하고, 나머지 6비트는 무시하므로 192.168.1.0에서 192.168.1.63까지의 IP 주소 범위가 포함된다.
이러한 방식으로 홀수 네트워크에 해당하는 경우를 필터링 하는 등 적용을 해볼 수 있다.
16 = 0001 0000
17 = 0001 0001
18 = 0001 0010
19 = 0001 0011
20 = 0001 0100
21 = 0001 0101
이런식으로 홀수는 2진표현 시 뒤에 1이 붙는다.
이 특징을 이용한다.
172.16.1.0 / 0.0.254.255
0.0.254.255 =
0000 0000. 0000 0000. 1111 1110. 1111 1111
이므로
세번째 자리수의 마지막 비트의 값을 1을 강제한다.
따라서 172.16.홀수.0 ~ 172.16.홀수.255 의 범위를 필터링 할 수 있게 된다.
이러한 방식으로 연속된 1과 0을 사용하는 서브넷 마스킹 방식과는 달리
와일드 카드 마스킹은 세부적인 표현이 가능하다.
wildcard mask ACL 사용
host라는 키워르들 사용하면 정확히 해당하는 ip만 지정하는 의미이다.
wildmasking 0.0.0.0 을 사용하는 것과 같은것.
any 는 모든 ip를 지정
wildcard로 255.255.255.255 을 사용하는 것과 같다.
라우터 ACL 설정 예시
- standard ACL
Router(config)# access-list 10 deny 192.168.1.10
Router(config)# access-list 10 permit any
Router(config)# access-list 1~99 or 1300~1999의 숫자 { deny | permit } { source [source-wildcard] | host {address | name} | any }
마지막 영역은 source ip 또는 host선언한 특정 ip주소, 또는 any 로 모든 ip를 필터링 할 수도 있다.
1~99 , 1300 ~ 1999는 Standard ACL에 해당하는 number이므로 Standard ACL을 사용하려면 해당하는 범위의 수로 선언해야한다.
또는
숫자가 들어갈 자리에 'standard + ACL의 특정한 이름'을 부여하여 네이밍 선언을 통해 사용 할 수 있다. * 추천
- extended ACL
extended는 프로토콜을 명시한다.
[sequence-number] {permit | deny} protocol {source matching criteria} {destination matching criteria}
ex )
Router (config) # ip access-list extended 101
- access-list 를 생성하는데, extended ACL이며, 101번을 고유 번호로 할당하겠다는 뜻.
Router (config-ext-nacl) # permit tcp host 172.16.3.3 range 56000 60000 host 203.0.13.30 eq 80
- 172.16.3.3은 소스 IP 주소로, ACL은 이 특정 IP 주소에서 오는 트래픽을 필터링
- 소스 포트 범위가 56000에서 60000 사이인 트래픽을 필터링.
- 203.0.13.30은 목적지 IP 주소로, ACL은 이 특정 IP 주소로 향하는 트래픽을 필터링
- eq 80은 80포트 (http프로토콜)에 해당하는 요청을 필터링 하겠다는 뜻.
Packet Tracer 실습__________________________
해당 구조의 예시 인프라를 구축
R1___________________
en
conf t
no ip domain-lookup
int f0/0
ip add 1.1.1.14 255.255.255.240
no sh
int f0/1
ip add 172.16.12.1 255.255.255.252
no sh
R2__________________
en
conf t
no ip domain look-up
int f0/0
ip add 2.2.2.254 255.255.255.0
no sh
int f0/1
ip add 172.16.12.2 255.255.255.252
no sh
static 설정
R1___________________
conf t
ip route 2.2.2.0 255.255.255.0 172.16.12.2
R2___________________
conf t
ip route 1.1.1.0 255.255.255.240 172.16.12.1
해당 방식으로 연결된 상태
이전 포스팅에서 자주 설명하고 실습했던 내용이라 자세한 설명은 생략하고 진행하겠다.
1.1.1.1 → 2.2.2.1 ping 확인
http 브라우저 접속 확인
static 라우팅 설정과 라우터 인터페이스를 연결해 두었으니 연결이 잘 될 것이다.
그러나 ICMP를 차단하고 나머지 통신을 유지하고 싶다면?
ACL을 사용할 수 있다.
acl 설정
설정 라우터 선택 : R2
설정 인터페이스 선택 : f0/1
방향성 결정 : inbound
R2
en
conf t
ip access-list extended NO_ICMP
deny icmp host 1.1.1.1 host 2.2.2.1
(1.1.1.1에서 2.2.2.1로 보내는 icmp deny)
int f0/1
ip access-group NO_ICMP in
(f0/1 인터페이스에 inbound 규칙으로 NO_ICMP ACL을 적용)
ICMP 차단을 하였기 때문에, Ping 요청이 정상 수행되지 않는다.
그러나 웹 브라우저도 접속이 되지 않았다.
ip access-list extended NO_ICMP
permit ip any any
를 추가
왜냐하면 ACL은 all deny가 default기 때문에 나머지의 경우를 permit해줘야한다,
의도 했던 대로 ICMP 패킷만 거부하고, 웹브라우저 접속은 원활하게 되는 모습!
'인프라 > 네트워크' 카테고리의 다른 글
[네트워크 인프라] Packet Tracer NAT 실습 (0) | 2024.08.30 |
---|---|
[네트워크 인프라] packet tracer VLAN, EtherChannel, Routing 실습 (0) | 2024.08.24 |
[네트워크 인프라] 라우팅 static 설정 (0) | 2024.08.21 |
[네트워크 인프라] 라우터를 사용한 서로 다른 네트워크 통신 시뮬레이션 (0) | 2024.08.20 |
[네트워크 인프라] LAN 구축 시뮬레이션 (0) | 2024.08.20 |