Inicie o rsyslog como usuário sem privilégios

4

No Debian, o rsyslog é executado por padrão como root (devido à compatibilidade POSIX). Ele pode descartar privilégios após o início, mas uma maneira mais limpa seria iniciar como um usuário não privilegiado. Alguém poderia, por favor, avisar, o que seria uma maneira limpa de configurar o rsyslog para ser executado como usuário não privilegiado? (qual usuário?). Enquanto googling, encontrei o start-stop-daemon, que aparentemente pode fazer com que o daemon inicie como não-root. esta é a maneira de fazê-lo, ou existe uma maneira melhor?

    
por user1968963 29.03.2013 / 08:59

3 respostas

7

A partir do 4.1.1, rsyslogd fornece a capacidade de eliminar privilégios, representando-se como outro usuário e / ou grupo após a inicialização.

Observe que, devido aos POSIX standards, rsyslogd sempre precisa iniciar como root se houver um listener que deve se vincular a uma porta de rede abaixo de 1024 . Por exemplo, o ouvinte do UDP geralmente precisa ouvir 514 e, como tal, rsyslogd precisa ser iniciado como raiz.

Se você não precisar dessa funcionalidade, poderá iniciar rsyslog diretamente como um usuário comum. Essa é provavelmente a maneira mais segura de operações. No entanto, se uma inicialização como raiz for necessária, você poderá usar as diretivas $PrivDropToGroup e $PrivDropToUser config para especificar um grupo e / ou usuário para o qual rsyslogd deverá cair após a inicialização. Depois que isso acontecer, o daemon é executado sem privilégios altos (dependendo, é claro, das permissões da conta de usuário que você especificou).

Tudo isso é da wiki do rsyslog

Você deve ler.

    
por 29.03.2013 / 09:35
0

No meu sistema (Debian), o rsyslog é iniciado por /etc/init.d/rsyslog, que contém algo assim:

start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS

de acordo com o manual start-stop-daemon, eu posso especificar a opção "--chuid", que fará o processo iniciar como outro usuário.

start-stop-daemon --start --chuid daemon --user daemon --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS

então, a única questão que resta é, o que seria uma boa prática. Qual usuário devo usar? Este usuário terá acesso de gravação ao meu / var / log /

    
por 30.03.2013 / 08:30
0

Eu encontrei esta questão ao tentar executar o rsyslog como um usuário não privilegiado para receber dados syslog remotos de uma máquina de desenvolvimento. Supondo que os outros tenham um caso de uso semelhante, aqui está o que eu encontrei:

Testado no Ubuntu 14.04.

Vários recursos típicos do rsyslog exigem raiz, mas não todos. Se tais recursos forem necessários, geralmente o rsyslog irá reclamar dentro de seus próprios logs.

Exemplos são:

  • imuxsock - log de syslog local (não pode abrir / dev / log) - você poderia contornar isso com permissiosn - eu não precisava disso
  • imklog - log do kernel - obviamente precisa de root
  • $FileOwner - ie chmod - obviamente precisa de root
  • $ProveDropToUser/Group
  • Acesso ao console, mensagens de difusão - por exemplo, xconsole etc, ...

Além disso, os módulos de rede funcionam bem, desde que eles usem portas não privilegiadas. Além disso, os diretórios de log / spooling devem estar acessíveis. Vale ressaltar que o rsyslog.conf parece usar caminhos absolutos.

rsyslog.conf está abaixo - eu iria ajustá-lo ainda mais para o registro por host, mas isso está além do escopo:

#################
#### MODULES ####
#################

$ModLoad immark  # provides --MARK-- message capability

# NOTE - listen on  unprivileged port 2514

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 2514

# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 2514

###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Filter duplicated messages
$RepeatedMsgReduction on

#
# Set the default permissions for all log files.
#
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022

# These may require root
#$FileOwner syslog
#$FileGroup adm
#$PrivDropToUser syslog
#$PrivDropToGroup syslog

#
# Where to place spool and state files
#
$WorkDirectory /home/user/rsyslog/spool

#
# Include all config files in /etc/rsyslog.d/
#
#$IncludeConfig /etc/rsyslog.d/*.conf

#  Default rules for rsyslog.
#
#           For more information see rsyslog.conf(5) and /etc/rsyslog.conf

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*         /home/user/rsyslog/log/auth.log
*.*;auth,authpriv.none      -/home/user/rsyslog/log/syslog
cron.*              /home/user/rsyslog/log/cron.log
daemon.*            -/home/user/rsyslog/log/daemon.log
kern.*              -/home/user/rsyslog/log/kern.log
user.*              -/home/user/rsyslog/log/user.log

#
# Some "catch-all" log files.
#
*.=debug;\
    auth,authpriv.none;\
    news.none;mail.none -/home/user/rsyslog/log/debug
*.=info;*.=notice;*.=warn;\
    auth,authpriv.none;\
    cron,daemon.none;\
    mail,news.none      -/home/user/rsyslog/log/messages

Iniciar o daemon requer apenas um apontamento em sua configuração personalizada e a especificação de um arquivo pid diferente para mantê-lo separado do sistema rsyslog (e garantir que você tenha acesso de gravação)

$ rsyslogd -f rsyslog.conf -i ~/rsyslog/pid

Confirme sua execução:

$ ps ux
user     24374  0.0  0.0 347632  1520 ?        Ssl  10:18   0:00 rsyslogd -f rsyslog.conf -i /home/user/rsyslog/pid
$ tail ~/rsyslog/log/syslog
May 19 10:44:18 plutonium rsyslogd: [origin software="rsyslogd" swVersion="7.4.4" x-pid="26504" x-info="http://www.rsyslog.com"] start
    
por 19.05.2015 / 02:45

Tags