Znajdowanie najnowszych udanych logowań i nieudanych prób na serwerze CentOS

29

Szukam pliku dziennika lub jakiejkolwiek usługi, aby zgłosić ostatnie próby logowania, które zakończyły się niepowodzeniem z powodu niedopasowania nazwy użytkownika / hasła. Czy są dostępne takie narzędzia dla CentOS? (preferowane jest wbudowane)

Moje drugie pytanie, a bardziej ogólnie, potrzebuję pliku dziennika prób penetracji na mój serwer. Idealnie, ten dziennik powinien zawierać wszystkie próby, w tym logowania, działania httpd i inne konwencjonalne otwarte porty.

Lashgar
źródło
2
odpowiedz na drugie pytanie: spójrz na OSSEC .
kwanty
1
Wątek został przeniesiony z Stackoverflow po tym, jak zadałem pytanie w Serverfault. Oto wątki omawiające drugie pytanie.
lashgar

Odpowiedzi:

61

W systemie Linux lastpolecenie wyświetla udane próby logowania i wyświetla informacje o sesji (pkt, źródło, data i długość).

lastbKomenda rejestruje wszystkie złe prób logowania. Obie mają tę samą manstronę, ale różnica polega na tym, że lastczyta /var/log/wtmpplik binarny i domyślnie lastbczyta /var/log/btmpplik.

Zakres tych plików zależy od harmonogramu rotacji dzienników, ale powinien trwać kilka tygodni. Większość dystrybucji będzie się obracać /var/log/wtmpco miesiąc, więc możesz przeczytać poprzedni rekord, zwykle wymieniony jako /var/log/wtmp.1, określając plik za pomocą -fparametru ...last -f /var/log/wtmp.1

ewwhite
źródło
17
+1 zalastb
lashgar
3
To powinna być wybrana odpowiedź
programista
@acoder, gotowe: thumb:
lashgar
14

Pytanie jest tutaj nie na temat, ale bardzo krótka odpowiedź: może powinieneś po prostu sprawdzić / var / log / secure (np. Grep dla „failed”).

flolo
źródło
To właściwie odpowiedź na moje pierwsze pytanie. Zapytam drugi w ServerFault. Dzięki.
lashgar
1

To jest stary wątek, ale dostałem podobne zadanie, więc w moim przypadku jest to wpis do dziennika

Nov 15 17:14:47 megatron sshd[4768]: Failed password for git from 192.168.122.1 port 49227 ssh2

Możemy to zrobić w ten sposób, jeśli jesteśmy pewni, że użytkownik jest statyczny

#!/bin/bash
LOG=/var/log/secure
MESSAGE="Failed password for git"
grep -i "$MESSAGE" "$LOG

W przypadku, gdy wiemy na podstawie na użytkownika

#!/bin/bash
LOG=/var/log/secure
if [ -n "$1" ]
then
NEWUSER="$1"
else
NEWUSER="root"
fi
MESSAGE="Failed password for $NEWUSER"
grep -i "$MESSAGE" "$LOG"

Skrypt powinien więc działać podobnie

[root@megatron bash1]# ./failedlogin.sh git

LUB łatwiejsze podejście

#!/bin/bash
LOG=/var/log/secure
MESSAGE="Failed password for"
grep -i "$MESSAGE" "$LOG"
Prashant Lakhera
źródło