TeamLog🦝/network🔌

ACL

pigonhe 2024. 9. 15. 10:01

ACL(Access Constrol List)

 

: 네트워크 보안의 핵심 요소로, 네트워크 장비에서 데이터 패킷의 흐름을 제어하는데 사용되는 지침.

특정 조건에 따라 네트워크 트래픽을 허용하거나 차단한다.

 

- 보안성 강화

- 트래픽 제어 가능

- 패킷 트래핑을 위한 추가적인 장비 필요 X

 

네트워크에서는 위 사진에서 확인할 수 있듯이 라우터를 기준으로 나가는 트래픽(outbound)과 들어오는 트래픽(inbound),

2개의 트래픽이 존재한다.

acl은 들어오는 트래픽, 나가는 트래픽에 대한 acl을 구성할 수 있는 것이다.

 

acl에는 특정한 ip나 네트워크에 대한 허용(permit)과 차단(deny)이 있다.

단, acl이 걸려있는데 허용에 해당하지 않는 ip는 자동으로 차단된다.

(출발지가 10.10.10.1/24인 ip만을 허용하겠다는 내용만 설정하면 나머지 ip는 다 차단해버린다.)

 

10.10.10.1/24는 차단하고 나머지 10.10.10.0/24에 해당하는 ip는 허용하고 싶다면 acl을 2개 걸면 된다.

 

여기에서 주의할 점은 acl은 처음 것부터 차례대로 적용되지 때문에

'출발지가 10.10.10.0/24인 패킷 허용'

'출발지가 10.10.10.1/24인 패킷 차단'

이렇게 설정하면 10.10.10.1/24는 처음 리스트에는 허용에 해당되기 때문에 차단되지가 않는다.

 

'출발지가 10.10.10.1/24인 패킷 차단'

'출발지가 10.10.10.0/24인 패킷 허용'

이렇게 설정해주어야한다 (여러개 설정시 : 작은 범위 => 큰 범위)

 

* 패킷 필터링 : ip주소를 기반으로 패킷의 전달여부를 통제하고 특정 프로토콜을 사용하는 패킷을 전달하지 않는 과정


Standard ACL (표준 ACL)

: 출발지의 IP 주소만으로 검사하는 ACL방식 (ACL number : 1~99)

필수 조건 >> source IP

 

특정 출발지 ip의 패킷 진입만 허용하고 싶을 때 사용하는 acl이다.

통신이 이루어지는 상태임(ip설정, 라우팅 완료)

 

[case 1] 위 토폴로지의 pc0만 차단해보도록 하겠다

Router(config)#access-list [number] {deny | permit} {[network] | any} [wild mask] // acl 생성
Router(config)#int [acl 적용할 인터페이스]
Router(config-if)#ip access-group [number] {in | out} // acl 적용

 

Router 0
acl 설정 전에는 통신에 성공했지만 설정 후에는 통신에 실패한 것을 확인 할 수 있다.

 

하지만 앞에서 말했듯이 같은 네트워크 대역대를 사용중인 pc2의 통신도 이루어지지 않는것을 확인 할 수 있다.

이것을 막기위해 다른 패킷들은 허용을 시켜줘야한다.

왜인지 모르겠는데 패킷 차단시에 앞에서 했던 것 같이 하면 permit 설정을 해줘도 pc0,1 둘다 차단되었었다.

(pc0이 특정 하나의 ip를 갖기 때문인 것 같다.)

차단 명령어 입력시에 ip 주소 앞에 host를 붙여주고 와일드 마스크를 빼서 위와 같이 명령어를 입력해주면 

pc1은 통신이 이루어지는 모습을 확인 할 수 있다.


host가 붙는 이유 : 특정 키워드를 통해 범위 지정 가능

- 모든 ip (0.0.0.0  255.255.255.255) = any

- 특정 ip 하나 (10.10.10.1 0.0.0.0) = host 10.10.10.1


ACL 목록 확인 명령어

 

: sh ip access-list를 입력하면 설정한 acl 목록과 함께 몇개의 패킷이 차단되고 허용됐는지 나온다

1개의 패킷(192.168.1.10)이 차단되고 또 다른 하나의 패킷(192.168.1.11)이 허용됐다는 것을 알 수 있다.

 


 

Extended ACL (확장 ACL)

: 출발지의 IP주소, TCP, UDP의 포트의 번호 등을 검사하는 ACL 방식 (ACL number : 100~199)

필수 조건 >> protocol, source IP, destination IP

 

[standared ACL의 한계]

1. 해당 IP에서 출발한 모든 패킷을 필터링함

>> 어떤 패킷은 허용하고 어떤 패킷은 막을 수 없음. 해당 IP는 허용하거나 차단하는 두가지 수밖에 없음

2. 출발지의 패킷만 차단할 수 있으며 interface를 경유하지 않는 패킷은 필터링이 불가능함

 

>> 위와같은 단점을 보완한 것이 Extended ACL

Router(config)# access-list [100-199] [permit | deny] [Protocol] [출발지 IP] [출발지 wildcard] [목적지 IP] [목적지 wildcard] [옵션 (포트번호)] // acl 생성
Router(config)# int [acl 적용할 인터페이스]
Router(config)# ip access-group [number] {in | out} // acl 적용

 

[case 2] PC0이 서버로 http 통신을 할 수 없게하고, 다른 모든 트래픽은 허용하게 설정하자

pc0(192.168.10.1)에서 서버(192.168.20.2)로 tcp 프로토콜을 이용해 www(http 포트 80)로 가는 트래픽을 차단하고 다른 모든 트래픽은 허용하게 설정해주었다.

 

여기에서 중요한 점은 인터페이스에 적용시킬때 inbound 가 아닌 outbound로 적용을 해주어야한다.

inbound 방향으로 적용해주면 트래픽이 서버로 들어오는 경우에만 필터링되므로 pc0에서 서버로 가는 트래픽은 허용되기 때문이다.

 

위와 같은 설정을 다 해주었다면 통신을 확인해봅시다

두가지 테스트를 통해 통신이 잘 이루어지는지 확인 할 수 있다.

 

[ping 테스트]

 

acl이 다른 트래픽을 허용하기 때문에 ping이 성공하는 것을 확인 할 수 있다

 

[http 요청 테스트]

 

pc0에서 http 요청을 보냈을 때 페이지가 로드되지 않는 모습을 통해 요청이 차단되는 것을 확인할 수 있다.

'TeamLog🦝 > network🔌' 카테고리의 다른 글

Frame Relay  (0) 2024.09.17
NAT  (0) 2024.09.17
Server, PPP  (0) 2024.09.04
Port Security  (0) 2024.09.03
vlan, inter-vlan, vtp  (2) 2024.09.02