CentOS 6.5: нужно писать логи internal-sftp и sshd в разные файлы

Чистый и полностью обновленный Centos 6.5, OpenSSH версии 5.3p1-94.el6, настройки классические:
/etc/rsyslog.d/sftp.conf
$AddUnixListenSocket /var/www/vhosts/user1/dev/log
:programname, isequal, "internal-sftp" -/var/log/sftp.log
:programname, isequal, "internal-sftp" ~

/etc/ssh/sshd_config
Subsystem       sftp    internal-sftp -l VERBOSE
Match Group sftp
        ChrootDirectory %h
        X11Forwarding no
        AllowTcpForwarding no
        ForceCommand internal-sftp -l VERBOSE

Пользователь user1, home=/var/www/vhosts/user1, group=sftp
Проблема в том, что всё работает как надо, только если убрать ChrootDirectory из настроек, даже ChrootDirectory / не помогает. Собственно вот что должно быть:
/var/log/secure
Jun  8 12:08:01 srv sshd[10371]: Accepted password for user1 from IP port 38817 ssh2
Jun  8 12:08:01 srv sshd[10371]: pam_unix(sshd:session): session opened for user user1 by (uid=0)
Jun  8 12:08:01 srv sshd[10373]: subsystem request for sftp
...

/var/log/sftp.log
Jun  8 12:08:01 srv internal-sftp[10374]: session opened for local user user1 from [IP]
Jun  8 12:08:01 srv internal-sftp[10374]: received client version 3
Jun  8 12:08:01 srv internal-sftp[10374]: opendir "/"
Jun  8 12:08:01 srv internal-sftp[10374]: closedir "/"
...

Если включить ChrootDirectory все логи идут в /var/log/secure от sshd с его Level и Facility, так что разделить их по разным файлам уже не реально, вот пример
Jun  8 12:11:01 srv sshd[10825]: Accepted password for user1 from IP port 38821 ssh2
Jun  8 12:11:01 srv sshd[10825]: pam_unix(sshd:session): session opened for user user1 by (uid=0)
Jun  8 12:11:01 srv sshd[10827]: subsystem request for sftp
Jun  8 12:11:01 srv sshd[10828]: session opened for local user user1 from [IP]
Jun  8 12:11:01 srv sshd[10828]: received client version 3
Jun  8 12:11:01 srv sshd[10828]: opendir "/"
Jun  8 12:11:01 srv sshd[10828]: closedir "/"
...


Варианты которые перебрал, но ничего хорошего не получилось:
1) Наличие доп.сокета rsyslog не на что не влияет, раскидывал его чуть ли не всей файловой системе, без видимого результата.
2) Домашняя директория пользователя по сути тоже не важна, понятно, если указывать абсолютный путь в jail или %u, поэтому оставил вариант выше, как наиболее удобный... корень тоже пробовал.
3) Продвинутая скриптовая схема правил rsyslog-а (версия 5.8.10) не работает. Как вариант, можно было-бы написать например:
if $programname == 'sshd' and ($msg startswith 'open' or $msg startswith 'close' ...) then /var/log/sftp.log

На этом мои светлые идеи закончились... подскажите, пожалуйста, что я мог упустить?
  • Вопрос задан
  • 3131 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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