리눅스 - ssh/sshd의 보안에 대해 (2/2)

이 글은 1편에 이어 SSHD의 보안 설정을 다룬다. SSHD의 설정 파일은 /etc/ssh/sshd_config 인데 아래의 내용은 해당 파일의 설정을 다룬다. 설정을 변경한 경우 sudo systemctl restart sshd로 SSHD를 재시작해줘야 한다. (WSL의 경우 systemctl이 지원되지 않는데, 단순히 sudo service ssh --full-restart를 실행하면 된다.)

기준 환경:

Ubuntu 20.04.1 LTS (WSL2 by Windows 10 x64)
OpenSSH_8.2p1 Ubuntu-4ubuntu0.2, OpenSSL 1.1.1f 31 Mar 2020


SSH 비밀번호 시도 횟수 제한

기본 설정은 사용자의 비밀번호 입력 오류가 아무리 많아도 접속을 끊지 않는데, 이 횟수를 제한하고 횟수를 넘으면 접속을 끊을 수 (Too many authentication failures) 있다. #MaxAuthTries 6 으로 적혀있는 주석(#)을 제거하면 된다.


SSH 포트 변경

#Port 22 에서 Port 2222 등으로 변경해 포트를 변경할 수 있다. 변경된 포트로의 접속은 ssh -p2222 sb@localhost 로 포트를 옵션으로 제공해 접속할 수 있다.


프로토콜 버전 2 사용 (1 사용 금지)

Protocol 2 라고 명시하므로써 SSH 프로토콜 1을 사용할 수 없게할 수 있다. (버전 2는 2006년에 나왔으므로, 버전 1이 얼마나 예전 버전인지 가늠할 수 있다… 1->2는 보안 위주의 개선이 있었다고 한다.)

OpenSSH_8.2p1 Ubuntu-4ubuntu0.2, OpenSSL 1.1.1f 31 Mar 2020

Ubuntu 20.04에서의 SSHD (8.2p1) 에서는 이미 해당 옵션이 기본이고, 설정 파일에 존재하지 않는다.

Protocol 2가 활성화된 경우, ssh -1 sb@localhost로 접속을 시도하는 경우 SSH protocol v.1 is no longer supported가 표시되며 접속이 거부된다.


비밀번호 기반 접속 방식 미사용

비밀번호로 접속하는 방식은 브루트 포스 공격의 여지를 주게 되고, SSH Key 기반의 접속이 보편화된 요즘 필요성 또한 낮다.

PasswordAuthentication no 옵션을 주면 비밀번호로는 접속할 수 없게 된다. (이 글에서의 openssh server는 기본 설정으로 no이다.)


루트 계정으로의 접속 금지

루트 계정으로의 접속은 차단하는 것이 좋다. 애초에 루트 계정으로 접속할 수 있더라도, 접속하지 않는 것이 좋으므로 차단하도록 한다.

PermitRootLogin no 옵션을 주면 된다. (신기하게도 기본 옵션이 아니다.)

리눅스 - ssh/sshd의 보안에 대해 (2/2)

https://jsqna.com/linux-sshd-security/

Author

Seongbin Kim

Posted on

21-06-27

Updated on

21-06-27

Licensed under

댓글