본문 바로가기
서버 보안/리눅스 실습

[서버실습] SSH 서버 실습

by 어깨 :) 2023. 5. 24.
728x90

1. SSH란?

SSH는 Secure Shell의 줄임말로, 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜입니다.

(*Shell(쉘): 명령어와 프로그램을 사용할 때 쓰는 인터페이스를 말합니다. 좀 더 자세하게 표현하자면 커널과 사용자 간의 다리 역할을 하는 것으로, 사용자로부터 명령을 받아 그것을 해석하고 실행하는 역할을 합니다. 흔히 검은 바탕에 흰 글자가 나오는 명령어 입력 환경을 떠올리시면 됩니다.)

 

기존 원격 접속은 ‘텔넷(Telnet)’이라는 방식을 사용했는데, 암호화를 제공하지 않기 때문에 보안상 취약하다는 단점이 있었습니다. 실제로 WireShark 같은 패킷 분석 프로그램을 이용하면 누구나 쉽게 원격 접속 과정에서 옮겨지는 비밀번호나 파일 내용 등의 데이터를 탈취할 수 있습니다. 때문에 이를 암호화하는 SSH 기술이 등장했고, 현재 원격 접속 보안을 위한 필수적인 요소로 자리 잡고 있습니다. 그리고 클라우드 서비스에서 제공하는 서버는 기본적으로 원격 접속을 해서 접근하고 사용합니다. 그래서 NBP나 AWS와 같은 CSP(Cloud Service Provider, 클라우드 서비스를 제공하는 곳)에서 서버 생성 시 필수적으로 SSH 보안 과정을 거치는 것입니다.

 

 

2. SSH의 작동원리

이제 SSH의 명칭과 필요성에 대해서는 어느 정도 이해가 되었습니다. 그렇다면 이 SSH는 도대체 어떤 원리로 동작하길래 이런 파일을 사용자에게 주는 걸까요? SSH의 보안 방식에는 다양한 종류가 있지만 여기서는 가장 대중적으로 쓰이는 방식에 대해서 핵심적인 내용만 언급하도록 하겠습니다.

 

 SSH를 구성하는 가장 핵심적인 키워드는 ‘KEY(키, 열쇠)’입니다. 사용자(클라이언트)와 서버(호스트)는 각각의 키를 보유하고 있으며, 이 키를 이용해 연결 상대를 인증하고 안전하게 데이터를 주고받게 됩니다. 여기서 키를 생성하는 방식이 두 가지가 있는데, 그것이 SSH를 검색했을 때 가장 쉽게 볼 수 있는 ‘대칭키’와 ‘비대칭키(또는 공개 키)’ 방식입니다.

 

https://library.gabia.com/contents/infrahosting/9002/

 

가비아 라이브러리

IT 콘텐츠 허브

library.gabia.com

 

 

 

 

 

보안이 강화된 openSSH 서버를 사용합니다.

apt -y install openssh-server 명령으로 SSH 서버를 설치합니다.

 

 

 

 

 

 

 

아래에 있는 명령으로 서비스의 재가동/상시 가동/가동 확인을 합니다. SSH 서버의 서비스(데몬) 이름은 ssh입니다.

*systemctl restart ssh  → 서비스 재가동

*systemctl enable ssh → 서비스 상시 가동

*systemctl status ssh → 서비스 가동 여부 확인(Q를 누르면 종료)

 

ssh 데몬(서비스)을 가동하고 ufw allow 22/tcp 명령으로 방화벽에서 SSH의 포트인 22번을 허용합니다.

 

 

 

 

 

 

ifconfig ens32 명령을 입력하면 현재 server의 IP인 192.168.111.100이 나올 것입니다. 즉, server에 접속되어 사용 중인 것을 확인할 수 있습니다.

 

 

 

 

 

 

아래 명령어는 SSH 프로토콜을 사용하여 원격 호스트인 192.168.111.100에 telnetuser라는 사용자로 로그인하려는 명령어입니다.
SSH (Secure Shell)는 네트워크 프로토콜 중 하나로, 암호화된 통신을 통해 원격 시스템에 안전하게 접속하고 명령을 실행할 수 있게 해 줍니다. SSH는 보안상의 이유로 텍스트 기반 프로토콜인 Telnet 대신 사용되는 것이 일반적입니다.
위의 명령어는 SSH 클라이언트를 사용하여 192.168.111.100이라는 호스트로 접속하려는 것을 의미합니다. telnetuser라는 사용자 이름을 사용하여 해당 호스트에 로그인하고 명령을 실행할 수 있게 됩니다.
참고로, 위의 명령어는 실제로 실행하기 전에 해당 호스트의 IP 주소와 실제 사용자 이름을 확인하고, SSH 클라이언트가 설치되어 있는지 확인해야 합니다.

 

 

 

 

exit 명령어를 입력해서 로그아웃을 합니다. 그러면 접속이 종료됩니다.

728x90