ACL(access control list)에 대하여

양승현·2022년 7월 11일
0

network

목록 보기
8/13
post-thumbnail

ACL(access control list)이란?

  • 번호나 이름을 이용하여 정책을 생성하고 생성된 정책에 기반하여 라우터를 통과하는 패킷을 필터링, 분류하는데 사용되는 기술이다.
  • 일종의 라우터 방화벽
  • permit되면 NAT 주소변환이 될수 있고 안될수도 있지만 이후 거치게 되면 routing 되면 경로 선택하여 패킷 포워딩을 하여 해당 경로로 패킷을 보내게 된다.
  • 패킷의 어떠한 부분을 확인하고 필터링 하느냐에 따라 sandard/extened ACL로 구분한다.
  • 실제로는 이름을 이용하여 정책명을 설정하는 경우가 대다수이다!

사용 용도

  • 들어오거나 나가는 패킷을 허용(permit)/거부(deny)하고 싶을 때
  • 들어오거나 나가는 텔넷 접속을 허용(permit)/거부(deny)하고 싶을 때
  • 트래픽 분류를 하기 위해

Access-list는 하향식으로 순차적인 처리를 하기 때문에 좁은 범위의 Access-list가 먼저 설정 되어야한다.


INbound와 OUTbound

  • 지정한 포트 인터페이스를 기준으로 패킷이 들어오면 IN
  • 지정한 포트 인터페이스가 아닌 다른 포트 인터페이스로 패킷이 나갈 경우 OUT

standard ACL과 extened ACL

standard ACL

  • access-list (원하는 Rule 번호(1~99)) (permit/deny) (적용할 IP 주소) (Wildcard Mask)
  • 패킷의 출발지 주소만을 확인한다. → standard ACL (번호 1~99)
  • 클라우드나 대규모 환경에서는 사용하지 않는 방법이다.

예) 작성방법

-------------------- 출발지 IP(src)-Wildcard bit(Mask)(dst)
access-list 1 permit 192.168.1.0 0.0.0.255
1.1.1.0 ~ 0.0.0.255 → 0 : look atthis bit
1 : dont care bit
→ access-list 1 deny 2.2.2.2 0.0.0.0
(= 2.2.2.2 하나만 deny)
(= access-list 1 deny host 2.2.2.2)
→ access-list deny 0.0.0.0 255.255.255.255 모든 IPv4 주소
(= access-list 1 deny any)

→ access-list 1 permit 1.1.1.0 0.0.0.255
(= 출발지 IP와 Wildcard bit가 동일 해야한다.)
→ access-list 100 permit tcp any host 3.3.3.3 eq 80
→ access-list 100 deny icmp any host 3.3.3.3 echo
(=바깥의 모든 사용자들이 3.3.3.3에게 echo 보내는 것을 막는다.)
→ access-list 100 deny ip any host 4.4.4.4
(=외부에 있는 모든 사용자들이 4.4.4.4로 가는 모든 것을 차단하겠다.)

  • 클라우드나 대규모 환경에서는 사용하지 않는 방법이다.
  • standard 는 특정 IP 주소로 부터의 모든 접근에 대하여 허용 또는 차단으로만 구분할 수 있다.

extened ACL

  • 패킷의 L3,L4를 모두 볼 수 있다.
    (참고, 방화벽이나 라우터는 inspection 기능을 활용하면 L7까지 확인 가능하다.)
  • access-list (원하는 Rule 번호(100~199)) (permit/deny) (Protocol Number) (Source IP 주소) (Destination IP 주소) (Wildcard Mask) (eq port번호)

standard처럼 단순히 Source IP 주소뿐 아니라 Destination IP 주소를 추가로 등록하여 특정 A~B 사이의 통신을 제어할 수도 있다.

예) 작성방법

  • access-list 111 permit ip any host 1.1.1.1
    → “IP” : 패킷의 IP(L3) 부분만을 확인하고 필터링하겠다!
    → “any” : source IP (출발지IP)
    → “host 1.1.1.1” : 목적지IP
  • access-list 111 deny tcp any host 2.2.2.2 eq 80
    → “tcp” : L3 부분과 L4 에서 tcp 포트번호를 확인하고 해당 패킷을 차단하겠다
    → “any” : 출발지
    → “host 2.2.2.2 eq 80” : 2.2.2.2:80 으로 접속
  • access-list 111 deny icmp any host 2.2.2.2
    → “icmp” : ping!!!
    → 외부에 있는 모든 사용자들이 2.2.2.2로 ping 보내는 것이 있다면 이를 차단하겠다.
  • access-list 111 deny ip any any
    → 모든 것을 차단하겠다

ACL의 규칙!!!

  1. top-down 방식(위에서부터 아래로 차례차례 적용된다. 순서가 매우 중요)
  2. ACI에서 지정하지 않은 나머지 모든 트래픽은 자동으로 차단된다.
    (보이지는 않지만 ACL의 가장 아래에는 access-list X deny any 혹은 access-list X deny ip any any 가 생략되어 있다)
  3. 작성된 ACI는 적용해 주어야 활성화 된다. 적용할 때에는 interface, vty, (NAT → ip nat inside source list 1 int fa0/0 overload)

예) 외부에서 유립되는 트래픽 중 2.2.2.2 만을 차단하라
access-list 1 deny host 2.2.2.2
access-list 1 permit any
access-list 1 deny any (생략되어 있음)

  1. 생성된 ACL은 적용해 주어야 활성화 된다.
    적용할 때에는 방향을 지정해 주어야 한다.
  • 출발지 IP, 목적지 IP, 출발지/목적지의 포트번호(L3~L4)를 필터링 → extened ACL (100 ~ 199) 또는 word 이다.

→ 일반적으로 방화벽의 역할로써 사용하는 ACL은 ectended 방식을 사용한다.


[ACL 적용하기 ]

NACL

aws 와 같은 클라우드 환경에서의 기본 보안 사항

  1. 네트워크 기반의 NACL : VPC 내에 여러개의 서브넷을 생성하고 각 서브넷에서 다른 서브넷으로의 통신시 필터링이 필요한 경우 NACL을 적용한다. 주목적은 서브넷 단위에서의 패킷 필터링이며 outbound 적용을 주로 적용한다.
  2. security-group : 서브넷 단위가 아닌 인스턴스 단위로 보안 사항을 적용하고자 하는 경우
    주로 inbound에 대하여 적용하며 outbound는 기본적으로 permit any와 같이 설정되어 있다.
  3. IAM : 계정 관리
    root 사용자 → aws 모든 서비스에 대하여 접근이 가능하며 계정추가, 삭제, 계정에 대한 권한 부여등을 진행한다. 즉 linux의 super user인 root와 동일하다고 생각하면 된다.
    iam 사용자 → 특정 aws root 계정 하에서 생성된 일반 사용자(db관리, 개발, 운영자)
    각 계정별로 접근할 수 있는 서비스에 대하여 지정할 수 있으며 해당 사용자가 로그인하는 방법도 선택할 수 있다. access key id, access key 를 사용하여 자신의 개발환경 또는 linux와 같은 환경에서 자신의 로컬 환경과 aws 환경을 연결하여 사용할 수 있다.

0개의 댓글