Criando usuários SFTP e fazendo o encarceramento para chroot no CentOS - erro de autenticação do usuário

18

Eu tenho uma versão 6.4 do CentOs com a Digital Ocean e gostaria de criar com sucesso usuários SFTP e prendê-los no diretório home chroot do próprio usuário, mas temo estar fazendo uma bagunça nisso.

Eu tentei muitas coisas, muitas para listar aqui, na verdade a maioria provavelmente está incorreta ou não fará muito sentido, mas o que eu acho que deve ser o processo correto e o que eu tentei é: -

Crie um grupo para sftp: -

groupadd sftp

Crie um usuário e defina seu diretório inicial: -

useradd -d /var/www/vhosts/domain.com dummyuser

Defina uma senha para o usuário: -

passwd dummyuser

Mude o grupo de usuários para 'sftp': -

usermod -g sftp dummyuser

Defina o shell do usuário para /bin/false: -

usermod -s /bin/false dummyuser

Editar subsistema em sshd_config( /etc/ssh/): -

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Adicione o seguinte na parte inferior do sshd_configarquivo: -

Match group sftp
    X11Forwarding no
    ChrootDirectory %h
    AllowTcpForwarding no
    ForceCommand internal-sftp

Verifique se todos os seguintes diretórios são root:root: -

/var
/var/www
/var/www/vhosts
/var/www/vhosts/domain.com

Se eu tentar fazer logon no servidor via SFTP com o usuário dummyuser(no WinSCP), obtenho o seguinte: -

Authentication log (see session log for details):
Using username "dummyuser".

Authentication failed.

Tudo o que quero alcançar é prender um usuário ao diretório inicial. Eu também tenho o vsftpd instalado e configurado. Os usuários podiam fazer login corretamente, mas teriam acesso a todo o servidor - eu simplesmente não consegui fazer com que a prisão funcionasse.

Editar

Esqueci de mencionar, então reiniciei sshdtambém: -

service sshd restart

Quando o erro é produzido no WinSCP, sua página de ajuda está aqui .

Resultados do registro

/var/log/secure

Substituí o nome do servidor real por server_name.

 Apr 28 14:20:56 server_name sshd[9944]: Accepted password for dummyuser from 80.194.255.4 port 44402 ssh2
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session opened for user dummyuser by (uid=0)
 Apr 28 14:20:56 server_name sshd[9946]: fatal: bad ownership or modes for chroot directory component "/var/www/vhosts/"
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session closed for user dummyuser
zigojacko
fonte
Você reiniciou sshd? O que há nos arquivos de log no servidor?
faker
Sim, desculpe, esqueci de adicionar isso ao final da minha pergunta (incluirá agora). Qual arquivo de log (e local) devo procurar porque não encontrei um arquivo de 'log de sessão' até agora? Obrigado.
Zigojacko
Você vai querer dar uma olhada /var/log/secure.
faker
Excelente, obrigado - isso ajuda (atualizando a pergunta com entradas de log).
Zigojacko
fatal: propriedade inadequada ou modos para o componente de diretório chroot "/ var / www / vhosts /" algo como esse que eu suspeitava, mas vhostsé root:root.
Zigojacko

Respostas:

14

É uma armadilha comum:
todas as pastas até a casa do chroot devem ser de propriedade e graváveis ​​apenas pelo rootusuário.
As pastas não podem ser graváveis ​​em grupo - mesmo que o grupo seja root.

falsificador
fonte
4
Eu só aprendi um truque para verificar isso convenientemente:namei -l /var/www/vhosts
clockworkgeek
5

Encontrei e configurei com êxito o sftp no CentOS 6.5: http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

Edite a configuração do sshd:

vim / etc / ssh / sshd_config

#Subsystem      sftp    /usr/libexec/openssh/sftp-server (comment out the default with "#")

add:

Subsystem sftp internal-sftp
Match Group sftp-only
ChrootDirectory /var/www/%u
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

Saia e salve.

Então:

mkdir /etc/skel2
groupadd sftp-only
getent group |grep sftp-only  (take note the GID (Group ID).  Here, in my example it's 500)

Para um novo usuário chamado "testuser" (membro do grupo somente sftp com GID 500):

useradd --base-dir /var/www --gid 500 --skel /etc/skel2 --create-home --shell /sbin/nologin testuser

(eu uso / etc / skel2 vazio, para que nenhum .bashrc etc seja copiado por padrão pelo CentOS)

mkdir -p /var/www/testuser/home/testuser

chown root:sftp-only /var/www/testuser
chmod 750 /var/www/testuser

chown root:root /var/www/testuser/home
chmod 755 /var/www/testuser/home

chown testuser:sftp-only /var/www/testuser/home/testuser
chmod 770 /var/www/testuser/home/testuser

Portanto, neste exemplo, consegui conceder acesso seguro a empresas de consultoria externas que gerenciam sites. Depois de criar tudo isso, você poderia:

mkdir /var/www/testuser/home/testuser/www.somesite.com
chown testuser:apache /var/www/testuser/home/testuser/www.somesite.com
chmod xxx (permissions to the website as needed, usually 750 so apache would get read access)

Pode-se ajustar tudo isso conforme necessário.

Espero que isso tenha ajudado!

Guy Boisvert IngTegration inc. http://www.ingtegration.com

Guy Boisvert
fonte
Bem-vindo à falha do servidor! Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Masegaloeh 04/04
11
Desde que você alterou a configuração do sshd, eu sugiro que você o reinicie:service sshd restart
Loïc