OpenSSH 데몬 활성화 및 상태 확인
OpenSSH 설치가 완료되면, 먼저 SSH 데몬이 실행 중인지 확인하고, 활성화할 필요가 있다. OpenSSH 데몬의 상태는 systemctl
명령을 통해 확인할 수 있다.
sudo systemctl status sshd
이 명령어는 SSH 데몬의 상태를 보여준다. 만약 데몬이 실행 중이지 않다면, 다음 명령어로 시작할 수 있다:
sudo systemctl start sshd
그리고 SSH 데몬을 부팅 시 자동으로 시작되도록 설정하려면 다음 명령어를 사용한다:
sudo systemctl enable sshd
설정 파일 구성
SSH 서비스는 두 개의 주요 설정 파일에 의해 관리된다: ssh_config
와 sshd_config
. 각각의 역할은 다음과 같다:
ssh_config
: 클라이언트 설정 파일sshd_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 설정을 변경할 때, 특히 중요한 항목들을 수정할 때는 실수로 접속이 차단될 수 있는 위험을 대비해야 한다. 예를 들어, 잘못된 설정으로 인해 서버에 접속할 수 없게 될 경우를 대비하여 기존 세션을 종료하지 않고 새 터미널에서 접속을 시도하거나, 별도의 백업 접속 수단을 마련해 두는 것이 좋다.