[CISCO 보안 아카데미 1기 Part.2] 10일차 정리(ACL, Distributed-list, PBR, NAT)

Jin_Hahha·2024년 9월 5일
1
post-thumbnail

ACL

왜 쓰는가

  • Filtering
    • 라우터를 통과하는 패킷을 필터링 하는 것으로 IP Traffic을 관리하기 위해
  • Classification
    • 특정한 취급을 위한 트래픽 식별

ACL 응용: Filtering

  • 라우터를 통해 이동하는 패킷을 허용(Permit) 또는 거부(Deny)
  • 라우터로의 또는 라우터로부터 Virtual Terminal Line Access(vty) 허용 or 거부
  • ACL이 없이는 모든 패킷이 네트워크의 모든 영역으로 전달될 수 있음

ACL 응용: Classification

  • 패킷 테스트 기반 트래픽의 경우 특별 취급

ACL 위치와 방향

  • 하나의 인터페이스, 한 방향(In/Out), 하나의 프로토콜에 하나의 ACL이 들어감
  • 두 인터페이스와 3개의 프로토콜이 동작할 때, 해당 라우터는 총 12개의 개별 ACL이 들어갈 수 있음


Matching Packets

  • 가장 상단 ACL 문장부터 차례대로 검사
  • 만약 해당 문장에서 Deny가 된다면 Packet은 Drop됨(Go to Packet Discard Bucket)
  • 만약 특정 문장에서 Permit이 된다면 Packet은 목적지 Interface(or Interfaces)로 전송됨
  • 만약 모든 ACL에 Match 되지 않는다면, 묵시적 Deny(Deny All)되어 Drop
    • 묵시적 Deny는 log가 남지 않음

Outbound ACL Operation

  • PBR은 Inbound로 밖에 처리가 되지 않음
  • Inbound Interface Packet이 들어왔을 경우
    • 라우팅 테이블에 없으면? Drop
    • 라우팅 테이블에 존재하고, Outbound Interface를 선택
      • ACL에 걸린다면? Drop
    • ACL에 걸리지 않는다면, ACL 문장 Test
      • Permit이면 아까 선택한 Outbound Interface를 통해 전송
      • Deny되면 Drop

Type of ACL

  • Standard ACL

    • Source Address 확인
    • 일반적으로 전체 프로토콜을 허용하거나 거부
    • Destination과 가까운 곳에 설정
  • Extended ACL

    • Source와 Destination Address를 전부 확인
    • 일반적으로 특정 프로토콜 또는 어플리케이션을 허용하거나 거부
  • Standard와 Extended ACL을 식별하기 위한 2가지 방법

    • Numbered ACL
      • 식별을 위해 숫자를 사용
      • 어떤 프로토콜을 Filtering 하고 싶은가에 따라 숫자 할당
    • Named ACL
      • 식별을 위해 주석 느낌의 이름 또는 숫자를 사용
      • ACL에 이름을 제공함으로써 Name 할당

Guidelines for Creating ACLs

  • 인터넷 구간과 연결된 라우터에서 ACL 사용법
    • 통신이 되어서는 안 되는 IP 패킷 Filtering (북한, 중국 IP)
    • 사설 IP로 통신을 시도하는 패킷 Filtering
  • ACL이 설정되는 위치는 효율성에 큰 영향을 미침
    • Extended ACL
      • Traffic의 Source에 가능한 가깝게 배치하여 필터링
    • Standard ACL
      • Standard ACL은 목적지 주소를 특정할 수 없기에, 가능한 목적지에 가깝게 배치

ACL Troubleshooting Case

  • Error1, 10.1.1.1이 10.100.100.1로 접속 불가능
  • 172.16.0.0에 대한 주소만 permit 했기에, 10.1.1.1은 묵시적 Deny됨

  • Error2, 10.1.1.1이 10.100.100.1로 접속 불가능
  • Specific IP 주소에 대한 ACL 문장을 먼저 작성해야 함

  • Error3, 192.168.1.0 네트워크가 10.100.100.1로 TFTP 세션을 열수 없음
  • permit tcp any any가 아니라 ip any any로 작성해 주어야 Extended ACL에서의 permit any 기능을 함

  • Error4, 172.16.0.0 네트워크가 10.100.100.1로 telnet 접속됨, telnet 접속 차단 목적으로 ACL 작성
  • 10번 문장의 ACL 작성이 잘못되었음
    • 10 deny tcp any any eq telnet

  • Error5, 10.1.1.1이 10.100.100.1로 telnet이 접속됨, telnet 접속 차단 목적으로 ACL 작성
  • 10.1.1.1이 Router B로 들어올 때, 출발지 주소가 Router A의 Outbound Interface의 주소 10.160.22.11로 바뀔 것이라 생각해 10번 문장을 잘못 작성한 모습
    • 10 deny tcp host 10.1.1.1 any eq telnet

  • Error6, 10.100.100.1이 10.1.1.1로의 telnet 접속 가능, ACL은 telnet 접속 차단 목적으로 작성
  • 10.100.100.1 주소가 10.1.1.1로 접속하는 트래픽을 막으려면 Serial0 인터페이스에서 ACL 150을 Outbound 조건으로 걸었어야 함
    • ip access-group 150 out

  • Error7, 10.1.1.1이 Router B의 주소로 telnet 접속 가능, ACL은 telnet 접속 차단 목적으로 작성
  • 라우터로의 원격 접속 차단을 위해서는 line vty에 access-class를 걸어주어야 함

