[Network] 12. SSH, VPN


SSH

  • SSH(Secure Shell)는 원격지 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜이다.
  • 뜻 그대로 보안 셸이다. 기존의 유닉스 시스템 셸에 원격 접속하기 위해 사용하던 telnet 은 암호화가 이루어지지 않아 계정 정보가 탈취될 위험이 높으므로, 여기에 암호화 기능을 추가하여 1995년에 나온 프로토콜이다.
  • SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다고 하더라도 이해할 수 없는 암호화된 문자로 보인다.
  • 셸로 원격 접속을 하는 것이므로 기본적으로 CLI 상에서 작업을 하게 된다. 기본 포트는 22번이다.
  • SSH Key

    Untitled

    • 서버에 접속할때 비밀번호 대신 key를 제출하는 방식이다. 비밀번호보다 높은 수준의 보안요건을 필요로 할 때 사용된다.
    • SSH 키(Key)는 공개키(public key)와 비공개키(private key)로 이루어진다.
    • 이 두 개의 관계를 이해하는 것이 SSH Key를 이해하는데 핵심이다.
    • 키를 생성하면 공개 키와 비공개 키가 만들어진다. 이 중에 비공개 키는 로컬 머신에 위치해야 하고, 공개 키는 리모트 머신에 위치해야 한다.
    • 로컬 머신은 SSH Client, 원격 머신은 SSH Server 가 설치된 컴퓨터를 의미한다.
    • SSH 접속을 시도하면 SSH Client 가 로컬 머신의 비공개 키와 원격 머신의 공개 키를 비교해서 둘이 일치하는지를 확인한다.
  • SSH 기능
    • 보안 접속을 통한 rsh, rcp, rlogin, rexec, telnet, ftp 등을 제공한다.
    • IP spoofing(IP 스푸핑, 아이피 위/변조 기법 중 하나)을 방지하기 위한 기능을 제공한다.
    • X11 패킷 포워딩 및 일반적인 TCP/IP 패킷 포워딩을 제공한다.
  • macOS 는 유닉스 계열의 운영체제로 OpenSSH를 기본으로 포함하고 있기 대문에 ssh-keygen을 사용해 간단히 key 를 생성할 수 있다.
      $ ssh-keygen -t rsa
      # -t옵션으로 어떤 타입의 암호화 방식을 사용할 것인지 지정할 수 있다.(default가 rsa)
    
  • 이후 경로와 비밀번호 지정한다.
      $ ls -al /경로/
    
      total 16
      drwx------   4 user  staff   128  6  7 15:07 .
      drwxr-xr-x+ 31 user  staff   992  6  7 15:05 ..
      -rw-------   1 user  staff  1876  6  7 15:07 id_rsa
      -rw-r--r--   1 user  staff   403  6  7 15:07 id_rsa.pub
    
  • 위에서 id_rsa가 개인 키, id_rsa.pub가 공개 키이다. 권한을 보면 개인 키는 사용자만이 읽고 쓸 수 있고(600), 공개 키는 다른 사용자도 읽을 수 있는 권한(644)을 가지고있다.
  • 접속하고자 하는 컴퓨터에 공개 키을 등록해 놓으면, 이후 SSH 로 접근할때 개인 키와 비교하여 인증한다.
  • 이제 원격 컴퓨터에서는 전달받은 id_rsa.pub를 authorized_keys파일에 등록한다.
  • 만약 .ssh폴더가 없다면 새로 만들고 chmod 700로 설정해준다.
  • 중요한 정보가 저장되어있기 때문에 소유자 외에 접근이 불가능하게 해줘야한다.
      # 원격컴퓨터에 authorized_keys에 리다이렉션(추가) 해준다.
      $ cat $HOME/id_rsa.pub >> $HOME/.ssh/authorized_keys
    

