Jak mogę śledzić, kto SSH jest na mojej maszynie z Linuksem?

23

Używam Ubuntu 10.04. Czy istnieje sposób, aby uzyskać codzienny raport o tym, kto zalogował się do skrzynki, o której godzinie, a nawet - to może wymagać zbyt wiele - raport o komendach, których użyli? Jest to pudełko o niskim zużyciu, więc myślę, że byłby to dobry sposób, aby zobaczyć, co się na nim dzieje.

Wzdłuż tych samych linii słyszałem, że nie było możliwe śledzenie, kiedy rzeczy są wykonywane na pudełku za pomocą nieinteraktywnych powłok, takich jak rsync lub po prostu zdalne wykonywanie pojedynczych poleceń przez ssh. Czy to prawda, czy jest też sposób, aby to zarejestrować i śledzić?

cwd
źródło

Odpowiedzi:

21

Informacja o tym, kto się zalogował, jest dostępna w /var/log/auth.log(lub w innych plikach dziennika w innych dystrybucjach). Istnieje wiele programów monitorujących dzienniki, które mogą wyodrębnić informacje, które odpowiednio skonfigurujesz. W każdym zdrowym systemie każde uwierzytelnienie użytkownika jest rejestrowane.

Aby zarejestrować każde wywołanie polecenia (ale nie ich argumenty), skorzystaj z ewidencji procesów , dostarczonej przez acctpakiet Zainstaluj acct na Ubuntu. Jeśli podsystem rozliczania jest uruchomiony, lastcommwyświetla informacje o zakończonych procesach.

Gilles „SO- przestań być zły”
źródło
3
/var/log/secure.log to kolejny wspólny plik dziennika
Adrian Cornish,
9

Możesz także użyć wholub, waby zobaczyć, kto jest obecnie zalogowany w systemie, w tym użytkownicy SSH.

Tim
źródło
10
lastmoże być lepszą opcją dla tego, czego szukał PO ...
jasonwryan
1
w rzeczy samej. „last” to polecenie, które chcesz.
Sirex,
1
To DUŻO lepsza odpowiedź niż wybrana.
PaulBGD
0

Zwykle, gdy ktoś loguje się do systemu użytkownika, to w / var / log / messages jest drukowany jako:

sshd[18468]: Accepted keyboard-interactive/pam for root from 134.64.66.666 port 49867 ssh2

Więc po prostu grep wiadomości:

grep -E "Accepted keyboard-interactive/pam for" /var/log/messages
RKum
źródło
0

Możesz także zmodyfikować powłokę bash, aby zrobić rsylog.

Skutecznie konfigurujesz rsyslog na zdalnym hoście, aby akceptować określone połączenia. Następnie zmodyfikuj powłokę hosta, na której chcesz monitorować - kompilując swoją wersję z taką, która ma następujące funkcje:

vi config-top.h
#define SYSLOG_HISTORY
#if defined (SYSLOG_HISTORY)
#  define SYSLOG_FACILITY LOG_USER
#  define SYSLOG_LEVEL LOG_INFO
#endif

Po skompilowaniu z włączoną obsługą, możesz zastąpić bash tą wersją LUB pozwolić użytkownikom na zalogowanie się do tej wersji poprzez przekierowanie do niej swoich loginów.

Po więcej informacji:

https://www.pacificsimplicity.ca/blog/remote-logging-using-syslog-and-logging-shell-commands-remotely

McDoomington
źródło
W porządku. Zaktualizuję to.
mcdoomington,