ACL

박형준·2024년 2월 29일

Access Control Lists

(접근 제어 목록)

  • 특정 트래픽의 접근을 허용할지 차단할지 결정하는 리스트 (Filtering)

  • 보안을 위해서 많이 사용.

  • L3장비인 Router에서 설정하지만 Application Layer부분도 관리하기 때문에 Network Layer까지라고 단정할 수 없다.

  • 하지만 Application Layer까지 완벽히 막을 수 없기 때문에 Firewall 등의 전문적인 보안 장비를 사용.

  • ACL은 크게 Numbered 와 Named 두 종류가 있다.
    그리고 다시 Standard (1~99)와 Extended (100~199)로 구분할 수 있다.

    1) standard Access list 🡺 source address만 참조해서 filtering 여부를 결정.

    2) extended Access list 🡺 source address외에도 destination address, protocol, Port 번호 등 좀더 자세한 정보를 참조해 filtering 여부를 결정한다.


  • Standard ACL의 경우는 출발지 주소(source address)를 보고 permit, deny 여부를 결정.(표준 ACL )
  • packet의 source addressACL에 정의된 source address가 일치하면 ACL의 내용을 수행한다. (permit or deny)
  • standard ACL의 사용 list-number는 1-99까지 사용한다.

ACL 규칙

1) ACL은 윗줄부터 순서대로 수행. 때문에 ACL은 좁은 범위 설정이 먼저 되어야 한다.만약 다음처럼 넓은 범위를 먼저 설정하게 되면 모든 Packet이 허용.
(Fitering 효과가 없다.)

          R1(config)# access-list 1 permit any
          R1(config)# access-list 1 deny 125.101.1.0 0.0.0.255

2) ACL의 마지막은 deny any가 생략되어 있다. 즉, 마지막에 permit any가 없을 경우 ACL 조건에 없는 모든 address는 deny 된다.

3) numbered ACL은 순서대로 입력되기 때문에 중간 삽입이나 중간 삭제가 불가능하다. (중간에 List가 틀려도 삽입, 수정 , 중간 삭제 불가능)

  • 예외 named ACL의 경우는 중간 삭제 및 추가 삽입이 가능한다.

서브넷 마스크 255.255.255.0 -> 와일드 마스크 0.0.0.255

  • 1과 0을 반대로 한다
  • /25(255.255.255.128) -> 0.0.0.127(0.0.0.1000,0000)
  • 서브넷 마스크(짝수), 와일드 마스크(홀수)

/27(255.255.255.1110,0000) -> 0.0.0.0001,1111

  • 서브넷 마스크는 통째로 묶을 수 있고, 와일드 마스크는 세부적으로 나눌 수 있다.

255.255.252.0(서브넷) -> 0.0.255-252.255(와일드)
->0.0.3.255


*엑세스 리스트 설정 순서

  1. 선언(허용/차단)
    access-list번호 [허용/차단] ip0.0.0.0(1개만 차단할 때)
    access-list번호 [deny/permit] any
  1. 해당 인터페이스에 적용
    해당 포트에서 ip access-group 번호 [in/out]
  • R-1(config)#access-list 1 deny 1.1.1.2 0.0.0.0 - 0.0.0.0은 1개를 뜻 한다.
    R-1(config)#access-list 1 permit any - 나머지 수용

  • R-1(config)#int fa 0/0
    R-1(config-if)#ip access-group 1 in - 인터페이스에 그룹 적용

  • R-1(config)#access-list 1 remark PC-0 packet deny and any all packet permit - 마크 해둔 것 표시

    -> PC-0에서 핑테스트 해보면 [실패].
    ping 3.3.3.3
    ping 2.2.2.2
    -> PC-1에서 핑테스트 하면 [성공]
    ping 3.3.3.3
    ping 2.2.2.2

    엑세스 리스트 삭제
    #conf t 하고
    #no access-list [번호]
    해당 인터페이스에서 no ip access-group [번호][in/out]

  • R-1(config)#no access-list 1 - 번호 삭제

  • R-1(config)#int fa0/0
    R-1(config-if)#no ip access-group 1 in - 해당 인터페이스에서 그룹 삭제


Extended ACL (100-199)

  • standard ACL은 source address만 조건으로 보고 filtering을 수행한다. 하지만 extended ACL은 출발지와 목적지 주소(destination address) 모두를 조건으로 보고 제어한다. (상세하게 제어 가능)

  • 또한 standard ACL은 TCP/IP에 대해 제어만을 하지만 extended ACL은 ip, tcp, udp, icmp 등의 상세 프로토콜을 선택해서 설정할 수 있다.

    well known port : 익히 알려진 포트

  • extended ACL의 사용 list-number는 100-199까지 사용한다.

    ex) R1(config)#access-list 101 deny ip 192.100.51.0(NI) 0.0.0.255(서브넷) 210.150.6.0 0.0.0.255

    R2(config)#access-list 110 deny tcp 200.101.52.0(NI) 0.0.0.255(서브넷) 129.29.31.0 0.0.0.255 eq 80(포트번호)


source: 출발지, destination: 목적지


