가능한 SSH 공격자의 IP 주소를 검색하는 방법은 무엇입니까?

가능한 SSH 공격자의 IP 주소를 검색하는 방법은 무엇입니까?

방금 cat /var/log/auth.log로그인했는데 기록이 많이 있는 걸 발견했어요 | grep "Failed password for".

그러나 유효한 사용자/잘못된 사용자에 대한 두 가지 가능한 레코드 유형이 있습니다. 이것은 그들에 대한 나의 시도를 복잡하게 만듭니다 | cut.

가능한 공격자의 IP 주소와 각 IP 주소에 대한 시도 횟수가 포함된 목록(텍스트 파일)을 생성하고 싶습니다. 쉽게 만드는 방법이 있나요?

또한 가능한 공격자 목록을 작성할 때 ssh모든 기록을 고려해야 합니까?/var/log/auth.log

숨겨진 숫자가 있는 "auth.log"의 예:

cat /var/log/auth.log | grep "Failed password for" | sed 's/[0-9]/1/g' | sort -u | tail

결과:

Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user ucpss from 111.11.111.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user vijay from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user webalizer from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user xapolicymgr from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user yarn from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user zookeeper from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user zt from 111.11.111.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for mysql from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for root from 111.11.111.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for root from 111.111.111.1 port 11111 ssh1

답변1

다음과 같이 사용할 수 있습니다.

grep "Failed password for" /var/log/auth.log | grep -Po "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" \
| sort | uniq -c

문자열을 찾아 IP 주소를 Failed password for추출합니다( ). -o정렬되어 uniq발생 횟수가 계산됩니다.

출력은 다음과 같습니다(예제를 입력 파일로 사용).

  1 111.111.111.1
  3 111.11.111.111
  6 111.111.11.111

출력의 마지막 항목은 6번 시도되었습니다.

답변2

이것은 비대한 솔루션일 수 있지만 다음과 같은 설치를 고려하는 것이 좋습니다.2Ban 실패

이는 이러한 종류의 로깅을 위해 설계되었으며 반복적인 위반자를 차단하기 위해 방화벽에 (임시) 규칙을 추가할 수 있다는 이점을 추가합니다. 하지만 자신의 IP를 화이트리스트에 추가하세요. 저는 몇 번 일시적으로 접속을 차단했습니다.

답변3

이것은 나에게 매우 효과적입니다. (가해자 보호를 위해 IP를 변경하였습니다)

$ awk '/Failed/ {x[$(NF-3)]++} END {for (i in x){printf "%3d %s\n", x[i], i}}' /var/log/auth.log | sort -nr
 65 10.0.0.1
 14 10.0.0.2
  4 10.0.0.3
  1 10.0.0.4

답변4

grep "Failed password for" /var/log/auth.log |
    awk -F"from" {'print $2'} |
    awk {'print $1'} |
    sort -u

관련 정보