[Network] 12. SSH, VPN
SSH
- SSH(Secure Shell)는 원격지 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜이다.
- 뜻 그대로 보안 셸이다. 기존의 유닉스 시스템 셸에 원격 접속하기 위해 사용하던 telnet 은 암호화가 이루어지지 않아 계정 정보가 탈취될 위험이 높으므로, 여기에 암호화 기능을 추가하여 1995년에 나온 프로토콜이다.
- SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다고 하더라도 이해할 수 없는 암호화된 문자로 보인다.
- 셸로 원격 접속을 하는 것이므로 기본적으로 CLI 상에서 작업을 하게 된다. 기본 포트는 22번이다.
-
SSH Key
- 서버에 접속할때 비밀번호 대신 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), 통합 보안장비라고 부르기도 한다.
- 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 방식으로 사용되어 기업의 본사 네트워크와 지사 네트워크를 연결하는 용도로 주로 사용된다.- 이름에서도 알 수 있듯이 IPSec 을 터널링 프로토콜로 사용하여 터널 생성과 패킷 암호화 방식을 협상한다.
- 이 모든 것은 Layer 3인 Network 계층에서 실시된다. 즉 위에서 언급한 인터넷 프로토콜의 약점, 패킷의 보안 취약성을 해결하는데 중점을 두는 것이다.
-
SSL VPN
은 주로 Client to Site 방식으로 사용되어 사용자가 어느 장소에서든 VPN 을 통해 기업의 사설 네트워크로 접속이 가능 하도록 지원하는 용도로 사용되며, 주로 웹 브라우저를 통한 접속방식이 많이 사용된다.- 이름에서도 알 수 있듯이 SSL(Secure Socket Layer)를 이용한 터널링을 실시하고 패킷 암호화 방식을 협상한다.
- SSL 을 터널링 프로토콜로 사용하는 만큼 Layer 4 인 Transport 계층r 이상에서 실시된다.
- 이 또한 인터넷 프로토콜의 약점, 패킷의 보안 취약성을 해결하는데 중점을 둔다.
댓글 남기기