*PC-0 에서 핑 차단 나머지는 허용(라우터의 포트 모두 차단 해야 핑이 안됨]

  • R-1(config)#access-list 100 deny icmp host 1.1.1.2 host 203.230.7.9 echo
    R-1(config)#access-list 100 deny icmp host 1.1.1.2 host 203.230.7.6 echo
    R-1(config)#access-list 100 deny icmp host 1.1.1.2 host 3.3.3.1 echo - 목적지 경로 차단(ICMP만),

  • R-1(config)#access-list 100 permit ip any any - 나머지는 허용 [FTP, HTTP, 텔넷등은 허용]

  • R-1(config)#int fa0/0
    R-1(config-if)#ip access-group 100 in - inside 설정

*삭제하기

  • R-1(config)#no access-list 100
    R-1(config)#int fa0/0

  • R-1(config-if)#no ip access-group 100 in



named ACL을 이용해서 1.1.1.3으로 오는 핑 허용 나머지는 차단
@ 표준 네임드
R-1(config)#ip access-list standard TEST - 이름 설정
R-1(config-std-nacl)#
R-1(config-std-nacl)#permit host 1.1.1.3 - 허용
R-1(config-std-nacl)#deny any -나머지 차단

R-1(config-std-nacl)#int fa0/0 - 인터페이스 설정
R-1(config-if)#ip access-group TEST in
(in: ping을 보내면 갔다가 오기 때문에, out으로 해도 상관없다.)

*삭제
R-1(config-std-nacl)#no ip access-list standard TEST

R-1(config)#int fa 0/0
R-1(config-if)#no ip access-group TEST in


*확장 ACL
IP 뿐만 아니라 , 프로토콜, 포트 번호등을 이용해서 세세하게 설정 가능

PC-0에서 R-3으로 핑 차단 나머지는 허용[ 라우터의 포트 모두 차단 해야 핑이 안됨 ]

  • R-1(config)#access-list 100 deny icmp host 1.1.1.2 host 203.230.7.9 echo
    R-1(config)#access-list 100 deny icmp host 1.1.1.2 host 203.230.7.6 echo
    R-1(config)#access-list 100 deny icmp host 1.1.1.2 host 3.3.3.1 echo
    R-1(config)#access-list 100 permit ip any any ==> 나머지는 허용[ FTP, HTTP, 텔넷등은 허용 ]

  • R-1(config)#int fa0/0
    R-1(config-if)#ip access-group 100 in

*삭제 하기

  • R-1(config)#no access-list 100
    R-1(config)#int fa0/0
    R-1(config-if)#no ip access-group 100 in

* 웹서버 접속을 차단 하려면
#access-list 100 deny tcp host 1.1.1.3 host 203.230.7.2 eq www 또는 80

허용
#access-list 100 permit tcp host 1.1.1.3 host 203.230.7.2 eq www 또는 80


PC-1번에서 R-2로 텔넷 차단 나머지는 허용 실습

  • R-2(config)#access-list 100 deny tcp host 1.1.1.3 host 203.230.7.2 eq telnet
    R-2(config)#access-list 100 deny tcp host 1.1.1.3 host 203.230.7.5 eq telnet
    R-2(config)#access-list 100 deny tcp host 1.1.1.3 host 2.2.2.1 eq 23
    R-2(config)#access-list 100 permit ip any any

  • R-2(config)#int s0/2/1
    R-2(config-if)#ip access-group 100 in
    R-2(config-if)#int s0/2/0
    R-2(config-if)#ip access-group 100 in
    R-2(config-if)#int fa0/0
    R-2(config-if)#ip access-group 100 out

삭제 하기
-> R-2(config)#int fa0/0
R-2(config-if)#no ip access-group 100 out
R-2(config-if)#int s0/2/1
R-2(config-if)#no ip access-group 100 in
R-2(config-if)#int s0/2/0
R-2(config-if)#no ip access-group 100 in
-> R-2(config)#no access-list 100

*핑과 웹 페이지 접속 테스트


*라우터 2에 연결된 PC에서 1.1.1.3서버의 모든것[ 웹서버,ftp,telnet] 차단, 3.3.3.3서버는 허용하는.실습

R-2(config)#access-list 100 deny tcp host 2.2.2.2
host 1.1.1.3 eq www
R-2(config)#access-list 100 deny tcp host 2.2.2.2 host 1.1.1.3 eq ftp
R-2(config)#access-list 100 deny tcp host 2.2.2.2 host 1.1.1.3 eq telnet
R-2(config)#access-list 100 permit ip any any

R-2(config)#int fa0/0
R-2(config-if)#ip access-group 100 in


*Named ACL을 이용해서 1.1.1.3 으로 오는 핑 허용 나머지는 차단.실습

  • R-1(config)#ip access-list standard TEST
    R-1(config-std-nacl)#permit host 1.1.1.3
    R-1(config-std-nacl)#deny any
    R-1(config-std-nacl)#int fa0/0
    R-1(config-if)#ip access-group TEST in
    ==> 핑이 1.1.1.3 또는 1.1.1.2 에 갔다가 되돌아 오는것을 차단
  • 삭제
    R-1(config)#no ip access-list standard TEST
    R-1(config-std-nacl)#int fa0/0
    R-1(config-if)#no ip access-group TEST in

0개의 댓글