CentOS7 튜토리얼에서 SSH를 통해 연결을 시도하는 사용자 수에 대한 작은 테이블을 얻는 명령을 찾았습니다.
|try
ip
user
이것
코드는 아래와 같이 표시됩니다.
zgrep -hi "Failed password for " /var/log/secure* | sed "s/invalid user //" | tr -s " " | awk '{print $11" "$9}' | sort | uniq -c | sort -rn | head -20
zgrep -hi "Failed password for " /var/log/secure* |
sed "s/invalid user //" |
tr -s " " |
awk '{print $11" "$9}' |
sort |
uniq -c |
sort -rn |
head -20
어떻게 작동하는지 알고 싶습니다.
답변1
첫 번째 명령은 /var/log/secure 로그에서 실패한 로그인 시도를 검색합니다.
zgrep -hi "Failed password for " /var/log/secure*
다음과 같은 결과가 생성됩니다.
Aug 1 21:22:53 jbclamp001 sshd[40401]: Failed password for jbutryn from ip.ip.ip.ip port 55843 ssh2
주문하다:
sed "s/invalid user //"
검색어 '잘못된 사용자'를 ''로 바꾸세요.
주문하다:
tr -s " "
추가 공백 문자는 문자열에서 제거됩니다.
주문하다:
awk '{print $11" "$9}'
그런 다음 열 11과 9만 가져와 인쇄합니다(이것은 IP 주소와 사용자 이름입니다).
주문하다:
sort
그러면 모든 결과가 영숫자로 정렬되나요?
주문하다:
uniq -c
중복된 값은 모두 제거됩니다
주문하다:
sort -rn
목록을 역순으로 정렬하시겠습니까?
주문하다:
head -20
결과의 처음 20개 값만 표시됩니다.