SSHD 로그 분석은 OpenSSH 서버의 문제를 해결하고, 보안 이슈를 모니터링하는 데 매우 중요한 작업이다. SSHD 로그는 시스템 로그 파일 또는 SSH 데몬이 직접 생성한 파일에 저장되며, SSHD가 시작될 때부터 클라이언트가 접속하고 명령을 실행하는 전체 흐름을 추적할 수 있다. 이를 통해 연결 문제, 인증 실패, 비정상적인 접속 시도를 발견할 수 있다.

로그 파일 위치

일반적으로 SSHD 로그는 syslog를 사용하여 /var/log/auth.log 또는 /var/log/secure에 저장된다. 로그 파일의 정확한 위치는 시스템의 로그 설정에 따라 다를 수 있다. 예를 들어, SSHD 설정 파일인 sshd_config에서 SyslogFacilityLogLevel을 설정하여 로그의 자세한 정도를 조정할 수 있다.

SyslogFacility AUTH
LogLevel VERBOSE

SyslogFacility는 로그 메시지의 카테고리를 지정하며, 보통 AUTH 또는 AUTHPRIV가 사용된다. LogLevel은 로그의 상세한 수준을 결정하며, 기본적으로 INFO로 설정되어 있다. 로그의 세부 사항을 더 많이 보려면 VERBOSE로 설정할 수 있다.

로그의 주요 항목

SSHD 로그 파일에는 다음과 같은 중요한 정보가 포함된다.

SSHD 시작 및 종료 로그

SSHD가 시작되거나 종료될 때 로그에 기록되는 메시지는 보통 다음과 같다.

sshd[1234]: Server listening on 0.0.0.0 port 22.
sshd[1234]: Received signal 15; terminating.

여기서 1234는 프로세스 ID이다. 서버가 특정 포트에서 연결을 기다리고 있다는 메시지를 나타내며, 종료 시에는 Received signal과 함께 종료 이유가 기록된다.

클라이언트 접속 시도 로그

클라이언트가 SSH 서버에 접속을 시도하면 다음과 같은 로그가 생성된다.

sshd[1234]: Connection from 192.168.0.2 port 54321 on 192.168.0.1 port 22

이 로그는 클라이언트의 IP 주소와 포트 번호, 서버의 IP 주소와 포트 번호를 보여준다. 이를 통해 특정 IP에서의 비정상적인 접속 시도를 파악할 수 있다.

인증 로그

인증 과정에서 발생하는 로그는 사용자 이름과 인증 방식, 성공 또는 실패 여부를 기록한다.

sshd[1234]: Accepted publickey for user from 192.168.0.2 port 54321 ssh2: RSA SHA256:abcdef12345
sshd[1234]: Failed password for user from 192.168.0.2 port 54321 ssh2

여기서 Accepted publickey는 공개 키 인증 방식으로 접속이 성공했음을 나타낸다. 반면, Failed password는 비밀번호 인증 실패를 나타낸다. 인증 실패 로그는 보안 측면에서 매우 중요하며, 비정상적인 로그인 시도를 파악하는 데 사용된다.

세션 종료 로그

클라이언트의 SSH 세션이 종료될 때에도 로그가 기록된다. 이는 정상적인 종료뿐만 아니라 비정상적인 종료도 포함한다.

sshd[1234]: Disconnected from user@192.168.0.2 port 54321

이 로그는 user가 192.168.0.2 IP 주소에서 접속하여 세션을 종료했음을 나타낸다. 비정상적인 세션 종료는 공격의 징후일 수 있으므로 주의 깊게 모니터링해야 한다. 예를 들어, 비정상적인 대량의 세션 연결과 해제는 DoS 공격과 관련이 있을 수 있다.

비정상적인 접속 시도 로그

비정상적인 접속 시도는 보통 비밀번호 또는 공개 키 인증 실패와 관련된 로그로 나타난다. 다수의 실패한 접속 시도는 무차별 대입 공격의 증거일 수 있다.

sshd[1234]: Failed password for invalid user admin from 192.168.0.2 port 54321 ssh2

위 로그는 admin이라는 존재하지 않는 사용자가 비밀번호 인증을 시도했지만 실패했음을 나타낸다. 또한, invalid user라는 메시지가 포함되어 있어 유효하지 않은 사용자가 접속을 시도했음을 알 수 있다.

이러한 로그는 특정 IP에서 다수의 비정상적인 로그인 시도가 발생하는지를 추적하는 데 유용하다. 만약 다수의 실패한 시도가 특정 IP에서 계속된다면 해당 IP를 차단하거나 추가적인 보안 조치를 고려할 수 있다.

