ㄴ CCNA

7월 25일 (firewall, server service 부분 정리)

깜자왕 2022. 7. 25. 17:18
반응형

4. Firewall
- 미리 정의된 정책으로 네트워크 트래픽을 제어하는 시스템.
- 그렇다면 미리 정의된 정책이라는 건 어떤게 있을까?

  4-1. ACL
   => 네트워크 트래픽을 분류하는 구문.
   => List를 생성해 그 안의 ip들을 필터링(permit / deny)한다.
   => 표준 ACL : 1-99 범위로 list 값 매겨 특정 ip 필터링. 3가지 응용 버전이 있습니다.
        
        1. access-list (1-99) permit / deny (source 네트워크주소) (와일드카드마스크) -> source 네트워크주소가 출발지인 트래픽을 허용/차단 하겠다.
        2. access-list (1-99) deny host (end-device 주소) -> 특정 host 주소 하나를 거부하겠다
        3. access-list (1-99) deny any -> 모든 주소를 거부하겠다

   => 확장 ACL : 100-199 범위로 list 값 매겨 특정 ip뿐 아니라 특정 포로토콜과 포트번호까지 지정해 필터링

        access-list (100-199) permit/deny (tcp,udp.icmp...) (source네트워크주소) (와일드카드마스크) (dst네트워크주소) (dst와일드카드) eq (Application 포트번호)

  4-1-1. NAT+ACL 
   => NAT : 사설 IP와 공인 IP를 변환하는 기능
   => ACL로 출발지와 목적지를 지정해 특정 네트워크 대역만 변환되도록 만드는 것이 NAT + ACL 기능

        ip nat inside source static (source host ip) (공인 ip)
        int f0/0
           ip nat inside
        int s0/0/0
           ip nat outside

  4-1-2. PAT 
   => NAT와 달리 하나의 source IP에 포트번호를 달아 여러 공인 IP로 변환하는 기능
   => 각 포트에 ip nat inside(내부 연결), outside(외부 연결) 지정해줘야 함
   => 실습 토폴로지에선 PAT 사용

        access-list 1 permit (source네트워크주소) (와일드카드마스크)
        ip nat inside source list 1 interface (outside 방향 인터페이스) overload

  4-2. CBAC 
   => 내부에서 출발은 트래픽이 '되돌아올때' 임시 ACL을 만들어 검사한 후 허용하는 기능 - 인터페이스에 ACL 적용
   => CBAC 자체는 '허용'만 하는 역할임을 주의
   => 그렇기에 차단 기능을 사용할 경우는 ACL과 같이 사용됨.
   => 인터페이스가 많으면 각 인터페이스에 CBAC를 적용시켜야 하기에 불편함 동반

        access-list 103 permit tcp (source 네트워크 주소) (와일드카드마스크) any eq (포트 번호)
        ip inspect name [inspect name] [포트번호 프로토콜] - inspection 테이블 만들기
        
        int f0/0
        ip access-group 103 in - acl 적용
        ip inspect [inspect name] in - inspection 테이블 적용

  4-2-1. CBAC Zone 
   => 인터페이스 기반 CBAC와 달리, 영역 개념인 zone 기반으로 작동
   => inzone, outzone 을 베이스로, 필요할 경우 dmzzone 까지 구성
   => 서로 다른 존은 통신이 불가능하고, 관리자가 설정을 해줘야 가능

   -명령어-


   1. 존 생성 및 인터페이스 할당
   zone security [zonename] - 존 생성
   int f0/0
      zone-member security [zonename] - 인터페이스 할당
   
   2. 트래픽 방향 설정
   zone-pair security [pairname] source [inzone] destination [outzone] - inside에서 outside존으로 방향 지정

   3. 트래픽 분류 지정
   class-map type inspect match-any(acl중 하나 부합하면) [class-map name]
   match access-group [acl list number] - class-map을 통해 트래픽 분류시킴

   4. 정책 설정
   policy-map type inspect [policy name]
   class type inspect [class-map name]
   inspect - policy-map을 통한 보안 정책 설정

   5. 정책 적용
   zone-pair security [pairname]
   service-policy type inspect [policy name] - service-policy를 통해 보안 정책 적용

   * dmzzone 의 경우, access-list 명령어로 허용 acl 정책을 만든 후 ( 존 생성 및 인터페이스 할당 ) 부터 반복하면 된다. 

  4-3. VPN 
   => virtual private network로, underlay를 이용해 가상으로 overlay를 만들어주는 tunneling 입니다.
   => 이 중 2개의 vpn을 토폴로지에 사용했습니다.

  4-3-1. Site-To-Site
   => 두 개의 네트워크 도메인이 가상 사설네트워크 연결로 프라이빗한 통신을 가능하게 하는 IPsec 기반 vpn 입니다.

   -명령어-


   1. IPSec Tunnel을 연결할 대상을 지정 - peer 인증
    crypto isakmp key 00100 address (상대 라우터 공인 ip 인터페이스 주소)  - 상대 라우터 공인 ip 인터페이스 주소와 IPSec 협상을 시작한다
    (단. 패스워드 : 00100 확인)  

   2. Phase1 협상
   - IPSec 협상 (Phase2)을 해야하는데, 안전하게 하기 위해 미리 협상을 하자
   - isakmp (IKE) 

      crypto isakmp policy 10
      encryption ? (aes 128)
      authentication ? (pre-share)
      hash ? (md5) 

   3. Phase2 협상
   - 실제 IPSec을 어떻게 만들지 결정하는 협상 (SA)
   - Phase1을 바탕으로 안전하게 진행됨
   - 2단계와 3단계는 별개이고, 2단계는 3단계를 안전하게 진행시키기 위한 존재입니다.

      crypto ipsec transform-set MYSET esp-3des esp-sha-hmac

   4. IPSec으로 만들 DATA 정의 -> Interesting Packet

      access-list 100 permit (source 네트워크 주소) (와일드카드마스크) (destination 네트워크 주소) (와일드카드마스크)

   5. 설정한 IPSec을 MAP으로 통합
   - IPSec은 MAP을 만들어 물리적인 interface에 적용한다

      crypto map MYMAP 10 ipsec-isakmp

         set peer (상대 라우터 공인 ip 인터페이스 주소)
         set transform-set MYSET
         match address 100
         set security-association lifetime seconds 86400 - 데이터 암호화 키의 수명 지정

   6. 설정한 MAC은 interface에 적용

      interface e0/2 (인터넷 인터페이스)
      crypto map MYMAP


  4-3-2. Client VPN 
   => 다른 사설 네트워크의 pc가 Client vpn에 속한 웹서버의 네트워크 안에 존재하는 것처럼 작동시키는 vpn 입니다.
   => 이것 역시 인증 및 인가를 통한 프라이빗 통신으로 이루어집니다.

   -명령어-


   1. ISAKMP Security Associate 설정

      crypto isakmp policy 10
      encryption ? (aes)
      authentication ? (pre-share)
      hash ? (md5) 
      group 2

   2. 인증 및 인가 설정
     
      aaa new-model - aaa 모델 생성
      aaa authentication login REMOTE local - aaa 모델에 대한 인증 키(REMOTE) 설정
      aaa authorization network REMOTE local - aaa 모델에 대한 인가(REMOTE) 설정

   3. 본사 내 사용하는 사설 IP 주소 할당
      
      ip local pool [POOL name] (사설 ip 범위 첫 주소) (사설 ip 범위 끝 주소)
      crypto isakmp client configuration group REMOTE - REMOTE 그룹 클라이언트 설정
      key 1111 - 인증 키 값 설정
      pool [POOL name]

   4. IPsec 단계 설정
   
      crypto ipsec transform-set MYSET esp-des esp-md5-hmac - 실제 IPSec을 어떻게 만들지 결정하는 협상 (SA)
      crypto dynamic-map DMAP 10
      set transform-set MYSET

   5. 설정 매핑하기

     crypto map [Client Map name] client authentication list REMOTE
     crypto map [Client Map name] isakmp authorization list REMOTE
     crypto map [Client Map name] client configuration address respond
     crypto map [Client Map name] 10 ipsec-isakmp dynamic DMAP

     int f0/0 - outside interface에 설정 매핑시키기
     crypto map [Client Map name]

