The goal of this level is for you to log into the game using SSH. The host to which you need to connect is bandit.labs.overthewire.org, on port 2220. The username is bandit0 and the password is bandit0. Once logged in, go to the Level 1 page to find out how to beat Level 1.
튜토리얼 단계이기 때문에, level Goal에서 PW를 제공해주고 있다. PuTTY 접속 방법과 Log in 하는 과정만 알아두면 된다.
Username : bandit0
Password : bandit0
SSH란 원격지 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜로, 말 그대로 보안 셸을 의미한다. SSH를 온전히 이해하기 위해서는, 아래 적힌 개념들에 대한 이해를 필요로 한다.
셸(Shell) : 운영 체제 상에서 다양한 운영 체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램이다. 사용자와 운영 체제의 내부 사이의 인터페이스를 감싸다는 뜻에서 'Shell'이라는 이름이 붙었다. 셸은 일반적으로 명령 줄과 그래픽 형의 두 종류로 구분된다. 명령 줄 셸은 운영 체제 상에서 명령 줄 인터페이스(CLI)를 제공하는 반면, 그래픽 셸은 그래픽 사용자 인터페이스(GUI)를 제공한다.
유닉스(Unix) : 범용 다중 사용자 방식의 대화식, 시분할처리 시스템용 운영 체제를 의미한다.
프로토콜 : 기존의 유닉스 시스템 셸에 원격 접속하기 위해 사용하던 '텔넷'은 암호화가 이루어지지 않아 계정 정보가 탈취될 위험이 높았다. 이러한 문제를 해결하기 위해 암호화 기능을 추가한 것이 프로토콜이다.
시분할 시스템 : 시분할 시스템은 컴퓨터를 대화식으로 사용하려는 시도에서 탄생하였다. CPU 스케줄링과 다중 프로그래밍을 이용해서 각 사용자들에게 컴퓨터 자원을 시간적으로 분할하여 사용할 수 있게 해준다. 오늘날 대부분의 시스템이 시분할 시스템이며, 실질적으로 여러 사용자가 하나의 컴퓨터를 공유하여 사용하고 있는 것이다.
앞서 설명했다시피, SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다고 하더라도 이해할 수 없는 암호화된 문자로 보인다. (아마 bandit level을 클리어 할 때마다 주어지는 password의 형태로 이 때문일 것으로 생각한다.) Shell로 원격 접속을 하는 것이므로, 기본적으로 CLI 상에서 작업을 하게 되며, 기본 포트는 22번이다. (PuTTY에 접속했을 때 기본으로 설정되어 있는 port도 22번이다.)
서버에 접속할 때 비밀번호 대신 key를 제출한다. 비밀번호보다 높은 수준의 보안 요건을 필요로 할 때 사용한다.
SSH 키(key)는 공개 키(Public Key)와 비공개 키(Private Key)로 이루어진다. 키를 생성하면 공개 키와 비공개 키가 생성되며, 비공개 키는 Local Machine에 위치하고, 공개 키는 Remote Machine(원격지)에 위치한다. 여기서 Local Machine은 SSH Client, Remote Machine은 SSH Server가 설치된 컴퓨터를 의미한다. SSH가 접속을 시도하면 SSH Client가 Local Machine의 비공개 키와 Remote Machine의 비공개 키를 비교해서 일치하는지 확인하는 인증 과정을 거친 후 접속이 가능하다.
GitHub에서 데이터 전송 및 소스 코드를 원격 저장소인 GitHub에 푸쉬할 때 SSH을 활용하여 파일을 전송하게 된다. 이외에 AWS 인스턴스 서버에 접속 시 SSH울 통해 접속하며, 설치 등의 명령 실행을 하는 목적으로 사용한다.
Bandit의 'Helpful Reading Material' part에서 추천하는 링크이다. 윈도우 환경에서의 설치 방법과 기초적인 명령어, 키 형성 방법이 적혀있다. 추후 SSH를 본격적으로 다룰 일이 생긴다면, 참고해면 좋을 것 같다.