ACL Practice 1

  • 문제

  • 해설


ACL Practice 2

  • 문제

  • 해설

  • 결론적으로 세 주소를 동시에 홍보하려면

    192.168.11.21 X.X.X.194


IP Prefix Filters

  • IP Prefix filter는 Distributed-list 명령어로 구성된 IP access list로 형성되었음
  • Prefix lists
    • ACL보다 더 뛰어난 성능
    • User Friendly CLI
    • set number보다 더 길거나 짧은 서브넷 마스크로 주소 공간의 일부분으로써 경로를 match 시킬 수 있음

Prefix List Matching Without ge or le

  • ge 또는 le 옵션이 없으면 특정 주소에 대해서만 Prefix Matching을 검사하겠다는 의미

Prefix List Matching with ge or le

  • 위의 이미지를 기준으로
    • le 20은 16비트~20비트까지
    • ge 18은 18~32비트까지
    • 해당 범위들로 Prefix Match를 실행하겠다는 의미
  • 특정 범위 내의 주소만 검사하고 싶다면
    • ge 먼저 작성 후 le 작성

Subnet

  • Prefix를 설정하고 나면 필수로 확인해야 하는 부분, Subnet

  • 예시

    192.168.0.0/16
    192.168.0.0/24

    • 두 주소가 존재할 때, 주소의 24번째 비트가 0인지 1인지 확인하여, 192.168.0.0/16으로 선언된 것인지 192.168.0.0/24로 선언된 것인지 확인해야 함
  • ge / le 확인

    • ge 26 = 26번째 비트가 1인지 확인
    • le 28 = 29번째 비트가 0인지 확인
    • ge 25 le 30 = 25번째 비트가 1인지 31번째 비트가 0인지 확인

Prefix-list Practice

  • 문제

  • 해설

  • ip prefix-list All permit 0.0.0.0/0 ge 32
  • 모든 host의 경로만

  • ip prefix-list A1 permit 0.0.0.0/1 le 32
  • 첫 비트가 0이면 되니, bit 1까지만 비교(X.X.X.X/1)

  • ip prefix-list A2 permit 0.0.0.0/1 ge 9

  • ip prefix-list B1 permit 128.0.0.0/2 le 32

  • ip prefix-list B2 permit 128.0.0.0/2 le 15

  • ip prefix-list C1 permit 192.0.0.0/3 le 32

  • ip prefix-list C2 permit 192.0.0.0/3 ge 28 le 28

  • ip prefix-list C3 permit 192.0.0.0/3 ge 26 le 27

  • permit 10.0.0.0/8 le 32
  • deny 172.16.0.0/22 le 32
  • permit 172.16.0.0/12 le 32
  • permit 192.168.0.0/16 le 32

Route Maps

  • Access List와 같이 동작, 그러나 더욱 복잡함
    • Top-Down Processing 제공
    • 여러 조건들 중 하나라도 match 되는 즉시 탐색 중지
  • 각 조건문들에는 순번이 있음(더욱 쉬운 편집을 위해)
    • 조건문 삽입과 삭제 가능
  • 문서화 하기 쉽게 넘버링보다 네이밍됨
  • 적합 기준과 설정 기준이 사용됨
    • 프로그래밍 언어의 if-then 논리와 유사

Route Maps Application

  • route map의 용도
    • 경로 필터링 재분배
      • distributed list보다 더욱 정교하면서 복잡한 대체 기술
    • PBR
      • 목적지 네트워크가 아닌 기준에 따른 라우팅 정책 결정 가능
    • BGP policy implementation
      • BGP 라우팅 정책을 결정하는 주요 도구

