Registrando a atividade do usuário do SFTP no Chrooted

1

Eu tenho tentado registrar a atividade SFTP pelo usuário do Chrooted.
Eu não consegui registrar uma única linha até agora para nenhum usuário chrooted. Para usuários regulares, funciona.

Minhas configurações atuais:

/ etc / ssh / sshd_config:

Subsystem sftp internal-sftp -f AUTH -l VERBOSE

ClientAliveInterval 180
PasswordAuthentication no

Match Group sftpclients
ChrootDirectory /home/sftp/%u
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp -f AUTH -l VERBOSE

/etc/rsyslog.conf:

$AddUnixListenSocket        /home/sftp.log.socket
$AddUnixListenSocket        /home/sftp/dev/log.socket
$AddUnixListenSocket        /home/sftp/user1/dev/log.socket
$AddUnixListenSocket        /home/sftp/user2/dev/log.socket

:programname, isequal, "internal-sftp" -/var/log/sftp2.log
:programname, isequal, "internal-sftp" ~

/etc/rsyslog.d/sftp.conf:

 input(type="imuxsock" Socket="/home/sftp/log2.socket" CreatePath="on")
 if $programname == 'internal-sftp' then /var/log/sftp3.log

Cada usuário tem seu diretório // dev / ligado a / dev: mount --bind /dev /home/sftp/<user>/dev , bem como os soquetes definidos em rsyslog.conf / sftp.conf

Pergunta Eu tentei basicamente todas as sugestões que encontrei, o que poderia estar faltando na minha configuração para registrar usuários de chroot?

    
por Jeppe 16.10.2017 / 09:24

1 resposta

1

Sua suposição de que /dev/log é um arquivo que pode ser compartilhado via bind-mounting /dev é incorreto para a maioria das distribuições de Linux modernas usando systemd . Portanto, montar seus sistemas /dev em seu chroot tem pouco valor.

$ file /dev/log
/dev/log: symbolic link to /run/systemd/journal/dev-log

Como / run não está disponível como no chroot ( e não deve ser ), o sftp-server tentando gravar em /dev/log considerará um link simbólico quebrado.

Em vez disso, use input(type="imuxsock" Socket="/opt/bindmount/dev/log") para criar um soquete adicional (que você pode vincular a montar, de modo que todos os chroots o vejam em /dev/log ).

Você geralmente não deve compartilhar o acesso /dev completo ao chroot de qualquer maneira, o ponto inteiro do chroot é limitar a superfície de ataque.

Bônus: Você pode escrever sua configuração /etc/rsyslog.d/10-sftp.conf como esta (filtrar por "nome do host", que você pode escolher arbitrariamente)

input(type="imuxsock" Socket="/opt/bindmount/dev/log", HostName="sftp")
if $hostname == 'sftp' then /var/log/sftp.log
&stop

Isso significa que, se você implantar outros chroots, limitados a outros comandos (como git-shell ), ainda poderá ter todas as mensagens do chroot no mesmo local, mesmo que outros programas gravem em /dev/log .

    
por 16.10.2017 / 12:23