0부터 시작하는 가상머신과 네트워크 공부 - 종합 실습

Jaehong Lee·2022년 7월 12일
0
post-thumbnail

0. Vlan & ACL 복습

  • Switch 종류

    • 스위치들로 분배해주는 스위치 : distribution switch
    • 장비로 분배해주는 스위치 : access switch
  • Switch & Router & Network

    • 한 네트워크이자 1 Broadcast Domain은 라우터에서는 1 interface이며, switch에서는 1 vlan이다
  • Switch port

    • access port : end-device와 연결되는 port
    • trunk port : switch와 switch를 연결할때 사용하는 port로, 보통 한 개의 인터페이스에 모든 vlan이 지나갈 수 있게하는 port
  • TAG

    • TAG : 12bit를 이용하여 vlan-id를 FRAME에 붙이는 것. 이 TAG는 뒤에 한 개의 bit를 이용해 뒤에 IP가 온다고 명시한다. 이를 통해, Switch에서는 TAG의 끝을 알 수 있으므로, 뒤에 IP 부분은 읽지 않는다. Switch나 Router는 이 TAG를 읽고 분리해서 원 상태의 FRAME으로 복구시킨다
      • TAG는 Trunk port를 통해 다른 switch나 라우터로 나갈때 사용한다
      • 이 TAG를 사용하는 방식을 표준 트렁킹 기술이라고 하며, IEEE 802.1Q ( dot1q )라고 한다
  • ACL

    • 방화벽의 초기 세대로 번호나 이름을 이용하여 정책을 생성하고, 생성된 정책으로 패킷을 필터링, 분류하는데 사용되는 기술
    • 패킷의 어느 부분까지 살펴보느냐에 따라 Standard/Extended로 구분한다
      • Standard : 패킷의 출발지 주소만을 호가인
      • Extended : 패킷의 L3, L4를 모두 볼 수 있다
    • 방화벽이나 라우터는 inspection 기능을 활용하면 L7 까지 확인 가능하다. 즉, Data를 열어서 full request uri ( FILE의 full 주소 확인 가능, 확장자까지 표시된다 ), host 주소등을 확인할 수 있다. 80번 PORT를 사용하는 특정 웹 사이트에 GET 요청을 하면 Frame에 HTTP로 표시된다
      • 이를 통해, Data 부분에 있는 STR을 읽고, 정규 표현식등을 활용해서 DATA 필터링 ( ex. URL 필터링, 확장자를 통한 DATA 필터링 )을 할 수 있다
    • squid squidguard를 이용한 url 필터링에 대해 알아보자
  • STANDARD ACL

    • 번호 1~99, 실무에서는 이름으로 정책명을 설정하는 경우가 대다수
    • access-list 1 permit 1.1.1.0 0.0.0.255(wild card bit)
    • access-list 1 deny host 2.2.2.2 = 2.2.2.2 0.0.0.0
    • access-list 1 deny 0.0.0.0 255.255.255.255 = any
  • EXTENDED ACL

    • 번호 100 ~ 199, 실무에서는 이름으로 정책명을 설정하는 경우가 대다수
    • access-list 100 permit tcp any host 3.3.3.3 eq 80 ( 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 ping을 보내는 것을 차단 )
    • access-list 100 deny ip any host 4.4.4.4
  • ACL RULE

  1. TOP-DOWN : 위에서 부터 아래로 차례차례 적용된다. 순서가 중요하다
  2. ACL에서 지정하지 않은 트래픽은 자동으로 DENY된다. 즉, 마지막 줄에 access-list x deny any / access x list deny ip any any가 생략되어 있는 것이다
  3. 작성된 ACL은 적용해줘야 활성화 된다. 적용할 때에는 interface, vty, NAT ( int ant inside source list 1 할때 'list 1'로 NAT에 적용한 것 )