5. Server Service
  5-1. DHCP 
   => 서버에서 IP Pool을 관리합니다.
   => IP 자동 할당 요청이 있을 시, 이 Pool에서 하나의 ip를 꺼내어 할당시킵니다.

1. DHCP Discover

- DHCP 요청 Client는 DHCP의 서버를 알 수 없으므로 Broadcast주소로 패킷을 보냅니다.

- 할당받은 ip는 당연히 없기 때문에 0.0.0.0 으로 설정되어 있습니다.

 

2. DHCP OFFER

- Discover를 받은 서버는 Pool 에서 할당되지 않은 IP, 기본 gateway 등의 정보를 패킷에 담아 보냅니다. 당연히 Source ip는 0.0.0.0 으로 찍혀있었기 때문에 서버 또한 응답을 Broadcast로 보내게 됩니다.

 

3. DHCP REQUEST

- OFFER를 받은 Client는 서버가 보내준 정보를 사용한다고 REQUEST를 보냅니다. 이 메세지 또한 Broadcast로 보내지게 됩니다.

 

4. DHCP ACK

- REQUEST를 받은 서버는 Unicast로 메세지를 보내 IP 할당이 Client에 완료됩니다.

 


  5-2. DNS UDP 53 port

  

1. Client가 DNS 서버에게 Query 메세지 발송

2. DNS서버는 Query를 받고, 자신의 데이터베이스에 Client의 요청도메인이 있다면 Response 발송

   2-1. 만약 요청도메인이 없다면, 별도의 Response 발송하지 않음. (UDP를 사용하는 이유. 데이터베이스에 요청 Client가 없을 수도 있기 때문)


  5-3. Web(HTTP) TCP 80 port

 

1. Client가 DNS Response를 받으면, Web-Server와 3-way-handshaking 연결 시도

   1-1. 3-way-handshaking이 성공 시 서버에게 HTTP GET 요청

2. 서버가 GET을 받으면, XML과 함께 200 (ok) HTTP 응답 코드를 반환합니다.

3. 웹 서버 - 클라이언트 간 연결을 4-way-handshaking 진행으로 해제합니다.

4. 웹 브라우저가 Client에게 웹 문서를 출력합니다.