일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- prototypepattern 예시 example
- 디자인패턴
- 구조적 설계
- nc reverse shell
- bandit21
- 모듈구조도
- 매크로를 바라보는 시각
- UseCase
- 소프트웨어공학 디자인패턴
- base64
- 리버스쉘
- Bandit
- sofrware architeture
- 팬인과 팬아웃
- ui 디자인 기본원칙
- 생성패턴 행위패턴 구조패턴
- fan-in fan-out
- 객체 상속 속성 인스턴스 메소드 오퍼레이션
- status diagram
- 암표거래
- cron
- gof design pattern
- strucuture charat
- usecase description
- telnet
- 상태다이어그램
- madia designer ui design
- 클래스 관계
- factory metohd pattern
- ssh
- Today
- Total
2.log
SSH에 대하여 본문
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주소)
- 끝 -
[출처]
'HACKING > Bandit+' 카테고리의 다른 글
리눅스 find 정리 (0) | 2023.03.21 |
---|---|
리눅스 Shell 특수문자(meta-character) 정리 (0) | 2023.03.20 |
ASCII 와 extended ASCII (0) | 2023.03.20 |
리눅스 기초 명령어 및 옵션 정리 (0) | 2023.03.20 |
리다이렉션과 파이프에 대하여 (0) | 2023.03.20 |