Android

Como configurar a cadeia sftp chroot

SFTP Server Chroot Configuration | How to Setup Chroot SFTP in Linux

SFTP Server Chroot Configuration | How to Setup Chroot SFTP in Linux

Índice:

Anonim

Neste tutorial, explicaremos como configurar um ambiente SFTP Chroot Jail que restringirá os usuários aos seus diretórios pessoais. Os usuários terão apenas acesso SFTP, o acesso SSH será desativado. Essas instruções devem funcionar em qualquer distribuição moderna do Linux, incluindo Ubuntu, CentOS, Debian e Fedora.

Criando um grupo SFTP

Em vez de configurar o servidor OpenSSH para cada usuário individualmente, criaremos um novo grupo e adicionaremos todos os nossos usuários com chroot a esse grupo.

Execute o seguinte comando groupadd para criar o grupo de usuários sftponly :

sudo groupadd sftponly Você pode nomear o grupo como quiser.

Adicionando usuários ao grupo SFTP

O próximo passo é adicionar os usuários que você deseja restringir ao grupo sftponly .

Se essa é uma nova configuração e o usuário não existe, você pode criar uma nova conta de usuário digitando:

sudo useradd -g sftponly -s /bin/false -m -d /home/username username

  • A opção -g sftponly adicionará o usuário ao grupo sftponly. A opção -s /bin/false define o shell de login do usuário. Ao definir o shell de login como /bin/false o usuário não poderá efetuar login no servidor via SSH. As opções -m -d /home/username informa ao useradd para criar o diretório inicial do usuário.

Defina uma senha forte para o usuário recém-criado:

sudo passwd username

Caso contrário, se o usuário que você deseja restringir já existir, adicione-o ao grupo sftponly e altere o shell do usuário:

sudo usermod -G sftponly -s /bin/false username2

O diretório inicial do usuário deve pertencer à raiz e ter 755 permissões:

sudo chown root: /home/username sudo chmod 755 /home/username

Como os diretórios pessoais dos usuários são de propriedade do usuário raiz, esses usuários não poderão criar arquivos e diretórios em seus diretórios pessoais. Se não houver diretórios na página inicial do usuário, você precisará criar novos diretórios aos quais o usuário terá acesso total. Por exemplo, você pode criar os seguintes diretórios:

sudo mkdir /home/username/{public_html, uploads} sudo chmod 755 /home/username/{public_html, uploads} sudo chown username:sftponly /home/username/{public_html, uploads}

Se um aplicativo Web estiver usando o diretório public_html do usuário como raiz do documento, essas alterações poderão levar a problemas de permissão. Por exemplo, se você estiver executando o WordPress, precisará criar um pool PHP que será executado como o usuário proprietário dos arquivos e adicionar o webs erver ao grupo sftponly .

Configurando SSH

O SFTP é um subsistema do SSH e suporta todos os mecanismos de autenticação SSH.

Abra o arquivo de configuração SSH /etc/ssh/sshd_config com seu editor de texto:

sudo nano /etc/ssh/sshd_config

Procure a linha que começa com o Subsystem sftp , geralmente no final do arquivo. Se a linha começar com um hash # remova o hash # e modifique-o para ter a seguinte aparência:

/ etc / ssh / sshd_config

Subsystem sftp internal-sftp

No final do arquivo, o seguinte bloco de configurações:

/ etc / ssh / sshd_config

Match Group sftponly ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no

A diretiva ChrootDirectory especifica o caminho para o diretório chroot. %h significa o diretório inicial do usuário. Esse diretório deve ser de propriedade do usuário root e não pode ser gravado por nenhum outro usuário ou grupo.

Tenha muito cuidado ao modificar o arquivo de configuração SSH. A configuração incorreta pode causar falha no serviço SSH.

Quando terminar, salve o arquivo e reinicie o serviço SSH para aplicar as alterações:

sudo systemctl restart ssh

No CentOS e no Fedora, o serviço ssh é chamado sshd :

sudo systemctl restart sshd

Testando a configuração

Agora que você configurou o chroot do SFTP, pode tentar efetuar login na máquina remota através do SFTP usando as credenciais do usuário chrootado. Na maioria dos casos, você usará um cliente SFTP da área de trabalho como o FileZilla, mas neste exemplo, usaremos o comando sftp.

Abra uma conexão SFTP usando o comando sftp, seguido pelo nome de usuário do servidor remoto e o endereço IP ou o nome de domínio do servidor:

sftp [email protected]

Você será solicitado a inserir a senha do usuário. Uma vez conectado, o servidor remoto exibirá uma mensagem de confirmação e o prompt sftp> :

[email protected]'s password: sftp>

Execute o comando pwd , conforme mostrado abaixo, e se tudo estiver funcionando conforme o esperado, o comando retornará / .

sftp> pwd Remote working directory: /

Você também pode listar os arquivos e diretórios remotos usando o comando ls e deverá ver os diretórios que criamos anteriormente:

sftp> ls public_html uploads

Conclusão

Neste tutorial, você aprendeu como configurar um ambiente SFTP Chroot Jail no servidor Linux e restringir o acesso do usuário ao diretório inicial.

Por padrão, o SSH escuta na porta 22. Alterar a porta SSH padrão adiciona uma camada extra de segurança ao servidor, reduzindo o risco de ataques automatizados. Você também pode configurar uma autenticação baseada em chave SSH e conectar-se ao servidor sem inserir uma senha.

segurança ssh sftp