2.log

SSH에 대하여 본문

HACKING/Bandit+

SSH에 대하여

2.log 2023. 3. 20. 16:44
728x90
반응형

 

SSH란?


Secure Shell*의 줄임말로, 원격 호스트에 접속하기 위해 사용되는 암호화 기반 네트워크 프로토콜

기존 원격접속 방식의 보안상 취약점(Wireshark 등 패킷분석 프로그램으로 데이터 탈취 가능) 극복

 

 

*Shell(쉘)

명령어와 프로그램을 사용할 때 쓰는 인터페이스로, 커널과 사용자 간의 다리 역할 (사용자로부터 명령을 받아 그것을 해석하고 실행)

 

 

 

작동원리


핵심은 '키(Key)', 사용자(클라이언트)와 서버(호스트)는 각자 키를 보유하고 있으며 이 키를 이용해 연결 상대를 인증하고 안전하게 데이터를 주고 받음. 이때 키는 대칭키/비대칭키(or 공개키) 방식으로 생성

 

 

작동순서


비대칭키 방식 (최초접속 시)

  • 사용자와 서버가 서로를 증명하기위해 비대칭키 방식으로 서버 또는 사용자가 Key Pair*(키 페어, 키 쌍) 생성
  • 키페어 생성 측(A)에서 상대측(B)에게 공개키 전송, 이 때 공개키는 유출되어도 상관 x
  • B는 공개키를 받아 램덤 값을 생성 (일종의 시험지)후 A에게 풀라고 줌
  • A는 자신의 개인키로 이 시험지를 풀어서 다시 B에게 전송 (공개키에서 나온 문제는 해당 키 페어의 개인키로만 풀 수 있음)
  • B는 A의 값과 자신이 처음 낸 값을 비교해 일치하면 접속허용

 

* Key Pair

공개 키와 개인 키 두 가지로 이루어진 한 쌍, 보통 공개 키는 .pub, 개인 키는 .pem 형식

 

 

 

대칭키 방식 (교환정보 암호화)

  • 사용자 또는 서버는 하나의 대칭 키를 만들어 서로 공유
  • 공유된 대칭 키를 이용해 정보 암호화하면, 받은 쪽에서 동일한 대칭 키로 암호를 풀어 정보 습득
  • 정보 교환이 완료 후 사용한 대칭 키는 폐기, 재 접속할 때마다 새로운 대칭 키를 생성하여 사용

 

 

 

생성과 접속


ssh key 존재 여부 확인

새로운 SSH 키를 생성하기 전 시스템에 이미 SSH 가 있는지 확인

$ cat ~/.ssh/id_rsa.pub

 

ssh-rsa 로 시작하는 문자열이 있다면 키쌍을 만들 필요 없이 해당 공개키를 사용하면 되지만 아래 에러메시지가 뜨면 새로 ssh 키쌍 생성

 

 

생성

$ cat ~/.ssh/id_rsa.pub

 

 

키 쌍을 저장할 파일 이름을 입력하라고 나오는데, 디폴트 값인 id_rsa를 사용하기위해 그냥 enter 로 넘어감

 

passphrase는 개인키 자체에 대한 비밀번호를 설정하는 것으로 개인키가 탈취당해도 비밀번호를 모르면 서버에 접속할 수 없기에 원하다면 등록하면 됨

 

$ ls ~ ./ssh

 

 

키가 잘 생성되었는지 확인하고 싶다면 ssh 폴더로 들어가서 확인 / (id_rsa, id_rsa.pub) 두 개의 키 쌍이 잘 생성 됨

 

 

 

적용

생성된 키페어의 공개키를 서버에 올리기위해서는 해당 서버에 접속해야 하는데, 서버에 접속하기 위해서는

1)서버 id 2) pwd 3) 외부에서 접근 가능한 서버의 ip 주소가 필요함

 

CSP에서 지정해 준 경우 그 아이디를 입력하고, 등록된 사용자가 없을 경우 root라는 아이디로 들어가면 됨

$ ssh (서버 아이디)@(ip주소)

 

 

해당 명령어를 실행해 서버 접속에 필요한 비밀번호를 입력하면 서버접속까지는 완료

서버에 접속했으니 이제 공개키를 해당 서버에 차례

 

echo (공개 키 전문/id_rsa.pub) >> ~/.ssh/authorized_keys

 

 

위 명령어를 실행하면 .ssh 디렉토리 안에서 authorized_keys라는 파일을 생성하면서 입력한 공개 키 전문을 저장하며, 서버와 클라이언트의 모든 접속 준비가 완료됨

 

 

접속 예제 


*연습서버 : bandit14 서버 (참고로 반딧 문제는 앞선 생성과정 없이 이미 키가 생성되어 있어서 절차대로 접속만 하면 됨)

 

수동으로 파일 경로 지정하는 방법

$ ssh –i (파일경로) (서버 아이디)@(ip주소)

 

 

 

 

 

- 끝 -

 

 

 

 

[출처]

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

https://library.gabia.com/contents/9008/

728x90
반응형
Comments