Запустите rsyslog как непривилегированного пользователя

Необходимо быть более конкретными и сказать нам, какой дистрибутив/политику Вы выполняете, некоторые допускают "неограниченные" процессы, которые удовлетворили бы Ваши потребности (человек runcon), другие не делают - в этом случае необходимо было бы или маркировать резервный сценарий типом SELinux, который позволяет доступ для чтения ко всем файлам, ИЛИ создайте новое правило приложений для него (трудно).

Править: Я предполагаю, что Вы уже считали запись FAQ SELinux на резервном копировании: использовать star

5
09.03.2019, 10:49
3 ответа

Запуск с 4.1.1, rsyslogd обеспечивает способность отбросить полномочия путем исполнения роли как другой пользователь и/или группа после запуска.

Обратите внимание на то, что из-за POSIX стандарты, rsyslogd всегда потребности запустить как корень, если существует слушатель, который должен связать с сетевым портом ниже 1024. Например, слушатель UDP обычно должен слушать 514 и как таковой rsyslogd потребности запустить как корень.

Если Вам не нужна эта функциональность, можно запустить rsyslog непосредственно как обычный пользователь. Это - вероятно, самый безопасный способ операций. Однако, если запуск как корень требуется, можно использовать $PrivDropToGroup и $PrivDropToUser директивы конфигурации для определения группы и/или пользователя это rsyslogd должен спасть после инициализации. После того как это произошло, выполнения демона без высоких полномочий (зависящий, конечно, на полномочиях учетной записи пользователя, которую Вы указали).

Все это от rsyslog Wiki, которая больше не доступна, но все еще на архиве

Необходимо считать его.

8
27.01.2020, 20:35
  • 1
    Это было бы самым чистым способом сделать это. –  cinelli 29.03.2013, 10:36
  • 2
    @user1968963, если Вы хотите, чтобы люди дали Вам другой ответ, необходимо предоставить достаточно информации для людей для надлежащей оценки ситуации. –  Patrick 29.03.2013, 15:52
  • 3
    @Patrick вопрос казался довольно ясным; "Это может отбросить полномочия после того, как запускаются, но более чистый путь состоял бы в том, чтобы запуститься как непривилегированный пользователь. Кто-то мог советовать, каков был бы очевидный способ для установки rsyslog для выполнения как непривилегированный пользователь?". В этом ответе говорится, что это возможно, но не объясняет, как сделать это –  Michael Mrozek♦ 29.03.2013, 16:02
  • 4
    @cinelli... остальная часть того предложения должна "указать группу и/или пользователя, до которого rsyslogd должен спасть после инициализации". Это для отбрасывания полномочий, метод, он конкретно сказал многократно, что не хочет. Он хочет знать, как изменить демона, таким образом, это запускается как обычный пользователь с начала. Не имеет значения, если Вы думаете, что это бесполезно, это - то, что он ищет –  Michael Mrozek♦ 29.03.2013, 16:15
  • 5
    @cinelli, такое чувство, что мы входим в круги; я не знаю, какой из нас пропускает что-то здесь. OP сказал, что он знает, что это возможно отбросить полномочия, но предпочло бы, чтобы rsyslog только запустились как обычный пользователь с начала. Вы сказали как четыре раза теперь, когда лучший способ состоит в том, чтобы иметь его, запускаются как корень и отбрасывают полномочия. Это не то, что он хочет; это - буквально одна вещь, он сказал в вопросе, что не хочет. Все понимают, что отбрасывание полномочий является опцией, но он хочет способ запуститься как обычный пользователь, таким образом, любой ответ, который включает "выполненный как корень", является неправильным –  Michael Mrozek♦ 29.03.2013, 17:16

В моей системе (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
27.01.2020, 20:35

Я нашел этот вопрос при попытке запустить rsyslog как непривилегированный пользователь для получения удаленных данных syslog с машины-разработчика. Предположим, что у других пользователей есть похожий сценарий использования, вот что я нашел:

Протестировано на Ubuntu 14.04.

Ряд типичных функций rsyslog требуют root, но не все. Если такие возможности требуются, то обычно rsyslog будет жаловаться внутри собственных журналов.

Примеры:

  • imuxsock - локальная регистрация syslog (не может открыть /dev/log) - вы можете работать с permissiosn - мне она не нужна
  • imklog - регистрация ядра - очевидно, нужен root
  • $FileOwner - т.е. chmod - очевидно, нужен root
  • $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
1
27.01.2020, 20:35

Теги

Похожие вопросы