Criando usuários SFTP e jailing 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 de SFTP e prendê-los ao diretório home chroot do próprio usuário, mas temo que eu esteja fazendo uma bagunça disso.

Eu tentei muitas coisas, muitas para listar aqui, já que a maioria provavelmente está incorreta ou não faz muito sentido, mas o que eu sinto 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 pessoal: -

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

Defina uma senha para o usuário: -

passwd dummyuser

Altere o grupo do usuário para 'sftp': -

usermod -g sftp dummyuser

Defina o shell do usuário como /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 ao final do arquivo sshd_config : -

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

Asseguro que todos os diretórios a seguir sejam root:root : -

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

Se eu tentar efetuar login 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 em seu diretório pessoal. Eu também tenho vsftpd configurado e configurado. Os usuários podem logar bem, mas teriam acesso a todo o servidor - eu só não consegui fazer com que a prisão funcione.

Editar

Esqueci de mencionar que reiniciei sshd também: -

service sshd restart

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

Resultados do registro

/var/log/secure

Substitui o nome real do servidor 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
    
por zigojacko 28.04.2014 / 16:20

2 respostas

14

É uma armadilha comum:
Todas as pastas até o chroot home devem ser de propriedade e só podem ser gravadas por root user.
As pastas não podem ser graváveis em grupo - mesmo que o grupo seja root .

    
por 28.04.2014 / 17:05
5

Encontrei e configurei com sucesso o sftp no CentOS 6.5: link

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 sftp-only com o GID 500):

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

(eu uso vazio o / etc / skel2 para que nenhum .bashrc 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 dar acesso seguro a empresas de consultoria externas que gerenciam sites. Você poderia depois de criar tudo isso:

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. link

    
por 04.09.2014 / 15:45