라우터에 PACKET이 들어오면 먼저, ACL에 보내진다
- 이 ACL에서 필터링이 되는데, PERMIT이 되어 NAT에 보내지거나, DENY되어 DROP된다
- 그 후, NAT를 거쳐 라우팅되어 NEXT HOP으로 보내진다
ACL은 Access Control List의 약자로 번호나 이름을 이용하여 정책을 생성하고, 생성된 정책에 기반하여 패킷을 필터링, 분류한다
- 필터링 : PERMIT 혹은 DENY를 통해 PACKET을 골라내는 것
- 분류 : 특정 PACKET을 구분하는 것. 이렇게 구분된 PACKET들에 NAT나 QOS와 같은 정책을 부여한다
- QOS는 Quality of Service로 애플리케이션, 사용자 및 컴퓨터를 기반으로 네트워크 제어를 제공하는 네트워크 대역폭 관리 도구
패킷의 어떠한 부분을 확인하고 필터링 하느냐에 따라 standard/extended ACL로 구분한다
- 출발지 IP 만을 확인하고 필터링 : Standard ACL ( 번호 1~99 ) ( 이름 WORD ) - WORD란 아무 단어나 입력해도 된다는 뜻이다
- 클라우드나 대규모 환경에서는 사용하지 않는 방법이다
- 출발지/목적지 IP, 출발지/목적지 PORT 번호 ( L3,L4 )를 모두 확인 : Extended ACL ( 번호 100~199 ) ( 이름 WORD )
- 일반적으로 방화벽의 역활로서 사용하는 ACL은 Extended 방식을 사용한다
- access-list 1 permit 192.168.1.0 0.0.0.255
- access-list 1 deny 2.2.2.2 0.0.0.0
- Standard는 특정 IP 주소로부터의 모든 접근에 대하여 허용 또는 차단으로만 구분할 수 있다. 따라서 특정 PORT로 서버에 접근하는 것이 불가능하며, 해당 라우터를 거쳐서 다른 곳에 접근할때 세세하게 접근 권한을 설정하는 것이 불가능 하다
- access-list 111 permit ip any host 1.1.1.1 : IP -> 패킷의 IP (L3) 부분만을 확인하고 필터링 하겠다, ANY -> 출발지 IP , HOST 1.1.1.1 : 목적지 IP, 모든 IP가 1.1.1.1로 접근하는 것을 허용
- access-list 111 deny tcp any host 2.2.2.2 eq 80 : TCP -> L3 , L4를 모두 확인한다, DENY -> 차단, ANY -> 출발지 IP, HOST 2.2.2.2 -> 목적지 IP, EQ 80 -> = 80이라는 뜻으로 80번 PORT 하나만을 의미한다 -> 모든 IP가 2.2.2.2의 80번 PORT로 접근하는 것을 차단한다
- access-list 111 deny icmp any host 2.2.2.2 : 외부의 모든 사용자들이 2.2.2.2로 Ping을 보내는 것을 차단하겠다
- access-list 111 deny ip any any : 모든 것을 차단하겠다
ex) 나는 외부에서 접속하는 사용자들의 트래픽 중 2.2.2.2로부터의 모든 트래픽을 차단하고 싶다. 나머지 모든 트래픽은 허용하고자 한다
access-list 1 deny host 2.2.2.2
access-list 1 permit any
위와 같이 작성해야한다. TOP-DOWN 방식이므로, 만약 permit any가 위에 있다면 permit이 먼저 되기에, deny를 위에 작성해야한다
별도로 작성하지 않더라도 ACL의 가장 아래에는 deny ip any any가 생략되어있다
ex) 외부에서 유입되는 트래픽 중 2.2.2.2 만을 차단하고 싶다
- access-list deny host 2.2.2.2 만을 쓰면 밑에 deny ip any any가 생략되어있으므로 모든 트래픽이 차단된다
- 따라서 밑에 access-list 1 permit any를 추가해야된다
적용할 때에는 방향을 지정해 주어야 한다
Ex) 172.16.1.0/24 에는 우리회사의 서버들이 존재하고 있다. 이 서버들로 접속할 수 있는 사용자 (IP)는 172.16.2.100이 유일하며, 나머지는 모두 차단된다 -> fa0/1.10의 out에 설정해야한다. 먼저, 허용하고, 다음에 나머지를 차단한다
- access-list 11 permit host 172.16.2.100 -> 172.16.2.100이 접속하는 것을 허용
- int fa 0/1.10
- ip access-group 1 out -> fa 0/1.10을 통해 host로 나갈때로 설정
- 이는 subnet mask가 아니라 wild card bit임을 인지하자
- 따라서, 홀수만 허용할려면 0.0.0.254를 통해 마지막 1을 무조건 고정시켜 홀수만을 허용할 수 있다
- 예를 들면, 192.168.1.4 0.0.0.3은 192.168.1.4 ~ 7까지가 범위다
- access-list 1 deny 2.2.2.2 0.0.0.0은 2.2.2.2 한 대의 PC를 제한하는 것이다 = access-list 1 deny 2.2.2.2
- 모두를 제한하고 싶으면 access-list 1 deny 0.0.0.0 255.255.255.255 = access-list 1 deny any를 사용하면 된다