Protegendo o sistema de arquivos para um servidor SFTP seguro

12

Isso pode não parecer uma questão de desenvolvimento, mas em essência é. Deixe-me explicar como. Nosso foco principal de desenvolvimento são as páginas de conteúdo dinâmico. Alguns de nossos clientes nos solicitaram espaço em nossos servidores (que eles pagam) por seu antigo conteúdo estático. Usamos para fazer isso fornecendo ao cliente uma conta ftp para um domínio diferente. (por exemplo, o domínio do cliente é customer.com, mas eles estavam acessando seu conteúdo estático em otherdomain.com/customerstatic).

Agora queremos aumentar a segurança, fornecendo aos clientes contas sftp em seus servidores linux. Estou usando o openssh / sftp-server em seu ambiente shell para que eles não consigam efetuar login ou executar comandos.

O problema é que, por natureza, muitos arquivos do sistema de arquivos são por padrão (drwxr-xr-x), o que significa que qualquer usuário poderá ler o conteúdo do diretório e, possivelmente, alguns arquivos. Eu não acho que alterar todo o sistema de arquivos para -rwxr-x - x é uma jogada inteligente, pois não sei quantos arquivos de sistema precisarão dessa permissão de leitura.

Alguém já enfrentou esse problema no passado. Se você tem, você poderia esclarecer o caminho?

obrigado

anon
fonte
Boa pergunta e resposta completa concisa - um moderador provavelmente deve alterar o título e transformá-lo em uma pergunta que não é da wiki.
25769 MikeyB
não é possível remover o wiki de uma pergunta; desculpe
Jeff Atwood

Respostas:

22

SFTP por natureza não é inseguro; deixando-os em todo o sistema de arquivos. Verifique isso para ver como você pode habilitar o acesso SFTP em uma base chroot , que bloqueará os diretórios aos quais eles podem acessar, por exemplo, seus diretórios pessoais ou onde você quiser que eles carreguem.

No Linux, eu prestaria atenção a esta parte (configurando / etc / ssh / sshd_config):

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

Isso significa que qualquer pessoa no grupo de usuários 'sftponly' estaria restrita aos seus diretórios pessoais.

Veja o link para mais informações e leia também a página de manual sshd_config. Espero que ajude.

Josh K
fonte
Além disso, você pode precisar dizer ao OpenSSH para usá-lo internal-sftpquando o cliente solicitar o subsistema sftp - ele pode ter sido configurado para usar o sftp-serverprograma externo . Para fazer isso, adicione ou altere a linha Subsystem sftp internal-sftpna seção principal do arquivo de configuração (não na Matchseção).
Nate
Josh, você já descobriu uma maneira de fazer isso não exigir a propriedade raiz dos diretórios pessoais dos usuários?
6119 Matt Simmons
1

Quando você diz "Muitos sistemas de arquivos são, por padrão 755 permissões", que na verdade significa o padrão umask está definido para 022. Você pode alterar esse padrão (para novos arquivos), definindo o umask para 027, o que tornaria as permissões padrão 750, ou defina o umask como 007, o que tornaria as permissões padrão 770.

Brent
fonte
0

Você pode considerar a possibilidade de configurar um servidor OpenVZ e, em seguida, criar um pequeno 'contêiner' ftp / sftp de VM separado para cada empresa. Isso mantém todos eles separados e, assim que você pega o jeito do OpenVZ, é realmente útil para esse tipo de coisa pequena.

Kyle Brandt
fonte