Debian rsyslog不发出任何日志

Debian rsyslog不发出任何日志,debian,sftp,Debian,Sftp,在本教程之后,我尝试在Debian2.5上记录chroot用户的sftp访问和操作 到目前为止,我还做不到 /etc/rsyslog.d/sftp.conf module(load="imuxsock") input(type="imuxsock" Socket="/var/ftp/userA/dev/log" CreatePath="on") input(type="imuxsock" Socket="/var/ftp/userB/dev/log" CreatePath="on") if $

在本教程之后,我尝试在Debian2.5上记录chroot用户的sftp访问和操作

到目前为止,我还做不到

/etc/rsyslog.d/sftp.conf

module(load="imuxsock")
input(type="imuxsock" Socket="/var/ftp/userA/dev/log" CreatePath="on")
input(type="imuxsock" Socket="/var/ftp/userB/dev/log" CreatePath="on")

if $programname == 'internal-sftp' then /var/log/sftp.log
& stop
套接字(与userB相同):

我将日志文件放在777中以确保它不是权限问题

ls /var/log/sftp.log  -lha
-rwxrwxrwx 1 root root 0 May 31 14:50 /var/log/sftp.log
/etc/ssh/sshd\u配置

Subsystem sftp internal-sftp -l INFO -f AUTH
Match Group ftpusers
    ChrootDirectory %h
    ForceCommand internal-sftp -u 0002
    AllowTcpForwarding no
    PermitTunnel no
    X11Forwarding no
然后

我在/var/log/messages或/var/log/syslog中找不到任何有用的内容

请帮忙


谢谢

这显然是错误的,永远不会是真的:

if $programname == 'internal-sftp' then /var/log/sftp.log
内部sftp
只是
sshd\u config
中的一个占位符。运行sftp服务器的实际程序仍然是
sshd

如果要区分
sftp
日志,需要使用syslog工具(
-f
切换到
内部sftp
),但我不确定Debian是否支持此设置(该过程在chroot中,因此您无法访问
/dev/log
中的日志套接字).

注意:从2019年开始,Ubuntu 18.04有一个不允许rsyslog创建自定义日志的版本。相反,所有日志记录都转到
/var/log/syslog

因此,我采取的解决措施是:

  • 正确设置SSHD上的SFTP
  • 设置您需要的Chroot目录,例如
    /home/sftp/$DIR\u Chroot…
  • chroot用户的Creage组,例如
    groupadd sftpgroup
    在SSHD配置中,确保使用设施LOCAL7和日志级别信息
  • 为Chroot用户日志创建套接字非常重要
    sudo mkdir-p/home/sftp/$DIR\u Chroot/dev
  • 授予权限
    sudo chmod 755/home/sftp/$DIR\u CHROOT/dev
  • 创建一个虚拟文件
    sudotouch/home/sftp/$DIR\u CHROOT/dev/log
  • Configure Rsyslog>创建一个自定义文件,用于处理在上述步骤中创建的SFTP日志套接字
  • 添加Unix侦听套接字
  • 重新启动服务
  • 如果ChRooted用户不存在,则创建这些用户
  • 调试

    sudo service ssh status && sudo service rsyslog status
    # you should see the file Operations
    sudo less /var/log/syslog
    sudo less /var/log/sftp.log
    


    请将您的问题移至(在此处删除,在此处重新发布)。就是这样。这就是整个想法,创建一个套接字以便chroot用户可以写入,通过一些rsyslog魔术,它可以将它写入/var/log/syslog,有很多教程说可以通过这种方式(或使用传统rsyslog指令)来完成,我使用-f,请考虑再次阅读我的设置…子系统SFTP内部SFFT-L信息-F Author,<代码> FraceCoMMand内部SFFT-U 0002 < /代码>…哪一个是有效的?有几个错误阻止此日志记录工作。确保您拥有最新的OpenSSH…升级OpenSSH sftp服务器不会改变任何内容
    if $programname == 'internal-sftp' then /var/log/sftp.log
    
    Subsystem sftp internal-sftp -f LOCAL7 -l INFO
    Match group sftpgroup
        ChrootDirectory /home/sftp/$DIR_CHROOT...
        X11Forwarding no
        AllowTcpForwarding no
        ForceCommand internal-sftp -f LOCAL7 -l INFO
    
    # Create socket within chrooted directories to allow for logging. You could try commented options below but in ubuntu 18.04 they are useless and everything goes to `syslog`
    
    $AddUnixListenSocket /home/sftp/$DIR_CHROOT/dev/log
    
    # Other Folder
    #$AddUnixListenSocket /home/sftp/other
    
    # Parse the data logged at level INFO and facility LOCAL7 into /var/log/sftp.log
    # LOCAL7.info /var/log/sftp.log
    
    # Report logins and logoffs
    # :syslogtag,startswith,"sftp-server" /var/log/sftp.log
    
    
    sudo service ssh restart && sudo service rsyslog restart
    
    sudo service ssh status && sudo service rsyslog status
    # you should see the file Operations
    sudo less /var/log/syslog
    sudo less /var/log/sftp.log