VPN (Virtual Private Network)

  • 가상 사설망 또는 VPN 이란 공중 네트워크를 통해 한 회사나 몇몇 단체가 내용을 바깥에 드러내지 않고 통신할 목적으로 쓰이는 사설 통신망이다.
  • 공인망을 통한 사설망 연결과 데이터 암호화를 모두 해결하기 위해 탄생한 기술이다.
  • 현업에서도 VPN 을 가능하게 하는 장비를 별도의 이름 없이 VPN 장비라고 부른다.
  • 방화벽 기능을 겸비한 VPN 장비가 많이 사용되어 UTM(Unified Threat Management), 통합 보안장비라고 부르기도 한다.

    Untitled

  • VPN 은 공인 인터넷을 사이에 둔 사설망과 사설망이 공인 IP 로의 NAT 과 같은 제약 없이 사설 IP 를 이용해 통신(Routing)할 수 있도록 지원하며 데이터의 암호화를 제공한다.
  • 이를 실현하기 위해 VPN 은 공인 인터넷에서 IP Packet(이하 IP 패킷)을 캡슐화(Encapsulation)함과 동시에 데이터의 암호화/인증방식을 협상하게 된다.
  • 이 협상 과정을 거친 후에는 캡슐화된 패킷이 오고 가기 때문에 아무리 공인 인터넷상이라 하더라도 외부인이 이 패킷을 쉽게 탈취할 수 없게 된다. 이 기술을 Tunneling 이라 하며 보통 ‘VPN 터널이 뚫렸다’라고 표현한다.
  • 여기에 사용된 프로토콜을 Tunneling Protocol 이라 부른다. 패킷이 암호화되어 인터넷 상에서 이동하는 특징 덕분에, 외부에서 보기엔 공인 인터넷 상에 가상의 터널이 생성되어 데이터를 주고받는 것처럼 보여 붙여진 이름이다.
  • 공인 인터넷을 통로로 사용하기 때문에 VPN 을 사용하면 전용회선보다는 더 폭넓은 대역을 저렴한 비용으로 사용할 수 있다.
  • 전용 회선은 인터넷 서비스 공급자(ISP)와 계약을 맺고 별도의 장비를 이용해 설치해야 하는 등 복잡한 과정을 거쳐야 하지만 VPN 은 가정용 인터넷 모뎀으로도 VPN 을 연결해 설치할 수 있기 때문에 편리하다는 장점도 있다.
  • 그러나 아무리 패킷이 암호화된다 하더라도 결국 외부 인터넷에 노출되기 때문에 전용 회선에 비해 보안에 취약할 수밖에 없다. 전용 회선은 말 그대로 사용자의 ‘전용’ 회선이기에 외부에서 접근할 수 없지만, 대역폭을 보장하는 전용 회선과 달리 공인 인터넷을 사용하는 VPN 은 인터넷 망에 문제가 생기면 터널이 끊어지거나 패킷이 제대로 전달되지 않을 수 있다.
  • VPN 을 이해할 때 VPN 의 정의와 특징을 이해하는 것은 당연한 일이지만, 구현 방법에 따른 VPN 의 변화를 이해하는 것이 중요하다. VPN 을 어떻게 구현하느냐에 따라서 모양새가 크게 달라지기 때문이다.

VPN 의 분류와 구현

  • VPN 은 접속 방식, 터널링 프로토콜, 통신 계층, 운용 주체 등 기준에 따라 아주 다양한 종류로 나뉜다.
  • 접속 방식으로 분류하면 Site to Site(LAN to LAN)과 Client to Site 방식의 VPN 으로 나눌 수 있다.
  • 터널링 프로토콜로 분류하면 PPTP/L2TP, IPSec, SSL 기반의 VPN 으로 분류할 수 있다.
  • 통신 계층으로 분류하면 L2 / L3 / L4 기반의 VPN으로 나눌 수 있다.
  • 운용 주체에 따라서 Core / CPE 기반의 VPN 으로 나눌 수 있다.
  • 어떤 관점에서 보느냐에 따라 VPN 이 차이를 가지는 것일 뿐 분류 방법에 따라 완전히 다른 VPN 이 되는 것은 아니다.
  • 오히려 위 분류에서 한 개씩을 따서 조합하면 특정한 기능을 수행하는 VPN 의 정의가 될 수 있다. 예를 들어 코로나 시국에 집에서 회사의 업무를 볼 수 있도록 도와주는 VPN 인 SSL VPN 의 경우, 접속 방식으로는 Client to Site 에 해당하며 터널링 프로토콜로 분류하면 SSL 기반의 VPN, 통신 계층으로 분류하면 L4 / L7 기반의 VPN 으로 나눌 수 있다.
  • 이렇듯 VPN 은 분류 방법을 어떻게 조합하느냐에 따라 성격이 조금씩 달라진다.
  • IPsec VPN은 주로 Site to Site 방식으로 사용되어 기업의 본사 네트워크와 지사 네트워크를 연결하는 용도로 주로 사용된다.

    Untitled

    • 이름에서도 알 수 있듯이 IPSec 을 터널링 프로토콜로 사용하여 터널 생성과 패킷 암호화 방식을 협상한다.
    • 이 모든 것은 Layer 3인 Network 계층에서 실시된다. 즉 위에서 언급한 인터넷 프로토콜의 약점, 패킷의 보안 취약성을 해결하는데 중점을 두는 것이다.
  • SSL VPN은 주로 Client to Site 방식으로 사용되어 사용자가 어느 장소에서든 VPN 을 통해 기업의 사설 네트워크로 접속이 가능 하도록 지원하는 용도로 사용되며, 주로 웹 브라우저를 통한 접속방식이 많이 사용된다.

    Untitled

    • 이름에서도 알 수 있듯이 SSL(Secure Socket Layer)를 이용한 터널링을 실시하고 패킷 암호화 방식을 협상한다.
    • SSL 을 터널링 프로토콜로 사용하는 만큼 Layer 4 인 Transport 계층r 이상에서 실시된다.
    • 이 또한 인터넷 프로토콜의 약점, 패킷의 보안 취약성을 해결하는데 중점을 둔다.
맨 위로 이동 ↑

댓글 남기기