W moim /etc/passwd
pliku widzę, że www-data
użytkownik używany przez Apache, a także różnego rodzaju użytkownicy systemu, mają powłokę logowania jako /usr/sbin/nologin
lub /bin/false
. Na przykład oto wybór linii:
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin games:x:5:60:games:/usr/games:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin syslog:x:101:104::/home/syslog:/bin/false whoopsie:x:109:116::/nonexistent:/bin/false mark:x:1000:1000:mark,,,:/home/mark:/bin/bash
W związku z tym, jeśli spróbuję zamienić się na któregokolwiek z tych użytkowników (co czasami chciałbym zrobić, aby sprawdzić, czy rozumiem ich uprawnienia, i które są prawdopodobnie inne co najmniej w połowie rozsądne powody), nie udaje mi się:
mark@lunchbox:~$ sudo su www-data
This account is currently not available.
mark@lunchbox:~$ sudo su syslog
mark@lunchbox:~$
Oczywiście nie stanowi to dużej niedogodności, ponieważ nadal mogę uruchomić dla nich powłokę za pomocą metody takiej jak ta:
mark@lunchbox:~$ sudo -u www-data /bin/bash
www-data@lunchbox:~$
Ale to tylko sprawia, że zastanawiam się, jaki jest cel , odmawiając tym użytkownikom powłoki logowania. Szukając wyjaśnień w Internecie, wiele osób twierdzi, że ma to coś wspólnego z bezpieczeństwem, i wszyscy wydają się zgadzać, że zmiana sposobu logowania tych użytkowników byłaby w pewnym sensie złym pomysłem. Oto zbiór cytatów:
Ustawienie powłoki użytkownika Apache na coś nieinteraktywnego jest ogólnie dobrą praktyką bezpieczeństwa (tak naprawdę wszyscy użytkownicy usług, którzy nie muszą logować się interaktywnie, powinni ustawić powłokę na coś, co nie jest interaktywne).
- https://serverfault.com/a/559315/147556
powłoka dla danych www użytkownika jest ustawiona na / usr / sbin / nologin i jest ustawiona z bardzo dobrego powodu.
- https://askubuntu.com/a/486661/119754
[Konta systemowe] mogą być lukami w zabezpieczeniach , szczególnie jeśli mają włączoną powłokę:
Zły
bin:x:1:1:bin:/bin:/bin/sh
Dobry
bin:x:1:1:bin:/bin:/sbin/nologin
- https://unix.stackexchange.com/a/78996/29001
Ze względów bezpieczeństwa utworzyłem konto użytkownika bez powłoki logowania do uruchamiania serwera Tomcat:
# groupadd tomcat # useradd -g tomcat -s /usr/sbin/nologin -m -d /home/tomcat tomcat
- http://www.puschitz.com/InstallingTomcat.html
Chociaż posty te są jednomyślnie zgodne co do tego, że nieudzielanie użytkownikom systemu prawdziwych powłok logowania jest dobre dla bezpieczeństwa, żaden z nich nie uzasadnia tego roszczenia i nigdzie nie mogę go wyjaśnić.
Przed jakim atakiem próbujemy się chronić, nie dając tym użytkownikom prawdziwych powłok logowania?