OpenSSH 데몬 활성화 및 상태 확인

OpenSSH 설치가 완료되면, 먼저 SSH 데몬이 실행 중인지 확인하고, 활성화할 필요가 있다. OpenSSH 데몬의 상태는 systemctl 명령을 통해 확인할 수 있다.

sudo systemctl status sshd

이 명령어는 SSH 데몬의 상태를 보여준다. 만약 데몬이 실행 중이지 않다면, 다음 명령어로 시작할 수 있다:

sudo systemctl start sshd

그리고 SSH 데몬을 부팅 시 자동으로 시작되도록 설정하려면 다음 명령어를 사용한다:

sudo systemctl enable sshd

설정 파일 구성

SSH 서비스는 두 개의 주요 설정 파일에 의해 관리된다: ssh_configsshd_config. 각각의 역할은 다음과 같다:

일반적으로 SSH 서버를 설정할 때는 sshd_config 파일을 편집하여 원하는 설정을 적용한다. 이 파일은 /etc/ssh/sshd_config 경로에 위치해 있다. 파일을 수정하기 전에 백업을 생성하는 것이 좋다:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

기본 포트 설정 변경

기본적으로 SSH는 22번 포트를 사용하지만, 보안을 강화하기 위해 다른 포트로 변경하는 것이 권장된다. 다음과 같이 sshd_config 파일에서 포트를 변경할 수 있다:

sudo nano /etc/ssh/sshd_config

파일에서 다음 줄을 찾아 수정한다:

#Port 22

이를 예를 들어 2222번 포트로 변경하려면, 주석을 제거하고 22를 2222로 변경한다:

Port 2222

파일을 저장한 후 SSH 데몬을 다시 시작해야 변경 사항이 적용된다:

sudo systemctl restart sshd

루트 로그인 비활성화

보안을 더욱 강화하기 위해, 루트 계정으로 SSH 로그인을 비활성화하는 것이 좋다. sshd_config 파일에서 다음 줄을 찾아 수정한다:

#PermitRootLogin yes

이 줄을 주석 해제하고 no로 변경한다:

PermitRootLogin no

이 설정은 루트 계정으로의 직접적인 로그인 시도를 막아, 보안 침해 가능성을 줄여준다. 변경 후 SSH 데몬을 다시 시작하여 설정을 적용한다:

sudo systemctl restart sshd

기본 설정 최적화

SSH 서비스를 사용할 때 기본적으로 적용할 수 있는 몇 가지 보안 및 성능 최적화 방법이 있다. 첫째로, 연결을 유지하기 위한 KeepAlive 설정을 조정할 수 있다. 이 설정은 클라이언트가 일정 시간 동안 활동이 없을 때 연결을 끊지 않고 유지하는 데 사용된다.

ClientAliveInterval 60
ClientAliveCountMax 3

ClientAliveInterval은 서버가 클라이언트로 "생존 메시지"를 보내는 시간 간격(초)이며, ClientAliveCountMax는 클라이언트의 응답이 없을 때까지 서버가 허용하는 생존 메시지의 최대 수를 의미한다. 이 설정으로 인해, 서버는 클라이언트가 응답하지 않는 경우 180초 후 연결을 종료한다.

방화벽 설정

OpenSSH 서비스가 실행 중이라도 방화벽에서 SSH 포트를 허용하지 않으면 외부에서 접속할 수 없다. ufw를 사용하는 시스템에서는 다음 명령으로 SSH 포트를 허용할 수 있다:

sudo ufw allow 22/tcp

만약 SSH 포트를 2222로 변경했다면, 다음과 같이 명령을 수정해야 한다:

sudo ufw allow 2222/tcp

방화벽 설정을 확인하고 적용한다:

sudo ufw status
sudo ufw enable

이와 같은 방식으로 기본적인 방화벽 설정을 적용하여 OpenSSH가 정상적으로 외부에서 접속 가능하도록 만든다.

