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이다.
[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 적용
하지만 앞에서 말했듯이 같은 네트워크 대역대를 사용중인 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
: 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 |