Secure Shell(SSH)은 네트워크 상의 연결을 보호하는 프로토콜로, 리눅스 시스템에서는 주로 OpenSSH 서버가 사용됩니다. 이 OpenSSH 서버의 핵심 구성 요소 중 하나가 바로 `sshd`(SSH Daemon)입니다. `sshd`는 SSH 연결을 수신 및 관리하며, 사용자의 인증을 처리합니다. 이 글에서는 `sshd`를 통한 인증 모듈 설정 방법을 자세히 설명하겠습니다.
### SSHD 설정 파일
`sshd`는 주로 `/etc/ssh/sshd_config`라는 설정 파일을 통해 구성됩니다. 이 파일에는 다양한 인증 방법을 정의할 수 있는 여러 옵션이 포함되어 있습니다.
예를 들어, `PasswordAuthentication` 옵션은 패스워드 인증을 활성화하거나 비활성화합니다. 다음은 기본적인 설정 예제입니다.
```bash
# /etc/ssh/sshd_config
# 패스워드 인증을 비활성화합니다.
PasswordAuthentication no
# 공개 키 인증을 활성화합니다.
PubkeyAuthentication yes
```
이 설정을 통해 패스워드에 의한 인증을 막고, 공개 키에 의한 인증만 허용할 수 있습니다.
### PAM(PAM: Pluggable Authentication Modules)
리눅스 시스템에서 `sshd`는 PAM을 사용하여 보다 다양한 인증 방법을 지원할 수 있습니다. PAM은 플러그인 방식으로 인증을 처리하는 모듈을 쉽게 추가 및 관리할 수 있도록 해줍니다. `sshd`는 PAM 모듈을 통해 생체 인식, 2차 인증(2FA) 등을 구현할 수 있습니다.
다음은 PAM 설정 파일 예제로 `/etc/pam.d/sshd` 파일의 일부입니다.
```plaintext
# /etc/pam.d/sshd
# 표준 인증을 위한 모듈
auth required pam_unix.so
# OTP 인증 모듈 예제 (예: Google Authenticator)
auth required pam_google_authenticator.so
# 계정 관리 모듈
account required pam_nologin.so
```
위의 예제에서는 `pam_unix.so`를 사용하여 기본 인증을 수행하고, `pam_google_authenticator.so`를 사용하여 OTP 기반 2차 인증을 추가할 수 있습니다.
### 공개 키 기반 인증 설정
공개 키 기반 인증은 SSH 접속 시 암호를 입력할 필요 없이, 사용자가 소유한 개인 키와 서버의 공개 키를 통해 이루어집니다. 사용자 홈 디렉토리의 `~/.ssh/authorized_keys` 파일에 클라이언트 공개 키를 추가하여 설정할 수 있습니다.
예시로, 공개 키를 설정하는 방법을 보이면 다음과 같습니다.
```bash
# 사용자의 홈 디렉토리로 이동
cd ~/.ssh
# authorized_keys 파일에 공개 키 추가
echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQE..." >> authorized_keys
# 파일 권한 설정
chmod 600 authorized_keys
chown user:user authorized_keys
```
이러한 설정을 통해서, `sshd`는 사용자의 공개 키를 사용하여 인증을 수행할 수 있습니다.
### 결론
이 글에서는 `sshd`를 통해 리눅스 시스템에서 다양한 인증 방법을 설정하는 방법을 소개했습니다. 주요 설정 파일인 `/etc/ssh/sshd_config`와 PAM을 활용하여 다층적인 보안을 제공할 수 있으며, 공개 키 기반 인증을 통하여 보다 안전하게 서버에 접근할 수 있습니다. 이러한 설정들을 통해 리눅스 시스템의 보안을 강화하고, 사용자 인증을 보다 세밀하게 관리할 수 있습니다.