공개키 기반 인증 설정

보안성을 높이기 위해 비밀번호 인증 대신 공개키 기반 인증을 설정하는 것이 권장된다. 이를 위해, 먼저 클라이언트에서 SSH 키를 생성해야 한다. 키를 생성하는 방법은 다음과 같다:

ssh-keygen -t rsa -b 4096

이 명령어는 RSA 알고리즘을 사용하여 4096비트 길이의 SSH 키 쌍을 생성한다. 키를 저장할 위치와 비밀번호를 설정할 수 있으며, 비밀번호는 선택사항이다.

키가 생성되면, 공개키를 서버로 전송하여 인증에 사용할 수 있다. 일반적으로 다음 명령을 사용한다:

ssh-copy-id user@server_ip

이 명령은 클라이언트의 공개키를 서버의 ~/.ssh/authorized_keys 파일에 추가한다. 이후부터는 비밀번호 대신 키를 사용해 로그인할 수 있다.

비밀번호 인증 비활성화

공개키 기반 인증을 설정한 후에는 보안을 위해 비밀번호 인증을 비활성화하는 것이 좋다. sshd_config 파일에서 다음 줄을 찾아 수정한다:

#PasswordAuthentication yes

이 줄의 주석을 해제하고 no로 변경한다:

PasswordAuthentication no

이렇게 하면 서버는 더 이상 비밀번호로 로그인을 허용하지 않고, 공개키를 사용한 인증만 허용하게 된다. 설정을 적용하기 위해 SSH 데몬을 다시 시작해야 한다:

sudo systemctl restart sshd

사용자별 접근 제어 설정

특정 사용자만 SSH 접속을 허용하거나 차단할 수 있다. 이를 위해 sshd_config 파일에서 AllowUsers 또는 DenyUsers 지시자를 사용할 수 있다. 예를 들어, 특정 사용자만 SSH 접속을 허용하려면 다음과 같이 설정한다:

AllowUsers user1 user2

반대로, 특정 사용자를 차단하려면 DenyUsers 지시자를 사용한다:

DenyUsers user3

이러한 방식으로 SSH 접근을 보다 세밀하게 제어할 수 있다.

SSH 데몬 테스트

모든 설정이 완료되면 SSH 데몬이 정상적으로 작동하는지 확인하는 것이 중요하다. 이를 위해 새로운 터미널을 열고 SSH를 통해 서버에 접속해 보십시오:

ssh user@server_ip -p 2222

위 명령에서 -p 옵션은 이전에 포트를 변경한 경우에만 필요하다. 만약 모든 설정이 올바르게 적용되었다면, 설정한 대로 인증이 진행되고 접속이 완료된다.

설정이 실패할 경우, SSH 데몬 로그 파일을 확인하여 문제를 파악할 수 있다:

sudo journalctl -u sshd

로그 파일을 분석하여 설정 오류를 수정한 후, SSH 데몬을 다시 시작하고 접속을 시도하라.

SSH 설정 변경 후 재시작

SSH 설정을 변경한 후에는 반드시 SSH 데몬을 다시 시작해야 변경 사항이 적용된다. 이를 위해 다음 명령을 사용한다:

sudo systemctl restart sshd

데몬이 성공적으로 재시작되면 변경된 설정이 적용된다. 만약 SSH 데몬이 다시 시작되지 않거나 오류가 발생하면, /etc/ssh/sshd_config 파일의 설정을 다시 확인해야 한다.

접속 실패 대비

SSH 설정을 변경할 때, 특히 중요한 항목들을 수정할 때는 실수로 접속이 차단될 수 있는 위험을 대비해야 한다. 예를 들어, 잘못된 설정으로 인해 서버에 접속할 수 없게 될 경우를 대비하여 기존 세션을 종료하지 않고 새 터미널에서 접속을 시도하거나, 별도의 백업 접속 수단을 마련해 두는 것이 좋다.