1. ACL 실습 환경 구성

  • GNS3를 키고 위와 같이 라우터를 구성한다
  • 다음과 같이 구성하자. 중간에 라우터 2개는 스위치 모듈을 추가해준다
  • HQ 라우터에 포트가 하나 부족하므로, 라우터 모듈 하나 추가해준다
  • HQ 서버, PC, BR PC 순서대로 VMNET 1,2,3을 추가해준다
  • 인터넷에는 VMNET 10을 추가해준다
  • 다음과 같이 연결해준다
  • 다음과 같이 구성할 것이다
    • 시나리오

    1. 우리 회사는 HQ - BR을 WAN으로 연결
    2. 본사, 지사는 공인주소 211.183.3.2 ( ISP ) , 211.183.3.3 은 라우터 주소, 211.183.3.1 은 ISP와 우리 라우터간 연결된 스위치 주소로 예약되어있다
      • 본사 내부에 있는 서버의 주소 172.16.1.100은 외부 통신시 211.183.3.100과 1:1 정적 매핑된다
      • 본사 내부 PC들은 211.183.3.101 하나를 이용하여 인터넷을 사용한다
      • 지사 내부 PC들은 211.183.3.102 하나를 이용하여 인터넷을 사용
    3. DSW1 - DSW2 에 연결된 서버들은 VLAN 10에 할당, PC들은 VLAN 20에 할당된다
    4. HQ와 BR의 PC들은 DHCP를 통하여 IP 주소를 할당 받는다. DHCP 서버는 본사에서 통합 관리 한다 ( HQ 라우터가 DHCP 서버로 동작 )
    • 위와 같이 구성할 것이다
    • 구현 순서 : IP -> 라우팅 -> NAT -> 필터링, 보안

2. HQ IP 입력

  • 4개의 라우터를 실행하고 최적화를 해주자
    • 실제 데이터 센터에서는 전기세가 가장 많이 나오는데, 이를 가상화를 통해 그린 컴퓨팅을 해서 전기세를 줄일 수 있다
    • 하나의 서버 렉을 담당하는 스위치를 TOR SWITCH라고 하며, 이 다수의 서버 렉들이 하나의 SWITCH에 연결되있다

  • HQ의 인터넷과 연결된 포트에 IP를 설정
  • fa1/0은 10.10.10.0/30 대역이다. 이는 서브넷 마스크의 prefix-length가 30이므로, 가능한 IP는 0~3까지인데, 이중에서 실제 사용 가능한 IP는 1,2이다. 따라서 10.10.10.1/30 , 10.10.10.2/30으로 각각 설정해준다. 서브넷 마스크는 255.255.255.252 이다
  • fa0/1은 아래에 vlan 10,20을 통해 2개의 네트워크를 받아야한다. 따라서 인터페이스 fa0/1를 no sh로 활성화시켜주고, 0/1.10과 0/1.20으로 나누어서 encap dot1q를 통해 Frame에서 vlan을 처리가능하게 해줘야 한다. 하나의 인터페이스를 두 개의 서브 인터페이스로 나눠서 각각 ip를 할당해준다
  • 또한, 아래 DSW의 각 통로에 연결된 PORT는 vlan이 지나가야 하므로 TRUNK PORT로 해줘야한다
  • HQ 설정이 끝났다

3. BR IP 입력

  • BR의 fa0/0 포트에 ip를 넣어준다. LINK-3는 물리적 연결을 의미하고, LINEPROTO는 통신 상태를 의미한다
  • fa0/1 포트에 ip를 넣어준다
  • HQ에서 통신 상태를 확인한다

4. VLAN 설정

  • DSW1에 vlan 2개를 생성하고, 이름을 지정한다
  • HQ ROUTER와 DSW2에 vlan을 보낼 port 2개를 trunk port로 설정한다
  • int fa1/1 port를 access mode로 설정하고, vlan 10으로 설정한다
  • 마찬가지로, DSW2도 설정한다. DSW1에게 vlan을 보낼 port fa1/15를 trunk port로 설정하고, fa1/2 port를 access mode로 설정하고, vlan 20으로 설정한다
    • Vxlan은 Frame을 캡슐화해서 라우터에서 분리되지 않고, 온전하게 다른 네트워크로 옮기게 하여, 다른 네트워크의 동일 vlan과 통신할 수 있게 한다. 또한 Overlay Network를 만들어 터널링을 통해 사설 서버끼리 통신이 가능하게 해준다
    • vlan은 갯수가 적은 단점이 있다. 이를 Vxlan이 해결가능하다

