Czy można dowiedzieć się, którego klucza SSH użyto do uzyskania dostępu do konta? Mam konto na serwerze, do którego pozwalam kilku (zaufanym!) Osobom dostęp za pośrednictwem ssh. Przydałoby się wiedzieć, kto i kiedy się zalogował. Mam dostęp do konta root, więc mogę przeglądać dzienniki, ale wydaje się, że nic tam nie ma. Czy jest jakiś przełącznik konfiguracji, który pozwoli w jakiś sposób zidentyfikować klucz w logach?
ssh
logs
authentication
Loop Space
źródło
źródło
Odpowiedzi:
Jeśli przejdziesz do pliku konfiguracyjnego sshd (zwykle
/etc/ssh/sshd_config
) i zmienisz dyrektywę LogLevel na VERBOSE:... możesz zobaczyć coś takiego w dziennikach:
Od
man sshd_config
:źródło
sed -ne "/sshd.$PPID.:.*matching DSA key/{s/^.* //g;p;q}" /var/log/auth.log
sed
!q
dyrektywę, sklep linię do końca pliku ... sed linia stać:sed -ne "/sshd.$PPID.:.*matching DSA key/{s/^.* //g;h};\${x;p}" /var/log/auth.log
. Zdecydowanie: I Love sed!Nieco podobne do odpowiedzi @ user37161 . Jeśli na współużytkowanym koncie działa niestandardowa powłoka, a powłoka musi wiedzieć, który użytkownik tam jest, wówczas uruchomienie skryptu „otoki” może być niewystarczające, ponieważ informacje nie są przekazywane do niestandardowej powłoki poza metodami, które mogą powodować wyścig warunki.
Zamiast tego możesz użyć
environment=
opcji w pliku uprawnione klucze, aby ustawić zmienną środowiskową, którą niestandardowa powłoka może następnie odczytać.Wewnątrz
.ssh/authorized_keys
pliku wstaw każdą linię za pomocą zestawu zmiennych środowiskowych, takich jak:Następnie niestandardowa powłoka lub dowolny z różnych skryptów rc może odczytać
$REMOTEUSER
zmienną i podjąć odpowiednią akcję.Pamiętaj jednak, że jeśli używasz standardowej powłoki, zalogowany użytkownik może modyfikować plik, aby udaremnić różne rzeczy. Ponadto istnieje pewne ryzyko, że użytkownicy mogą ustawiać zmienne środowiskowe, takie jak
LDPRELOAD
. Zobaczsshd_config
dokumentację na tematPermitUserEnvironment
.źródło
Zaktualizuj 31.10.2016 o formacie dziennika
Niektóre skrypty do prawidłowej instalacji
Istnieje pełna użyteczna metoda śledzenia / rejestrowania połączeń ssh według klucza z zastrzeżeniem nazwy użytkownika.
Wprowadzenie
Oprócz odpowiedzi @Caleb chciałbym podzielić się kilkoma sztuczkami:
Nota: Pracuję nad Debianem 6.0 .
Instalacja serwera
Poziom dziennika SSHD
Najpierw upewnij się, że konfiguracja serwera ma wystarczający poziom rejestrowania:
jako root, ustawi i aktywuje pełne logowanie:
Można napisać:
lub w skrypcie sed :
Który można uruchomić jako:
Niż za aktywację tego:
Syslog: czynienie odcisków palców czytelnymi dla użytkownika
Teraz weź odciski palców w pliku czytelnym dla użytkownika:
Spróbuj (ponownie) zalogować się z ssh, aby upewnić się, że nowy plik
sshdusers.log
został utworzony (i zawiera coś)Stosowanie
Spowoduje to wydrukowanie odcisku palca bieżących sesji:
Wtyczka dla
.bashrc
I na koniec jest mały dodatek do umieszczenia na końcu twojego
/etc/bash.bashrc
lub użytkownika.bashrc
:więc po ponownym zalogowaniu z SSH zobaczysz:
Uwaga W przypadku niektórych instalacji plik autoryzowanego klucza może mieć inną nazwę, na przykład
$HOME/.ssh/authorized_keys2
...źródło
file
dla poznania typów plików. Ale jak dla ludzi, którzy przeglądania systemu plików, posiadające rozszerzenia takie jak.pl
,.py
,.sh
,.awk
,.sed
,.tar.gz
, lub nawet.png.b64.gz
jest przydatna!Załóżmy, że użytkownicy „Joe” i „Deb” mają dostęp do konta „x”. Następnie na koncie x
.ssh_authorized_keys
dodajesz linie:Również w skrypcie opakowania możesz zrobić wszystko, co chcesz, rejestrując klucz prywatny tego Joe za pomocą polecenia
ssh
w określonym dniu i czasie$ORIGINAL_COMMAND
.źródło
W Fedorze 20+ próby logowania i sukcesy są zapisywane w /var/log/audit/audit.log. Ten dziennik zapisuje próby logowania (niepowodzenia i sukcesy), a klucz linii papilarnych użyty do próby logowania jest zapisywany w polu o nazwie fp.
Możesz porównać zalogowany odcisk palca z odciskami palców w uprawnionych kluczach, uruchamiając go wiersz po wierszu przez ssh-keygen -l
Szczegółowe wyjaśnienie dotyczące logowania ssh oraz ich bezpieczeństwa i wykrywania włamań znajduje się tutaj: http://vpathak.tumblr.com/post/121343814158/fedora-audit-log-with-love-from-russia
źródło
Możesz spróbować:
źródło
ssh-add -L | awk 'NR==FNR { k=$2;next } /^#/{next} $2==k { print $3;exit} $3==k {print $4;exit} ' - ~/.ssh/authorized_keys
Oprócz @F. Odpowiedź Hauri, przygotowuję przydatny „monit LoggedIn”.
Jeden dodatkowy plik jest opcjonalny ($ HOME / .ssh / users):
Tę część należy wkleić do
/etc/profile
(dla wszystkich użytkowników) lub do~/.bashrc
Wynik
źródło