#1. SSH 서비스
1. SSH의 개념
1) SSH란(Secure Shell)?
- Secure Shell 의 약자로 데이터 전송에서 암호화 처리하여 보안이 강화된 원격 접속 서비스를 말한다.
- 과거에 사용되던 텔넷(Telnet)의 경우 모든 데이터가 암호화 되지 않고 전송되어 악의적인 목적을 갖는 공격자가 중간에 패킷을 가로채 분석 후 해킹을 시도할 수 있기 때문에 현재는 잘 사용되지 않는다.
2. SSH 서비스 작동 확인
1) SSH 서비스 동작 여부 확인하기
$ sudo systemctl status sshd
2) 부팅시 자동 실행 여부 확인하기
$ sudo systemctl list-unit-files | grep sshd
- grep 명령어 없이 출력하면 많은 내용이 출력되기 때문에 grep 명령어와 함께 사용한다.
3. SSH 보안 설정
- SSH는 기본 포트번호 22번을 사용하고 있기 때문에 이를 임의의 포트로 변경한다.
- 시스템의 모든 권한을 갖는 root계정에 대한 SSH 직접 접속을 차단하고 일반 사용자로만 접근이 가능하도록 해야한다.
- 보안상 일반 사용자로 접속해서 root 권한을 빌려서 사용하는게 좋다.
1) 환경설정 파일 열기
$ sudo vi /etc/ssh/sshd_config
2) 환경설정 파일 아래의 내용 추가
# 기본 접속 포트 설정
Port 9901
# root 계정의 직접 로그인 차단
PermitRootLogin no
- 대소문자를 구분하고, 이름과 값 사이에 " = " 표시는 없다.
3) SSH 서비스 재시작
$ sudo systemctl restart sshd
4) 방화벽 포트 설정
- 기존에 기본 포트로 사용하던 22번 포트 번호를 삭제하고 새로 설정한 9901 포트 번호를 허용한다.
$ sudo ufw delete allow 22
$ sudo ufw allow 9901/tcp
5) 방화벽 규칙 다시 로드하기
$ sudo ufw reload
4. 외부에서 접속 확인
- Windows, Mac 등의 호스트 운영체제에서 Ubuntu로 SSH 접속을 시도 할 때 변경된 포트번호를 명시 해야한다.
$ ssh 계정@리눅스아이피 -p포트번호
1) root로 로그인이 되지 않음을 확인
- 비밀번호를 올바르게 입력하더라도 권한이 없다는 에러 메세지가 표시되어야 한다.
2) 일반 사용자 계정으로 정상 접속 확인
5. SSH 인증키를 사용한 로그인 설정
- SSH 키는 공개 키 암호화 방식 및 인증 확인 응답 인증을 사용하는 SSH 서버에 대해 자체 식별하는 방식이다.
- 비공개 서버에 접속하기 위해서는 인증 절차를 거쳐야 하는데, 기존에 비밀번호를 네트워크를 통해 보내는 비밀번호 인증은 네트워크 상에서 ID/비밀번호가 그대로 노출되는 문제가 있고, 접속할 때 마다 입력해야 하는 번거로움이 있다.
- SSH 키는 이와 달리 공개키 암호 방식을 사용하여 서버에서 인증 받을 수 있으며, 암호를 생략하고 원격 호스트로 접속할 수 있다.
- 인증키는 서버에서 생성하거나 접속할 클라이언트 컴퓨터에서 모두 생성할 수 있다.
1) 인증키 관련 파일
- 인증키와 공개키가 일치해야지만 로그인이 이루어진다.
- 인증키 이름이 chanco라고 가정
파일이름 | 설명 |
chanco | 클라이언트 운영체제의 ~/.ssh 디렉토리에 보관되어야 할 인증키 파일 |
chanco.pub | 서버 운영체제에서 접속할 사용자 계정 홈 디렉토리의 ~/.ssh 위치에 보관되어야 할 공개키 파일 |
authorized_keys | 서버 운영체제에서 접속할 사용자 계정 홈 디렉토리의 ~/.ssh 위치에 존재해야 하며, 공개키 파일의 내용을 이 파일에 등록해야 한다. 인증키나 공개키 파일이름에 상관없이 고유한 파일명을 갖는다. |
※ 인증키 파일을 클라이언트가 보관하고, 인증키를 접속하려는 대상 (서버 운영체제, github 등)에 보관하는 원리이다.
2) 서버 운영체제에서 인증서 생성하기
- 서버 운영체제에 인증키 생성을 원하는 계정으로 로그인한 후 아래의 명령어를 수행한다.
$ ssh-keygen
경로를 따로 입력하지 않을 경우 id_rsa로 파일명이 고정된다. 다른 인증키와 구분하기 위해서 가급적 파일이름을 지정해 주는 것이 좋다.
3) 생성된 인증키 확인
- .ssh 폴더로 들어가서 전체 목록을 조회하면 인증키가 생성된 것을 확인 할 수 있다.
4) 공개키 파일의 내용을 authorized_keys에 등록
- 인증키 내용을 출력하고 authorized_keys에 redirection 처리한다.
$ cat ~/.ssh/myserver.pub >> ~/.ssh/authorized_keys
5) 생성된 인증키 파일을 클라이언트 운영체제에 내려받기
- FTP 클라이언트를 사용하여 생성된 인증키 파일을 내려받는다.
- ~/.ssh 디렉토리는 숨김 상태이기 때문에 FTP 클라이언트에 표시되지 않는다. (직접 폴더 경로를 입력해서 이동해야한다)
- 클라이언트 운영체제의 사용자 홈 디렉토리 내에 있는 .ssh 폴더에 다운로드 받도록 FTP 클라이언트를 조정한다.
6) Mac 운영체제인 경우 인증키 설정 (Windows는 생략)
- 만약 .ssh 폴더가 없다면 직접 생성한다.
$ mkdir ~/.ssh
- 폴더 생성 후(있다면 생략) 이 폴더의 접근 퍼미션을 0700으로 설정해야 한다.
$ chmod 0700 ~/.ssh
- ~/.ssh/myserver 위치로 인증키를 내려받았다면, 인증키 파일의 접근 퍼미션을 0600으로 설정해야 한다.
$ chmod 0600 ~/.ssh/myserver
7) 클라이언트 운영체제에서 접속 확인
- 아래의 명령어로 ssh 접속을 시도한다.
- 인증서가 정상적으로 식별되었다면, 비밀번호 입력 없이 로그인이 진행된다.
$ ssh 계정@리눅스아이피 -p포트번호 -i인증키경로
※ 운영체제가 Mac인 경우 이 명령어를 쉘 초기화파일에 alias로 등록하면 더욱 간편하게 사용할 수 있다.
'국비수업 > Linux' 카테고리의 다른 글
[Linux] Node.js 설치하기 / 백엔드 가동하기 (0) | 2022.07.26 |
---|---|
[Linux] MariaDB 설치하기 (0) | 2022.07.25 |
[Linux] FTP (File Transfer Protocol) (0) | 2022.07.23 |
[Linux] 네트워크와 방화벽 (0) | 2022.07.22 |
[Linux] 서비스와 리눅스 패키지 (0) | 2022.07.21 |