5. Routing 설정

  • Routing : Router는 직접 연결된 네트워크에 대하여 통신이 가능하다. 떨어져있는 네트워크에 대하여 해당 정보를 라우터에 입력이 되도록 해주어야 한다

    • 정적 Routing : 관리자 또는 사용자가 원격지 네트워크 정보를 직접 입력하는 방식으로 단방향 네트워크 정보를 유지하기 위하여 불필요한 트래픽이 발생하지 않으므로 빠르다
      • 구성 방법 : ip route '목적지 ip' 'subnet mask' 'next hop ip'
      • subnet mask를 통해 목적지 ip 개수를 지정가능하다. 예를 들어, 255.255.255.255를 하면 한 ip만 지정하는 것이고, 255.255.255.0은 해당 대역의 다수의 ip들을 지정하는 것이다
    • 동적 Routing : 라우터간 라우팅 프로토콜을 이용하여 자신들이 알고 있는 네트워크 정보를 서로에게 광고한다. 동일 목적지에 대하여 여러 경로를 전달 받는다면 해당 경로중 가장 빠른 경로를 선택하고, 해당 경로를 라우팅 테이블에 인스톨한다. 라우터간 통신을 끊임없이 유지하여 최신 경로를 계속해서 유지하려고 한다
    • 동일 목적지에 대하여 서로 다른 방법으로 도달이 가능한 경우 이에 대한 우선 순위가 있다
      • connected : 0
      • static route : 1
      • routing protocol : 프로토콜 별로 다른데, 예를 들어 RIP는 120이다
  • HQ에서는 인터넷으로 나가기 위한 default route 가 필요하고, 지사 내부와의 통신을 위한 static route가 필요하다

    • default route : 라우터에서 라우팅 정보에 없는 패킷들을 기본적으로 다른 네트워크 대역으로 넘어가기 위해서 라우팅해주는 경로, 라우터에서 사용. 같은 네트워크 대역 (l2)에서 사용
    • default gateway : 라우터가 라우팅 정보를 모르는 패킷들을 기본적으로 다른 네트워크 대역으로 넘어가기 위해서 라우팅 해주기 위한 경로, 주로 end device, 스위치에서 사용. 같은 네트워크 대역 (l2)에서 사용
  • BR에서는 HQ로 가기 위한 default root 가 필요하다

  • 라우팅 경로를 각각 설정해준다

  • 통신이 잘 된다

6. 정적 NAT 설정

  • 공인 주소는 ISP 에게 비용을 지불하고, 인터넷 서비스를 제공 받을 수 있으며, 인터넷 공간에서 unique한 주소를 사용해야한다
  • 사설 주소는 별도의 제약없이 내부에서 원하는대로 사용이 가능하다
  • 공인 주소에 정적 NAT를 해주자. 공인 주소를 담을 POOL을 하나 생성하여 211.183.3.100 하나를 넣어준다
  • 공인 주소 하나와 사설 주소 하나를 Mapping했다. POOL은 쓰지 않아도 된다
  • NAT를 위해 인터넷쪽 포트인 fa0/0을 outside로 지정한다
  • 내부와 지사로 향하는 포트 3개를 inside로 지정한다. 오타는 무시한다
  • 설정했으니 centos1으로 들어간다
  • 현재, HTTPd 웹서버가 잘 실행되고 있다
  • centos1에서 인터넷이 잘 되는걸 확인할 수 있다
  • nat 기록을 확인하면 local과 global이 잘 전환되는걸 확인할 수 있다
  • putty를 실행해 ssh/key에서 두 가지를 순서에 맞춰서 위로 올려준다
  • session으로 돌아가 save 해준다
  • ip를 치고 open해준다
  • 잘 접속이 된다. 이는 정적 NAT를 했기 때문이다

7. DHCP 서버 설정

  • DHCP 서비스는 서버와 클라이언트 사이에서 작동한다
    • 클라이언트는 부팅시 DHCP 프로토콜 내에 DISCOVER 메시지를 포함하여 목적지 MAC를 FF:FF:FF:FF:FF:FF ( L2 브로드캐스트 )로 전송한다
    • 브로드캐스트는 다른 라우터로 전송이 안되므로, 같은 네트워크 대역의 라우터의 RELAY를 통해 다른 라우터로 넘어간다

  • Vmware에서는 DHCP 서버를 제공해준다. 우리는 직접 구현해야하므로 이를 꺼줘야한다. 만약 DHCP 서버가 두 개가 있다면, 먼저 브로드캐스트 메세지를 받는 쪽이 Ip를 제공해준다. 이는 매우 불안정하다

  • DHCP로부터 Ip를 제공받을 VMnet 2,3의 DHCP 서버 제공 기능을 끄고, apply / ok 해준다

  • DHCP 시나리오

    1. 본사 내부는 172.16.2.0/24 에서 주소를 할당 받는다. 지사 내부는 192.168.118.0/24 GKFEKD QKESMSEK
    2. 각 네트워크에서 1~100 까지는 내부적으로 사용이 예약되어 있어 실제로 클라이언트들이 제공받는 주소는 .101~ 을 할당받는다
    3. 임대 기간은 2 HOUR로 한다

  • 먼저, DHCP 서버에서 제공하지 않을 주소들을 제외시킨다. 제외시킬 주소의 처음과 끝을 설정하여 범위를 지정한다
  • HQ PC에 Ip를 제공할 DHCP pool을 만든다. 이때, 172.16.2.0 ~ 255까지 제공할 수 있는데, 위에서 1~100을 제외했으므로 101~255까지 제공한다
  • 제공받을 클라이언트들이 접근할 router 주소를 작성하고 ( 클라이언트 위치 기준이여야 한다 ) , 임대기간 2 hout와 dns 서버 주소를 설정해준다
  • BR의 PC에게 제공할 DHCP pool도 생성해서 설정해준다

