웹사이트 검색

Linux에서 실패한 SSH 로그인 시도를 모두 찾는 방법


SSH 서버에 로그인하려는 각 시도는 Linux의 rsyslog 데몬에 의해 추적되어 로그 파일에 기록됩니다. Linux에서 실패한 모든 SSH 로그인 시도를 나열하는 가장 기본적인 메커니즘은 cat 명령 또는 grep 명령을 사용하여 로그 파일을 표시하고 필터링하는 것입니다.

Linux에서 실패한 SSH 로그인 목록을 표시하려면 이 가이드에 제시된 명령 중 일부를 실행하세요. 이러한 명령이 루트 권한으로 실행되는지 확인하십시오.

실패한 모든 SSH 로그인을 나열하는 가장 간단한 명령은 아래와 같습니다.

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

cat 명령을 실행하여도 동일한 결과를 얻을 수 있습니다.

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

실패한 SSH 로그인에 대한 추가 정보를 표시하려면 아래 예와 같이 명령을 실행하십시오.

egrep "Failed|Failure" /var/log/auth.log

CentOS 또는 RHEL에서는 실패한 SSH 세션이 /var/log/secure 파일에 기록됩니다. 실패한 SSH 로그인을 식별하려면 이 로그 파일에 대해 위 명령을 실행하십시오.

egrep "Failed|Failure" /var/log/secure

CentOS 또는 RHEL에서 실패한 SSH 로그인을 표시하기 위해 위 명령을 약간 수정한 버전은 다음과 같습니다.

grep "Failed" /var/log/secure
grep "authentication failure" /var/log/secure

각 IP 주소의 실패한 시도 횟수와 함께 SSH 서버에 로그인을 시도하고 실패한 모든 IP 주소 목록을 표시하려면 아래 명령을 실행하십시오.

grep "Failed password" /var/log/auth.log | awk ‘{print $11}’ | uniq -c | sort -nr

최신 Linux 배포판에서는 journalctl 명령을 통해 Systemd 데몬이 유지 관리하는 런타임 로그 파일을 쿼리할 수 있습니다. 실패한 모든 SSH 로그인 시도를 표시하려면 아래 명령 예에 표시된 대로 grep 필터를 통해 결과를 파이프해야 합니다.

journalctl _SYSTEMD_UNIT=ssh.service | egrep "Failed|Failure"
journalctl _SYSTEMD_UNIT=sshd.service | egrep "Failed|Failure"  #In RHEL, CentOS 

CentOS 또는 RHEL에서 아래 명령 예시와 같이 SSH 데몬 장치를 sshd.service로 교체합니다.

journalctl _SYSTEMD_UNIT=sshd.service | grep "failure"
journalctl _SYSTEMD_UNIT=sshd.service | grep "Failed"

의심스러운 사용자 계정이나 유효하지 않은 사용자 계정으로 시스템에 로그인하기 위해 SSH 서버에 자주 접속하는 IP 주소를 식별한 후에는 시스템 방화벽 규칙을 업데이트하여 실패한 SSH 시도 IP 주소를 차단하거나 특수한 방법을 사용해야 합니다. 이러한 공격을 관리하는 데는 Fail2ban과 같은 소프트웨어가 필요합니다.