Podczas audytu /var/log/auth.log
na jednym z moich publicznych serwerów znalazłem:
Jan 10 03:38:11 Bucksnort sshd[3571]: pam_unix(sshd:auth): authentication failure;
logname= uid=0 euid=0 tty=ssh ruser= rhost=61.19.255.53 user=bin
Jan 10 03:38:13 Bucksnort sshd[3571]: Failed password for bin from 61.19.255.53
port 50647 ssh2
Na pierwszy rzut oka wygląda to jak typowy ssh
spam logowania od losowych hakerów; jednak, gdy przyjrzałem się bliżej, zauważyłem coś innego. Większość nieudanych /var/log/auth.log
wpisów mówi invalid user
w nich, takich jak ten:
Jan 9 10:45:23 Bucksnort sshd[3006]: Failed password for invalid user sales
from 123.212.43.5 port 10552 ssh2
Niepokojące rzeczy na temat tej nieudanej wiadomości logowania na bin
to, że jest to ważny użytkownik w /etc/passwd
tym nawet ma powłokę logowania:
[mpenning@Bucksnort ~]$ grep ^bin /etc/passwd
bin:x:2:2:bin:/bin:/bin/sh
Myślałem, że pokryła wszystkie domyślne nazwy użytkowników, które mogłyby się zalogować zdalnie kiedy wyłączony PermitRootLogin
w /etc/ssh/sshd_config
; odkrycie tego wpisu otworzyło nowe możliwości w moim paranoicznym umyśle. Jeśli usługi w jakiś sposób działały bin
, to jest możliwe, że ktoś mógłby w jakiś sposób wstawić klucz ssh do katalogu bin
użytkownika z uruchomionej usługi na pudełku, więc chciałbym całkowicie wyłączyć logowanie dla bin
użytkownika, jeśli to możliwe.
pytania
Ten serwer jest zdalny i kosztowny do naprawienia (tj. Zapłacę za zdalne ręce, aby podłączyć KVM, a także wynajem KVM). Próbuję wymyślić, co mogę złamać, jeśli zmienię
/etc/passwd
wpis,bin
aby wyglądał tak:bin:x:2:2:bin:/bin:/bin/false
Uruchomiłem następujące polecenia, próbując dowiedzieć się, co
bin
jest potrzebne ... Jednak te polecenia wymyśliły brak plików i nie mogłem znaleźć żadnych procesów należących dobin
. Co w ogóle robibin
użytkownik?$ sudo find / -group bin
$ sudo find / -user bin
Czy są jeszcze inni użytkownicy, dla których należy ustawić powłoki logowania
/bin/false
? FYI, mam już/bin/false
nawww-data
.Czy jestem zbyt paranoikiem?
Używam Debiana, jeśli to ma znaczenie.
Odpowiedzi:
Użytkownik, który ma prawidłową powłokę i nie ma hasła, może nadal logować się metodami nieopartymi na hasłach, przy czym najczęściej jest to klucz ssh. Prawidłowa powłoka jest niezbędna do uruchamiania zadań cron. Prawidłowa powłoka jest również niezbędna
su bin -c 'wibble'
do działania (przynajmniej w systemie Linuxsu bin -s /bin/sh -c 'wibble'
będzie działać).W przypadku
bin
większości systemów nigdy nie uruchamia polecenia, jakbin
podczas normalnej pracy, więc ustawienie powłoki na/bin/false
OK byłoby w porządku.Nie ma ryzyka bezpośredniego ataku pozwalającego
bin
zalogować się przez SSH, ponieważ wymagałoby to utworzenia/bin/.ssh/authorized_keys
użytkownikabin
lub użytkownika root. Innymi słowy, jedynym sposobem na wejście jest wejście. Jednak posiadanie prawidłowej powłoki zwiększa ryzyko błędnej konfiguracji. Może także dopuszczać niektóre zdalne ataki za pomocą usług innych niż SSH; na przykład użytkownik zgłasza, że osoba atakująca może ustawić hasłodaemon
zdalnie za pośrednictwem Samby, a następnie użyć tego hasła do zalogowania się przez SSH.Możesz zamknąć otwór SSH, wymieniając nazwy użytkowników systemu w
DenyUsers
dyrektywie w/etc/ssh/sshd_config
(niestety nie możesz użyć zakresu liczbowego). Lub odwrotnie, możesz wprowadzićAllowGroups
dyrektywę i zezwalać tylko na grupy zawierające użytkowników fizycznych (np.users
Jeśli przyznasz wszystkim użytkownikom fizycznym członkostwo w grupie).Zgłoszono błędy dotyczące tego problemu w Debianie ( # 274229 , # 330882 , # 581899 ), obecnie otwartym i sklasyfikowanym jako „ lista życzeń”. Zgadzam się, że są to błędy i użytkownicy systemu powinni je mieć
/bin/false
jako powłokę, chyba że wydaje się konieczne, aby zrobić inaczej.źródło
Nie musisz się tym martwić jako użytkownik. Są „użytkownikami” w znaczeniu grup bezpieczeństwa, a nie użytkownikami w sensie „logowania się i używania” osób. Jeśli spojrzysz na „/ etc / shadow”, zobaczysz, że wszyscy ci „użytkownicy” nie mają haseł („x” lub „!” Zamiast długiego solonego skrótu). Oznacza to, że ci użytkownicy nie mogą się zalogować, bez względu na wszystko.
To powiedziawszy, nie wiem, czy dobrym pomysłem jest zmiana „/ bin / sh” na „/ bin / false” dla wszystkich tych użytkowników. Ponieważ programy działają w tych grupach, może nie pozwolić im na wykonywanie poleceń, których potrzebują. Zostawiłbym je jako „/ bin / sh”.
Nie musisz się martwić o tych użytkowników. Martw się tylko o użytkowników, których tworzysz (i tych z hashami w „/ etc / shadow”)
źródło
/etc/shadow
, ale jeśli usługa działa jako użytkownik, teoretycznie możliwe jest, aby ktoś wstawiłssh
klucz logowania, prawda?rpcd
porty nie stanowiłyby problemu; jednak osobiście byłem świadkiem wyników zdalnego exploita na starej maszynie Solaris, do której atakujący uzyskał dostęp poprzezrpc
exploit na pudełku.rhosts
został włączony i zapisany przez tegorpc
użytkownika (nie pamiętam już żadnych szczegółów ... to było lata temu) ... Podobnie jeśli może stworzyć~/.ssh/authorized_keys
użytkownika, który mógłby się zalogować, to nadal wydaje się to ryzykowne (nawet bez hasło w/etc/shadow
)Uważam, że nie stanowi to problemu, ponieważ aby skonfigurować klucz publiczny SSH w
bin
katalogu domowym (/bin
), osoba atakująca musiałaby mieć dostęp do systemu plików jako użytkownik root, co oznacza, że i tak masz problemy.Jeśli chcesz, możesz wyłączyć wszystkie metody uwierzytelniania dla
bin
użytkownika w konfiguracji sshd przy użyciuMatchUser
bloku.To powiedziawszy, wygląda na to, że użytkownik bin nie jest używany w nowoczesnych systemach opartych na Debianie i jest jedynie ukłonem w stronę tradycji lub jest zgodny z niektórymi standardami.
źródło