8. DHCP Relay 설정

  • 브로드캐스트는 다른 라우터로 전송이 안되므로, 같은 네트워크 대역의 라우터의 RELAY를 통해 다른 라우터로 넘어간다
  • 요청을 대신 받을 Port에 들어가서 Relay를 설정한다. 이러면 브로드캐스트로 DHCP에게 요청을 보낼때 BR 라우터에서 대신 받아서 10.10.10.1, 즉, DHCP 서버에 대신 보내주고, 응답을 대신 받아온다

9. DHCP 테스트

  • 현재 BR의 PC를 담당하는 VMnet 3에 해당하는 장비가 없다
  • centos2를 clone해서 centos3를 만들고, network를 VMnet 3로 설정하자
  • wired setting에서 DHCP로 설정을 바꾸자
  • 확인하면 .101이 할당됬다. DHCP는 오름차순으로 순서대로 제공해주기에 .101을 할당해준다
  • 통신이 잘 작동하며, 웹 서버에도 접속할 수 있다
  • 원래 지금 VMnet 2,3에서 인터넷이 안되야 정상이다. 이는, 동적 PAT를 안해주었기 때문인데, 현재 HQ에 default-route가 설정되어있고, 이로 인해서 트래픽이 VMnet 10으로 넘어가는데, VMnet 10이 NAT로 설정되어있어서 되는 것이다

10. 동적 PAT 설정

  • HQ와 BR의 PC들과 동적 PAT할 Public Ip들을 pool을 생성하여 담는다
  • ' | in (포함하는) ip nat pool ' 을 통해 출력하면 pool이 잘 생성된 것을 확인할 수 있다
  • 이제 사설 주소를 ACL을 통해 분류하자. 이번에는 번호가 아닌 WORD를 사용하자. 이번에는 밖으로 나가기만 하면 되므로, 출발지 Ip만 확인하면 된다. 따라서 Standard Acl 방식을 사용한다

  • access-list 방식과 이름을 지정하고, 허용할 출발지 Ip를 각각 설정했다
  • 이제 access-list와 pool을 mapping 하자

  • inside ( 내부의 것 ) source ( 출발지 ) list hqadd ( 사설 ip access-list ) pool HQPC ( 공인 ip pool ) overload ( 동적 PAT )
  • centos3에서 인터넷 접속 후 ' show ip nat translations ' 를 통해 NAT가 잘 진행됬는지 확인해보자. Ip가 잘 변환된 것을 확인할 수 있다
  • ' | in ' 을 사용하여, 확인하고 싶은 Ip만 검색할 수 있다
  • HQ의 PC로 인터넷을 접속할때로 Ip가 잘 변환된다

