OpenSSH에서는 기본적으로 비밀번호 기반 인증을 사용할 수 있다. 하지만 보안 강화를 위해 비밀번호 기반 인증을 비활성화하고 공개키 인증 또는 다른 인증 방법을 사용하는 것이 권장된다. 이 섹션에서는 OpenSSH에서 비밀번호 기반 인증을 비활성화하는 방법을 설명하겠다.
SSH 서버 설정 파일 수정
비밀번호 기반 인증을 비활성화하려면 SSH 서버 설정 파일인 sshd_config
파일을 수정해야 한다. 이 파일은 보통 /etc/ssh/sshd_config
경로에 위치해 있다.
설정 파일을 열고 다음과 같은 옵션을 확인하거나 추가한다.
PasswordAuthentication no
이 설정은 SSH 서버에서 비밀번호 인증을 비활성화하는 역할을 한다.
SSH 설정 파일의 중요 섹션
sshd_config
파일에는 비밀번호 기반 인증과 관련된 몇 가지 중요한 설정들이 포함되어 있다. 주요 설정 옵션들을 설명하겠다.
1. PasswordAuthentication
PasswordAuthentication
옵션은 SSH 서버가 비밀번호를 통한 인증을 허용할지 여부를 설정하는 부분이다. 이 값이 yes
로 설정되어 있으면 비밀번호 인증이 허용되며, no
로 설정되어 있으면 비밀번호 인증이 비활성화된다.
PasswordAuthentication no
2. ChallengeResponseAuthentication
ChallengeResponseAuthentication
옵션은 인증을 위한 추가적인 도전-응답 방식의 인증을 설정하는 옵션이다. 비밀번호 기반 인증을 완전히 비활성화하려면 이 옵션도 no
로 설정해야 한다.
ChallengeResponseAuthentication no
3. UsePAM
UsePAM
옵션은 Linux의 Pluggable Authentication Modules (PAM)을 사용할지 여부를 결정한다. PAM을 통해 비밀번호 인증을 설정할 수 있으므로, 비밀번호 인증을 완전히 비활성화하려면 UsePAM
을 no
로 설정하거나, PAM 설정 파일에서 비밀번호 인증을 비활성화해야 한다.
UsePAM no
비밀번호 인증 비활성화의 보안적 이점
비밀번호 기반 인증을 비활성화하면 다음과 같은 보안적 이점을 얻을 수 있다.
- 비밀번호 크래킹 공격 방지: 비밀번호는 무작위 대입 공격(Brute Force Attack)이나 사전 공격(Dictionary Attack)에 취약할 수 있다. 비밀번호 인증을 비활성화하면 이러한 공격을 원천적으로 방지할 수 있다.
- 공개키 인증의 장점: 비밀번호 대신 공개키 기반 인증을 사용하면, 비밀키를 안전하게 관리하는 한 더 높은 보안을 유지할 수 있다. 공개키는 복잡한 암호화 알고리즘에 기반하여 만들어지며, 비밀번호처럼 쉽게 추측할 수 없다.
SSH 에이전트와의 연동
비밀번호 기반 인증을 비활성화한 후, 사용자들이 공개키 인증을 사용할 때, ssh-agent
를 사용하여 여러 서버에 접속할 때마다 비밀키의 암호를 입력하지 않도록 설정할 수 있다. ssh-agent
는 사용자 비밀키를 메모리에 저장하여, SSH 세션 간에 암호 입력을 생략할 수 있게 해준다.
ssh-agent 시작
사용자는 자신의 세션에서 ssh-agent
를 시작할 수 있다. 보통 로그인할 때 자동으로 시작되지만, 수동으로도 실행할 수 있다.
eval $(ssh-agent)
비밀키 추가
ssh-agent
에 비밀키를 추가하려면 ssh-add
명령을 사용한다.
ssh-add ~/.ssh/id_rsa
여기서 id_rsa
는 사용자가 생성한 비밀키 파일이다. 이 명령을 실행하면 비밀키의 암호를 입력해야 하며, 이후부터는 해당 세션 동안 암호를 다시 묻지 않고 비밀키를 사용할 수 있다.
공개키 인증 활성화
비밀번호 기반 인증을 비활성화한 후, 공개키 인증을 제대로 설정하려면 서버에서 사용자의 공개키를 받아들이도록 설정해야 한다.
공개키 생성
공개키를 생성하려면 ssh-keygen
명령을 사용한다.
ssh-keygen -t rsa -b 4096
이 명령어는 4096비트 RSA 키를 생성한다. 생성된 공개키와 비밀키는 각각 ~/.ssh/id_rsa.pub
및 ~/.ssh/id_rsa
파일에 저장된다.
공개키 배포
생성된 공개키를 서버에 배포하기 위해 ssh-copy-id
명령을 사용할 수 있다.
ssh-copy-id user@hostname
이 명령은 사용자의 공개키를 서버의 ~/.ssh/authorized_keys
파일에 추가하여 공개키 인증을 설정한다.
비밀번호 기반 인증 비활성화 후 발생할 수 있는 문제
비밀번호 기반 인증을 비활성화한 후에는 일부 사용자나 자동화된 시스템에서 연결할 수 없는 문제가 발생할 수 있다. 특히, 공개키를 사전에 설정하지 않았거나, SSH 설정 파일이 올바르게 구성되지 않은 경우 문제가 발생할 수 있다.
1. 공개키가 없는 사용자의 접근 차단
비밀번호 인증을 비활성화하면, 공개키를 미리 설정하지 않은 사용자는 SSH 서버에 접속할 수 없다. 이는 예상치 못한 차단을 유발할 수 있으므로, 비밀번호 기반 인증을 비활성화하기 전에 모든 사용자가 공개키 인증을 사용할 수 있도록 미리 준비하는 것이 중요하다.
2. 인증 실패 시 로그 확인
비밀번호 인증을 비활성화한 후 공개키 인증이 실패하는 경우, 서버의 로그 파일을 확인하여 문제를 파악할 수 있다. 로그는 보통 /var/log/auth.log
나 /var/log/secure
파일에 기록된다.
로그 파일을 통해 인증 실패 이유를 분석할 수 있으며, 다음과 같은 문제가 있을 수 있다.
- 공개키가 잘못된 경로에 있거나 권한 설정이 잘못됨
~/.ssh/authorized_keys
파일의 권한이 너무 느슨하거나 잘못된 파일 소유자 설정- 서버 설정에서 공개키 인증이 비활성화됨
다음은 sshd_config
파일에서 공개키 인증이 활성화되어 있는지 확인하는 설정이다.
PubkeyAuthentication yes
3. 권한 문제 해결
공개키 인증 문제의 주요 원인 중 하나는 권한 문제이다. ~/.ssh
디렉토리와 그 안의 파일들이 적절한 권한을 가져야 한다. 다음 명령을 사용하여 권한을 설정할 수 있다.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
이 설정은 ~/.ssh
디렉토리의 권한을 소유자만 접근할 수 있도록 설정하고, authorized_keys
파일을 소유자만 읽고 쓸 수 있도록 설정한다.
비밀번호 기반 인증 비활성화 후 유지보수
비밀번호 기반 인증을 비활성화한 후, 서버에 대한 유지보수 작업 시 주의해야 할 몇 가지 사항이 있다.
1. 비상 접속 방법 마련
비밀번호 인증이 비활성화된 상태에서 공개키 인증에 문제가 생길 경우를 대비하여, 서버에 대한 비상 접속 방법을 마련하는 것이 좋다. 예를 들어, 콘솔을 통한 직접 접속이나 VPN을 통해 서버에 접근할 수 있는 방법을 설정해 두면, 네트워크 문제나 인증 실패 시에도 서버에 접근할 수 있다.
2. 인증 방법 주기적 점검
비밀번호 기반 인증을 비활성화한 이후에도, 주기적으로 인증 방법이 제대로 동작하는지 점검해야 한다. 새로운 서버나 사용자를 추가할 때는 공개키를 정확하게 배포했는지 확인해야 하며, SSH 설정 파일에 변경 사항이 있을 경우에도 테스트를 통해 문제가 없는지 확인하는 것이 중요하다.