방금 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