11. ACL 적용

  • 방금전 우리는 네트워크 기반의 ACL ( NACL ) 을 적용했다

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

    1. NACL : VPC 내에 여러개의 서브넷을 생성하고, 각 서브넷에서 다른 서브넷으로의 통신시 필터링이 필요한 경우 NACL을 적용한다. 단위는 SUBNET이며, 주 목적은 SUBNET 단위의 패킷 필터링이며, OUTBOUND 적용을 주로 적용한다
    2. SECURITY-GROUP : INSTANCE 단위로 보안 사항을 적용하고자 하는 경우에 사용하며, 주로 INBOUND에 대하여 적용하며, OUTBOUND는 기본적으로 PERMIT ANY와 같이 설정되어 있다
    3. IAM : 계정관리로 크게 두 가지로 관리가 가능하다
      • ROOT 사용자 : AWS 모든 서비스에 대하여 접근이 가능하며, 계정 추가, 삭제, 계정에 대한 권한 부여등을 진행한다. 즉, linux의 super user인 root와 동일하다고 생각하면 된다
      • IAM 사용자 : 특정 AWS ROOT 계정 하에서 생성된 일반 사용자 ( DB관리, 개발, 사용자 )로 각 계정별로 접근할 수 있는 서비스에 대하여 지정할 수 있으며, 해당 사용자가 로그인 하는 방법도 선택할 수 있다. 이 로그인은 사이트에서 로그인하는 방법과 ACCESS KEY ID, ACCESS KEY를 사용하여 자신의 개발환경 또는 linux 와 같은 환경에서 자신의 로컬 환경과 AWS 환경을 연결하여 사용할 수 있다
  • NAT가 되지 않은 Ip가 인터넷을 접속하는 것을 HQ 라우터에서 막아보자

    • 회사내에 있는 IP 주소들이 NAT 되지 않은 상태에서 외부로 빠져나가려고 한다면, 이는 모두 차단해야 한다. 172.16.1.0/24 , 172.16.2.0/24 , 192.168.118.0/24 , 10.0.0.0/8 이 차단할 출발지 IP 이며, 목적지 IP는 ANY다

  • access-list를 extended 방식으로 만들고 fa0/0에서 internet으로 out할때로 적용시킨다

  • 허나, NAT 해도 인터넷이 안된다. 이는 마지막에 deny any any가 생략되었기 때문이다

  • 마지막에 permit any any를 추가해준다

  • BR 라우터에서 PING을 보내면 U가 뜬다. 이는 Destination unreachable로 방화벽에 의해서 막힌 것이다

  • fa0.1/10 아래에는 우리회사 본사에 있는 웹서버가 위치하고 있다. 이 웹서버는 원격관리를 위하여 ssh를 사용중인데 아무나 접속해서는 안된다. 오직 외부에 있는 211.183.3.1에서만 접속해야한다

    • access-list 102 permit tcp host 211.183.3.1 host 172.16.1.100 eq = 22
    • access-list 102 permit tcp host 172.16.2.100 host 172.16.1.100 eq = 22
    • access-list 102 deny tcp any host 172.16.1.100 eq = 22
    • access-list 102 permit ip any any

  • 정책을 생성해준다
  • 이 정책들은 fa0.1/10 포트로 '나가서' 172.16.1.100에 접속하는 것에 대한 정책이므로 out으로 해줘야한다
  • 172.16.2.100에서는 ssh 접속이 잘된다
  • 172.16.2.102에서는 ssh 접속은 DENY 되지만, PING을 보내는 ICMP Protocol은 Permit 된다

12. 질문 정리

  1. sw mode trunk를 하면, 스위치 내부에 설정된 VLAN들을 동적으로 모두 추가한다

  2. router int fa에서 dot1q를 사용한다고 설정하여, 라우터에서 VLAN을 판단할 수 있다. dot1q를 통해 FRAME에 TAG를 작성하였으며, 이를 통해 L2 기능도 포함된 라우터는 VLAN을 구분할 수 있다

  3. vpcs - 스위치 - 라우터 갈때 arp 과정에서 브로드 캐스트 메세지는 스위치 내부에 모두 뿌려지고, 이 스위치에 없을시 라우터에 보낸다

  4. EXTENDED에서 앞에 TCP나 ICMP 생략 가능한가? 또한 출발지 주소만 작성 가능한가?

    • 불가능 , 방식은 무조건 써야하며, 출발지 / 목적지 주소 둘 다 꼭 써야한다
  5. WILD CARD BIT는 ACL 작성시 생략 가능한가?

    • 생략 가능하며, 생략시 HOST, 즉, 자기 자신을 나타내는 것이 default로 들어간다
  6. DHCP에서 default route가 10.10.10.1이 아니라 192.168.x.2인 이유?

    • DHCP 서버가 존재하는 라우터 기준이 아닌, 이 서버를 이용해 Ip를 할당받는 장비 기준에서 생각해야한다. 이 default route는 해당 주소를 통해 Ip를 할당받는 것으로, 다른 라우터의 네트워크 대역의 장비는 해당 라우터에 대한 인터페이스 Ip를 작성해야한다. 즉, 할당 받고자 하는 장비가 도달할 Ip를 작성한다
    • 해당 Ip에 도달하면 relay가 대신 DHCP 서버에 도달하여 DATA를 전달해주고, 전달 받아 온다
  7. ACCESS-LIST 하면 안에 리스트 안에 담기는 개념인건가? 아니면 정책으로서 허용해주는 것인가?

    • 두 가지 다 맞으며, 정책에 허용되는 것들을 리스트에 담는다고 보면 된다. 즉, pool과 매핑할 때 정책에 허용되는 것들이 담긴 리스트와 매핑한다고 보면 된다
  8. ACL 작성시, standard와 extend 서로 작성법이 다른건가?

    • 아니다. 위에서 두 방식을 달리한 것은 Standard가 이름 (word) 방식으로 사용했기 때문이다
profile
멋진 엔지니어가 될 때까지

0개의 댓글