Nel mio /etc/passwd
file, posso vedere che l' www-data
utente utilizzato da Apache, così come tutti i tipi di utenti del sistema, ha una /usr/sbin/nologin
o /bin/false
come shell di login. Ad esempio, ecco una selezione di linee:
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
Di conseguenza, se provo a passare a uno di questi utenti (cosa che a volte mi piacerebbe fare per verificare la mia comprensione delle loro autorizzazioni e che probabilmente ci sono altri motivi almeno a metà sani di mente), fallisco:
mark@lunchbox:~$ sudo su www-data
This account is currently not available.
mark@lunchbox:~$ sudo su syslog
mark@lunchbox:~$
Certo, non è un gran inconveniente, perché posso ancora lanciare una shell per loro tramite un metodo come questo:
mark@lunchbox:~$ sudo -u www-data /bin/bash
www-data@lunchbox:~$
Ma questo mi lascia solo a chiedermi quale sia lo scopo negando a questi utenti una shell di accesso. Guardando a Internet per una spiegazione, molte persone affermano che ciò ha qualcosa a che fare con la sicurezza e tutti sembrano concordare sul fatto che sarebbe in qualche modo una cattiva idea cambiare le shell di accesso di questi utenti. Ecco una raccolta di citazioni:
L'impostazione della shell dell'utente Apache su qualcosa di non interattivo è generalmente una buona pratica di sicurezza (in realtà tutti gli utenti di servizi che non devono accedere in modo interattivo dovrebbero avere la shell impostata su qualcosa che non è interattivo).
- https://serverfault.com/a/559315/147556
la shell per l'utente www-data è impostata su / usr / sbin / nologin ed è impostata per un'ottima ragione.
- https://askubuntu.com/a/486661/119754
[account di sistema] possono essere falle di sicurezza , specialmente se hanno una shell abilitata:
Male
bin:x:1:1:bin:/bin:/bin/sh
Buono
bin:x:1:1:bin:/bin:/sbin/nologin
- https://unix.stackexchange.com/a/78996/29001
Per motivi di sicurezza ho creato un account utente senza shell di accesso per l'esecuzione del server Tomcat:
# groupadd tomcat # useradd -g tomcat -s /usr/sbin/nologin -m -d /home/tomcat tomcat
- http://www.puschitz.com/InstallingTomcat.html
Sebbene questi post siano d'accordo all'unanimità sul fatto che non dare agli utenti di sistema vere shell di login sia un bene per la sicurezza, nessuno di questi giustifica questa affermazione e non riesco a trovare una spiegazione da nessuna parte.
Da quale attacco stiamo cercando di proteggerci non dando a questi utenti vere shell di login?