Route Map Operation

  • statement list가 route map을 구성

  • Access list와 같이 top-down 방법으로 진행

  • 경로에 대한 첫 match가 적용됨

  • sequenece number는 특정 루트맵 문장에 추가되거나 삭제될 수 있음

  • Match Statements는 다수의 reference를 포함하고 있을 수 있음

  • 같은 조건문에 여러 기준이 match 될 수도 있음(OR 논리)

  • 적어도 하나의 reference는 경로를 permit 해야 함

    • 재분배 후보가 되기 위한 조건
  • 각 라인마다 여러 문장이 match 될 수 있음(AND 논리)

  • 모든 match 문장은 재분배 후보가 되기 위해서 경로를 permit 해야 함

  • Route map의 permit/deny문은 후보의 재분배 여부를 결정


Route-map OSPF Redistribute Practice

  • config
redistribute eigrp 100 subnet route-map AAA metric-type 1 metric 300 
route-map AAA permit 10
  match ip address prefix-list AAA BBB
  set metric 100
route-map AAA permit 20
  match tag 500
  set metric-type 2
  set metric 50
route-map AAA permit 999

  • 현재 문제의 조건을 만족시키는 방법은 위의 사진과 같은 방식이 있는데, Default 값을 route map과 재분배를 통해 원하는 값으로 바꾸어 넘기는 방법

Route-map PBR Practice

access-list 10 172.16.1.0 0.0.254.255 - (1)
access-list 20 172.16.0.0 0.0.255.255 - (2)
route-map BB permit 10 - (1)
  match ip address 1
  set metric 
route-map BB permit 20 - (2)
  match ip address 2
  set ip nexthop 192.168.1.1
  set ip nexthop 192.168.1.2
  set metric

NAT

inside/outside

  • inside/outside의 구분은 라우터가 결정
ip nat inside
ip nat outside
  • 위의 명령어를 각 인터페이스에 입력

Address

  • inside local address
    • inside 시점에서 보는 기기의 inside 영역 주소
  • inside global address
    • inside 시점에서 보는 기기의 outside 영역 주소
  • outside global address
    • outside 시점에서 보는 기기의 outside 영역 주소
  • outside local address
    • outside 시점에서 보는 기기의 inside 영역 주소

변환

  • 일반적으로 inside 영역을 source로 잡고 inside 기기들의 주소를 변환

  • 변환할 주소의 수가 단일 주소라면 1:1 매칭으로 NAT

  • 변환할 주소의 수가 다중 주소라면 pool을 생성하여 NAT(PAT 방식이 일반적)

  • 주소는 어디서 변환되는가

    1. Inbound Interface(이면서 Inside Interface)로 Traffic 접속
    2. Outbound Interface 중에서도 Outside Interface로 나가는가 검사
    3. 1번과 2번이 확인되어 NAT 조건에 match가 되면 NAT Table 생성
    4. 이후 Table을 참고하여 Outside Interface에서 Source IP 변경
  • Outside에서 Inside로 Traffic이 들어올 때

    • 목적지 IP가 Inside를 향하고 있다면 NAT Table을 거쳐 주소 변환
    • 변환된 Inside 주소로 향하는 라우팅 정보를 찾기 위해 RIB 참고

Route-map NAT Practice

  • DMZ 네트워크의 g0/0 설정 값은 그리 중요하지 않음

  • next-hop이 어디로 설정되어 있는지 더 중요

  • 조건변경

    • NAT pool을 사용하지 않음
    • Internet 구간으로 가는 주소는 next-hop 역할을 함

  • Static NAT 조건

    • 10.1.1.1이 UDP 53 포트를 사용한다면 source를 172.16.1.2로 변환하고 DMZ로 전송
    • 10.1.1.1이 Port 80을 사용한다면 source를 200.1.1.2로 변환하고 Internet 구간으로 전송

  • Dynamic 구현 조건

    • 10.1.1.0/24에 관한 주소가 들어오면 Drop
    • 10.1.2.0/24에 관한 주소가 들어오면 NAT Pool을 통해 주소 변환
      • 목적지는 Internet 구간
    • 나머지 NAT는 미적용

  • 예상 답

  • [Static NAT]

    access-list 100 permit udp host 10.1.1.1 any eq udp
    access-list 110 permit host 10.1.1.1 any eq 80
    
    ip nat inside source list 100 10.1.1.1 172.16.1.2
    ip nat inside source static 10.1.1.1 201.1.1.2
    
    route-map AA permit 100
      match ip address 1
      set ip nexthop 172.16.1.5
      set metric
    route-map BB permit 110
      match ip address 2
      set ip nexthop 201.1.1.1
      set metric
    
  • [Dynamic NAT]

    access-list 

0개의 댓글