로그 파일에서 IP 주소 수를 어떻게 검색합니까?

로그 파일에서 IP 주소 수를 어떻게 검색합니까?

IP 주소와 로그 실패 횟수를 검색하기 위해 로그 파일을 확인하고 있습니다. 내 로그 파일은 다음과 같습니다.

Feb  2 15:20:02 tank sshd[14870]: Failed password for root from 143.100.67.173 port 13356 ssh2
Feb  2 15:20:07 tank sshd[14874]: Failed password for root from 143.100.67.173 port 30595 ssh2
Feb  2 15:20:12 tank sshd[14874]: Failed password for root from 143.100.67.173 port 30595 ssh2
Feb  2 15:20:16 tank sshd[14874]: Failed password for root from 143.100.67.173 port 30595 ssh2
Feb  2 15:20:20 tank sshd[14874]: Failed password for root from 143.100.67.173 port 30595 ssh2
Feb  2 15:20:23 tank sshd[14874]: Accepted password for root from 143.100.67.173 

이제 로그가 승인된 횟수도 확인하고 싶습니다. 무차별 대입 공격에 대한 개요를 얻는 것이 아이디어입니다.

연장하려면 어떻게 해야 해?

sed -nr '/Failed/{s/.*([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*/\1/;p}'| sort | uniq -c 

허용되는 비밀번호도 확인하시겠습니까? 그것은 마치

sed -nr '/Accepted|Failed/{s/.*([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*/\1/;p}'| sort | uniq -c 

하지만 "Accepted"와 "Failed" 사이에 "OR"을 사용하는 대신 다음과 같은 개수 결과를 얻고 싶습니다.

123.53.163.22 3 2

(열: IP 주소, 총 실패, 총 승인)

이는 다음과 관련이 있습니다.가능한 SSH 공격자의 IP 주소를 검색하는 방법은 무엇입니까?

답변1

작은 샘플을 고려하면 ...

cat horbaje
Feb  2 15:20:02 tank sshd[14870]: Failed password for root from 143.100.67.173 port 13356 ssh2
Feb  2 15:20:07 tank sshd[14874]: Failed password for root from 143.100.67.173 port 30595 ssh2
Feb  2 15:20:12 tank sshd[14874]: Failed password for root from 143.100.67.173 port 30595 ssh2
Feb  2 15:20:16 tank sshd[14874]: Failed password for root from 143.100.67.173 port 30595 ssh2
Feb  2 15:20:20 tank sshd[14874]: Failed password for root from 143.100.67.173 port 30595 ssh2
Feb  2 15:20:23 tank sshd[14874]: Accepted password for root from 143.100.67.173 

나는 이것이 당신이 원하는 것을 한다고 생각합니다.

awk '$6~/Failed/{a[$11][1]++}; $6~/Accepted/{a[$11][2]++} END{for(i in a){printf "%s\t%s\t%s\n",i,a[i][1],a[i][2]}}' horbaje
143.100.67.173  5   1

관련 정보