SSHD 로그 분석을 위한 도구

로그 파일을 수동으로 분석하는 것은 비효율적일 수 있다. 따라서 다양한 로그 분석 도구를 사용하여 SSHD 로그를 효과적으로 관리할 수 있다.

grep "Failed password" /var/log/auth.log

이 명령어는 실패한 비밀번호 인증 시도만을 로그 파일에서 추출한다.

SSHD 로그 레벨 설정

sshd_config 파일에서 LogLevel을 조정하여 로그의 상세도를 제어할 수 있다. LogLevel은 다음과 같은 옵션을 가질 수 있다:

LogLevel VERBOSE

위 설정을 통해 SSHD에서 생성되는 로그의 자세한 정보를 확인할 수 있다. 이 설정은 SSH 문제 해결에 매우 유용하며, 특히 비정상적인 접속 시도를 분석할 때 필수적이다.

로그 파일 순환

로그 파일이 장시간 동안 기록되면 파일의 크기가 매우 커질 수 있다. 이를 방지하기 위해 로그 순환(log rotation) 설정이 필요하다. 보통 Linux 시스템에서는 logrotate라는 도구를 사용하여 로그 파일의 크기가 일정 이상 커지면 자동으로 로그를 순환시키고, 오래된 로그 파일은 삭제하거나 압축하는 방식으로 관리한다.

/etc/logrotate.d/ 디렉터리에 있는 설정 파일을 확인하여 SSHD 로그 파일에 대한 순환 설정을 지정할 수 있다. 다음은 예시 설정이다.

/var/log/auth.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        /etc/init.d/rsyslog reload > /dev/null
    endscript
}

이 설정은 /var/log/auth.log 파일을 매일 순환하며, 총 7개의 백업 로그를 보관한다. 오래된 로그 파일은 압축되며, 비어 있는 로그 파일은 순환하지 않는다.

SSHD 디버깅 모드

SSHD에서 문제가 발생했을 때, 디버깅 모드를 사용하여 SSHD의 동작을 자세히 추적할 수 있다. 디버깅 모드는 특히 접속이 실패하거나 인증이 되지 않는 문제를 분석할 때 유용하다.

/usr/sbin/sshd -d

-d 옵션을 사용하여 SSHD를 디버그 모드로 실행하면, SSHD는 더 많은 정보를 출력하며 이 정보를 기반으로 문제를 추적할 수 있다. 디버그 모드에서는 다음과 같은 정보를 확인할 수 있다:

디버깅 로그는 보통 매우 상세하므로 문제 해결에 필요한 부분만 골라서 분석하는 것이 중요하다.

SSHD 로그 예제 분석

아래는 SSHD 로그의 실제 예시와 그 분석이다.

sshd[2345]: Accepted password for user1 from 192.168.1.100 port 52632 ssh2
sshd[2345]: pam_unix(sshd:session): session opened for user user1 by (uid=0)
sshd[2346]: Connection closed by 192.168.1.100 port 52632 [preauth]

이 예제는 사용자가 비밀번호 인증을 통해 성공적으로 로그인했음을 보여준다. 첫 번째 라인은 사용자가 비밀번호 인증에 성공했음을 나타내며, 두 번째 라인은 사용자 세션이 시작되었음을 알리는 pam_unix 메시지이다. 마지막 라인은 클라이언트가 세션을 종료했음을 나타낸다.

sshd[2345]: Failed password for invalid user admin from 192.168.1.100 port 52632 ssh2

이 로그는 admin이라는 잘못된 사용자로 로그인하려는 시도가 실패했음을 보여준다. 이 같은 로그가 반복되면, 무차별 대입 공격을 의심해 볼 수 있으며, fail2ban과 같은 도구를 사용하여 이 IP 주소를 차단하는 것이 좋다.

무차별 대입 공격 탐지

무차별 대입(brute force) 공격은 여러 비밀번호를 시도하여 인증을 우회하려는 시도를 말한다. SSHD 로그에서 무차별 대입 공격을 탐지하는 방법은 실패한 로그인 시도 횟수를 모니터링하는 것이다. 예를 들어, 다음과 같은 로그가 다수 나타난다면 무차별 대입 공격일 가능성이 높다.

sshd[2345]: Failed password for root from 192.168.1.200 port 65432 ssh2
sshd[2345]: Failed password for root from 192.168.1.200 port 65433 ssh2
sshd[2345]: Failed password for root from 192.168.1.200 port 65434 ssh2

이 경우, 공격이 진행 중인 IP를 차단하거나 SSH 접근 제한 설정을 통해 보호할 수 있다.