Utente / gruppo sicuro per rsyslog per leggere il registro dell'applicazione?

2

Ho un'applicazione che scrive un file di log in /var/app/applog.log. Questa applicazione deve essere avviata come root, ma viene eseguita come app: app e può anche essere declassata a nessuno: nessuno

Che cosa è esattamente nessuno: nessuno e quali privilegi ha?
È meglio eseguire la mia app come app: app o nessuno: nessuno?

Il file di registro ha lo stesso utente del demone che li crea (app o nessuno). Ma per qualche motivo appartiene al gruppo radice.

Ho visto che rsyslog usa l'utente syslog e, a seconda della configurazione, usa il gruppo adm (ho visto molte guide che raccomandano l'uso di questo gruppo per rsyslog. Cosa fa questo gruppo ed è sicuro utilizzarlo per rsyslog?)
Il mio rsyslog.conf ha questo aspetto:

$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup adm

Affinché rsyslog possa leggere il log della mia app devo cambiare il gruppo dei file di log in adm e per qualche ragione devo anche aggiungere rsyslog al gruppo adm (anche se specificando adm group in conf) per rsyslog in grado di leggi il file.

Quale utente: gruppo dovrebbero essere i file di log e quale è il modo più sicuro per consentire a ryslog di leggerli?

Alla fine voglio che il mio demone sia in grado di scrivere solo su questi registri e rsyslog sia in grado di leggerli. Nessun altro utente dovrebbe essere in grado di leggere / modificare i log diversi da root. Qualche idea?

    
posta user2284355 12.07.2013 - 18:54
fonte

2 risposte

4

L' nobody utente è destinato a essere esattamente questo. Un account utente generico che non appartiene a nessuno e non viene utilizzato per eseguire alcun servizio. Pertanto, avere un file di proprietà di nobody:nobody è un modo per assicurarsi che solo root abbia accesso ma non sia di proprietà di root.

La mia regola empirica sarebbe quella di creare un account di servizio per eseguire il servizio. In questo modo hai cose come httpd in esecuzione come httpd o apache . In questo modo, se esiste una vulnerabilità nel tuo servizio, il danno è limitato. Se, ad esempio, qualcuno può far eseguire al tuo sito web un comando locale, verrà eseguito come un utente che può fare solo cose in /var/www invece di lasciare che acquisiscano il controllo completo del tuo sistema.

Syslog è interessante. In genere non importa che il tuo server syslog funziona come, dal momento che è solo in ascolto su un socket e scrivere su file. Se la tua applicazione registra usando syslog, allora tutto funzionerà. Il motore rsyslog, tuttavia, può eseguire alcune funzioni più avanzate, come leggere un file e quindi elaborarlo.

Affinché rsyslogd legga un file, deve essere in grado di leggere quel file. Quindi nella tua situazione il file di registro dell'applicazione deve:

  • Sii leggibile
  • Sii proprietario leggibile dall'utente syslog
  • Sii gruppo leggibile dal gruppo adm

In alternativa, puoi lasciare che rsyslogd rimanga in esecuzione su root. Di solito non è l'ideale, ma a seconda della posizione di sicurezza e dei controlli compensativi, i rischi possono essere in gran parte attenuati. In entrambi i casi, è necessario che si verifichi una riconfigurazione.

    
risposta data 12.07.2013 - 19:46
fonte
1

Da wikipedia:

In many Unix variants, "nobody" is the conventional name of a user account which owns no files, is in no privileged groups, and has no abilities except those which every other user has.

adm : Group adm è utilizzato per le attività di monitoraggio del sistema. I membri di questo gruppo possono leggere molti file di registro in /var/log e possono utilizzare xconsole. Storicamente, /var/log era /usr/adm (e successivamente /var/adm ), quindi il nome del gruppo. Non confondere questo gruppo con admin , i membri del gruppo admin possono eseguire programmi con privilegi di root, i membri di adm possono visualizzare alcuni file di log.

Quindi, a seconda di ciò che è negli altri registri, è opportuno aggiungere tale utente in quanto è solo un permesso di lettura.

    
risposta data 12.07.2013 - 19:42
fonte

Leggi altre domande sui tag