보안 · 3 min read · Nov 14, 2025

OpenSSH 보안 모범 사례

SSH (Secure Shell)는 원격 머신에서 텍스트 기반 셸 세션을 안전하게 시작하기 위한 암호화 네트워크 프로토콜입니다.

OpenSSH는 대부분의 리눅스 배포판에서 사용되는 표준 SSH 클라이언트 및 서버입니다. 이는 대부분의 관리자가 리눅스 및 *BSD 서버에서 작업할 때 의존하는 연결 도구입니다. OpenSSH는 모든 트래픽(비밀번호 포함)을 암호화하여 도청, 연결 탈취 및 기타 공격을 효과적으로 제거합니다. 다시 말해, “OpenSSH는 서버에 대한 연결이 안전하다는 것을 보장합니다”. SSH에 대한 자세한 설명은 위키백과 기사를 참조하십시오.

이 튜토리얼에서는 SSH 서버를 안전하게 구성하기 위한 모범 사례를 다룹니다.

OpenSSH 보안

SSH 서버 설정을 보호하기 위한 가장 중요한 여섯 가지 작업은 다음과 같습니다:

  1. 강력한 비밀번호 사용.
  2. SSH 기본 포트 변경.
  3. 항상 프로토콜 버전 2 사용.
  4. 루트 로그인 비활성화.
  5. 사용자 접근 제한.
  6. 인증을 위해 키 기반 사용.

강력한 비밀번호 사용

비밀번호는 사용자 인증을 위해 신원을 증명하거나 리소스에 대한 접근 승인을 얻기 위해 사용되는 단어 또는 문자열입니다. 서버에 접근할 수 없는 사람들에게 비밀번호를 비밀로 유지하십시오. 복잡하고 긴 비밀번호를 사용하십시오. 기억하기 쉽고 당신에게는 독특하지만 다른 사람들이 추측하기 쉬운 것은 아니어야 합니다. admin123 또는 admin 등과 같이 추측하기 쉬운 비밀번호를 사용하지 마십시오. 생일, 아내의 이름 등도 사용하지 마십시오. 좋은 비밀번호는 ‘.!;/‘와 같은 특수 문자를 포함해야 합니다(단순히 a-c 및 0-9 문자만 포함하지 않음). 비밀번호에 대문자와 소문자를 모두 사용하십시오.

SSH 기본 포트 변경

SSH 서비스의 기본 포트는 22입니다. 이를 변경하여 서버가 SSH 서비스를 실행하고 있다는 것을 덜 명확하게 만들어야 합니다. SSH 구성 파일은 /etc/sshd/ 디렉토리에 있으며, 구성 파일 /etc/ssh/sshd_config를 편집해야 합니다.

nano /etc/ssh/sshd_config

“Port” 줄을 검색하십시오:

Port 22

그리고 이를 원하는 포트 번호로 변경하십시오. 예: 1337

Port 1337

SSH 포트 기본값

서버에서 아직 사용되지 않는 포트를 선택하십시오. 현재 사용 중인 포트 목록을 얻으려면 다음 명령을 사용할 수 있습니다:

netstat -ntap

이 명령은 모든 열린 포트와 연결을 보여주는 꽤 긴 목록을 생성합니다. 원하는 포트가 사용 가능한지 확인하려면 대신 이 명령을 사용하십시오:

netstat -ntap | grep 4422

이 예제에서는 포트 4422가 비어 있는지 확인합니다. 명령이 결과를 반환하지 않으면 해당 포트는 사용 가능하며 SSH에 사용할 수 있습니다.

항상 프로토콜 2 사용

SSH에는 두 가지 프로토콜 버전이 있습니다. 구식 프로토콜 1은 안전하지 않고 새로운 프로토콜 2가 있습니다. 따라서 SSH 서버에는 항상 프로토콜 2를 사용하십시오. 이는 프로토콜 1보다 더 안전합니다. 자세한 정보는 여기에서 확인하십시오.

프로토콜 2 SSH

루트 로그인 비활성화

루트 사용자의 직접 로그인을 비활성화해야 합니다. 루트 슈퍼유저 이름에 대한 많은 무차별 대입 공격이 있기 때문입니다. 중요: 루트 계정을 비활성화하기 전에 SSH 로그인을 위해 사용할 비루트 대체 사용자로 SSH 로그인을 테스트하십시오.

PermitRootLogin no

루트 로그인 비활성화

“PermitRootLogin”을 “no”로 설정한 후에는 루트 계정으로 로그인할 수 없습니다. 올바른 루트 사용자 비밀번호를 사용하더라도 마찬가지입니다.

사용자 제한

서버에 로그인할 새 사용자를 추가해야 합니다. 서버에 로그인하기 위해 ruiko 및 mikoto라는 사용자를 생성했다고 가정하면, 다음과 같은 새 줄을 추가할 수 있습니다:

AllowUsers ruiko mikoto

사용자 제한

이 줄을 /etc/ssh/sshd_config에 추가하여 이 사용자들만 SSH 접근을 제한합니다.

키 기반 인증 사용

이 옵션을 사용하는 것을 추천합니다. 이는 설정이 매우 쉽고 비밀번호 기반 인증보다 더 안전합니다. 먼저 로컬(데스크탑) 컴퓨터에서 공개-개인 키 쌍을 생성해야 합니다. 저는 리눅스를 사용하여 생성합니다.

다음 명령을 사용하여 공개/개인 키 쌍을 생성할 수 있습니다:

ssh-keygen -t rsa -b 4096

이 명령은 ~/.ssh/ 디렉토리에 id_rsa라는 개인 키와 id_rsa.pub라는 공개 키를 생성합니다. 비밀번호를 입력하라는 메시지가 표시되면 비워 두거나 비밀번호를 입력할 수 있습니다. 키를 보호하기 위해 비밀번호를 사용하는 것이 좋습니다.

SSH 키 생성

이제 ssh-copy-id 명령을 사용하여 공개 키 id_rsa.pub를 서버에 업로드합니다.

ssh-copy-id -i ~/.ssh/id_rsa.pub user@serverip

이 명령은 자동으로 서버의 ~/.ssh/authorized_keys/ 파일에 공개 키를 작성합니다.

이제 서버로 돌아가서 ssh 파일 구성을 다시 편집하십시오.

nano /etc/ssh/sshd_config

이 줄의 주석을 제거하십시오:

AuthorizedKeysFile     %h/.ssh/authorized_keys

공개 키 추가

마지막으로 SSH 서버를 재시작하십시오:

systemctl restart sshd

이제 서버에 연결해 보십시오:

ssh -p '4422' 'user@serverIP'

결론

OpenSSH는 암호화되지 않은 텔넷 프로토콜을 대체하여 *유닉스 유사 서버에 대한 안전한 원격 액세스의 표준입니다. SSH(및 파일 전송 하위 프로토콜 SCP)는 로컬 컴퓨터에서 서버로의 연결이 암호화되고 안전하다는 것을 보장합니다. OpenSSH의 기본 설치는 이미 꽤 안전하지만, 위의 가이드를 따르면 이를 개선할 수 있습니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.