web-dev-qa-db-ja.com

非特権ユーザーとしてrsyslogを起動します

Debianでは、rsyslogはデフォルトでrootとして実行されます(POSIX互換性のため)。開始後に特権を削除できますが、よりクリーンな方法は、非特権ユーザーとして開始することです。非特権ユーザーとして実行するようにrsyslogを設定するクリーンな方法は何でしょうか? (どのユーザー?)。グーグル中に、start-stop-daemonを見つけました。これにより、デーモンが非ルートとして起動する可能性があります。これはそれを行う方法ですか、それともより良い方法がありますか?

5
user1968963

4.1.1以降、rsyslogdは、起動後に別のユーザーやグループになりすますことで特権を削除する機能を提供します。

POSIX標準により、1024より下のネットワークポートにバインドする必要があるリスナーがある場合、rsyslogdは常にrootとして起動する必要があることに注意してください。たとえば、UDPリスナーは通常514をリッスンする必要があるため、rsyslogdはrootとして起動する必要があります。

この機能が必要ない場合は、通常のユーザーとしてrsyslogを直接起動できます。それがおそらく最も安全な操作方法です。ただし、rootとしての起動が必要な場合は、$PrivDropToGroupおよび$PrivDropToUser configディレクティブを使用して、初期化後にrsyslogdがドロップするグループやユーザーを指定できます。これが発生すると、デーモンは高い権限なしで実行されます(もちろん、指定したユーザーアカウントの権限によって異なります)。

これはすべて rsyslog wiki からのもので、もう利用できませんが、まだ アーカイブ にあります

あなたはそれを読むべきです。

8
cinelli

開発マシンからリモートsyslogデータを受信するために非特権ユーザーとしてrsyslogを実行しようとしたときに、この質問を見つけました。他の人が同様のユースケースを持っていると仮定すると、ここで私が見つけたものは次のとおりです。

Ubuntu14.04でテスト済み。

多くの典型的なrsyslog機能にはルートが必要ですが、すべてではありません。このような機能が必要な場合、通常、rsyslogは独自のログ内で文句を言います。

例は次のとおりです。

  • imuxsock-ローカルsyslogロギング(/ dev/logを開くことができません)-permissiosnでこれを回避できます-私はそれを必要としませんでした
  • imklog-カーネルロギング-明らかにルートが必要
  • $FileOwner-つまりchmod-明らかにルートが必要
  • $ProveDropToUser/Group
  • コンソールへのアクセス、メッセージのブロードキャスト-例:xconsoleなど...

それとは別に、ネットワークモジュールは、非特権ポートを使用している限り、正常に機能します。さらに、ロギング/スプーリングディレクトリにアクセスできる必要があります。注目すべきは、rsyslog.confが絶対パスを使用しているように見えることです。

rsyslog.confは以下のとおりです-ホストごとのロギング用にさらに微調整しますが、それは範囲を超えています:

#################
#### 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

デーモンを起動するには、カスタム構成を指定し、別のpidファイルを指定して、デーモンをシステムrsyslogから分離しておく(そして書き込みアクセス権があることを確認する)だけです。

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

その実行を確認します。

$ 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
2
Greg

私のシステム(Debian)では、rsyslogは/etc/init.d/rsyslogによって開始されます。これには次のようなものが含まれています。

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

start-stop-daemonのマニュアルによると、「-chuid」オプションを指定できます。これにより、プロセスが別のユーザーとして開始されます。

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

したがって、残っている唯一の問題は、何が良い習慣になるかということです。どのユーザーを使用する必要がありますか?このユーザーは私の/ var/log /への書き込みアクセス権を持ちます

1
user1968963