SSH 서버 보안 강화를 위한 기본적인 설정 방법
SSH 서버의 보안 강화에 대해 이야기해보려고 합니다.
SSH는 Secure Shell의 약자로, 네트워크 상에서 암호화된 방식으로 원격 접속을 가능하게 하는 프로토콜입니다.
이 프로토콜을 사용하면, 물리적으로 멀리 떨어진 서버에 안전하게 접속할 수 있습니다.
그러나 이 SSH도 잘못 설정하거나 보안에 신경을 쓰지 않으면 공격의 대상이 될 수 있기 때문에 미리 주요 설정들을 알고 사용해야 합니다.
1. LoginGraceTime
SSH 접속 시도 후 인증에 성공할 때까지 허용하는 시간을 줄입니다. 이를 통해 공격자가 무작위로 비밀번호를 시도하는 시간을 제한하게 됩니다. 기본 설정 값은 보통 2분이지만, 이를 1분으로 줄여줍니다.
LoginGraceTime 1m
2. PermitRootLogin
루트 로그인을 허용하지 않도록 설정합니다. 루트 계정의 비밀번호를 알아내는 것을 방지하며, 루트 권한을 이용한 공격을 차단하는데 도움이 됩니다.
PermitRootLogin no
3. MaxAuthTries, MaxSessions
인증 시도 횟수와 최대 세션 수를 제한하여 공격자의 SSH 서버에 대한 공격 범위를 제한합니다. 예를 들어, 각각 3회와 3개로 설정할 수 있습니다.
MaxAuthTries 3
MaxSessions 3
4. PubkeyAuthentication, AuthorizedKeysFile
공개키 인증을 사용하여, 암호 대신에 SSH 키를 이용한 접속을 허용합니다. 이는 더 강력한 보안을 제공하며, 암호를 통한 공격을 방지하는데 도움이 됩니다. 또한, SSH가 기본적으로 공개키를 찾는 경로를 설정해줍니다.
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
5. PasswordAuthentication, PermitEmptyPasswords
비밀번호 인증을 끄고 공개키 인증만 허용합니다. 빈 비밀번호를 허용하지 않도록 설정하여, 비밀번호를 알아내는 것을 방지하는데 도움이 됩니다.
PasswordAuthentication no
PermitEmptyPasswords no
6. KbdInteractiveAuthentication
키보드 인터랙티브 인증을 비활성화합니다. 이는 인증 절차를 간소화하고, 보안을 강화하는 데 도움이 됩니다.
KbdInteractiveAuthentication no
7. AllowAgentForwarding
SSH 에이전트 포워딩을 비활성화합니다. 이는 악의적인 서버가 사용자의 로컬 SSH 에이전트를 이용하는 것을 방지합니다.
AllowAgentForwarding no
8. X11Forwarding
X11 포워딩을 비활성화합니다. 이는 X11 세션을 가로채는 것을 방지합니다.
X11Forwarding no
9. ClientAliveInterval, ClientAliveCountMax
이 설정들은 SSH 클라이언트의 생존 확인 간격 및 최대 시도 횟수를 설정합니다. 이를 통해 비활성화된 SSH 세션을 더 빨리 종료할 수 있습니다.
ClientAliveInterval 300
ClientAliveCountMax 2
설정 변경 후에는 SSH 서비스를 재시작하여 설정이 적용되도록 해야 합니다.