Como proteger o SFTP sem recompilar o OpenSSH?

2

Eu imagino que muitos de vocês têm ambientes de produção e a opção de recompilar um pacote de software como o OpenSSH, que é amplamente usado, não é uma opção, pelo menos o tempo todo. A solução em Protegendo o SFTP requer que você reconstrua o OpenSSH pelo menos para o CentOS_5 .1.

Eu esperava outra forma de impedir que meus usuários finais (usando o sftp) não vissem outros diretórios além da pasta permitida. Semelhante ao modo de isolamento no servidor FTP do Windows.

Depois de várias pesquisas no Google, pensei em procurar aqui, mas nada que encontrei além do post acima. Alguma idéia?

    
por Geo 28.05.2009 / 15:28

7 respostas

0

Eu tento ter código aberto antes de recomendar ou mesmo considerar uma versão de software paga. Não estou de forma alguma relacionada com esta recomendação, é apenas baseada nas minhas necessidades. Passei muito tempo tentando encontrar a solução certa para minhas necessidades. As opções que experimentei foram:

  • Instalando o OpenSSH 4.9 ou superior que não funcionou bem por muitos motivos técnicos.
  • rssh de pizzashack.org
  • jailkit
  • e o tutorial Debian mencionado aqui.

Tenho certeza de que todas as soluções acima funcionam bem, mas elas não atenderam aos meus requisitos para este projeto. Um que não é gratuito é o servidor Vshell da VanDyke. Foi fácil de instalar (pelo menos a versão de avaliação) e super fácil de configurar o acesso de chroot aos meus usuários.

Agora, meus usuários sftp ou scp verão apenas o diretório inicial e não poderão executar nada. É fácil manter apenas adicionar usuários a um grupo e atribuir-lhes um diretório inicial.

    
por 28.05.2009 / 23:40
5
  • O OpenSSH suporta configuração condicional com base em usuário, grupo ou endereço
  • O OpenSSH também possui um servidor sftp integrado que não depende do chroot para configuração, bibliotecas, etc.

Este método não requer manutenção extra para o chroot!

Também é mais seguro porque não são necessários executáveis ou bibliotecas dentro da cadeia.

Anexe ao seu sshd_config:

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

Os usuários do grupo mysftpgroup UNIX não devem poder usar nenhum outro serviço SSH que o SFTP. Claro, verifique isso para sua configuração específica!

Observe que uma "seção" de correspondência é terminada por uma nova seção Correspondência ou pelo término do arquivo de configuração. Veja man sshd_config para outras opções. Pesquisando na página man pode gerar uma versão desatualizada.

    
por 23.08.2010 / 17:34
3

Se eu tiver a sua pergunta certa, você pode fazer isso com os arquivos de configuração. Veja esta questão do ServerFault para obter ajuda sobre como configurar o chroot na configuração. O conjunto de ferramentas OpenSSH viu algumas opções realmente interessantes ultimamente disponíveis nas configurações. Vale muito a pena ler os manuais e o FAQ , mesmo que você os tenha lido há um ou dois anos.

Quando você precisa recompilar o OpenSSH para obter segurança? O histórico do OpenSSH para segurança é algo que outros projetos (mesmo aqueles relacionados à segurança) só podem sonhar. Cuidado com os patches de terceiros pensando que eles vão melhorar a segurança no OpenSSH. Não se esqueça da brincadeira do Debian.

    
por 28.05.2009 / 17:53
1

Restringir o acesso para usuários de SFTP não deve exigir a recompilação do openssh.

Você deve ser capaz de definir suas permissões de diretório base e umask de forma que o usuário possa ver apenas seu próprio diretório inicial.

É claro que os usuários poderão ver (mas não modificar) muitos arquivos de sistema também. Se você está querendo restringir até mesmo isso, eu acho que você pode fazer sessões sftp em uma jail .

    
por 28.05.2009 / 15:48
1

Eu percebo que você foi com Vshell, mas eu tive muita sorte usando scponly. Não tenho certeza sobre o CentOS, mas há um pacote Debian que é muito fácil de usar:

sudo aptitude install scponly
sudo dpkg-reconfigure scponly
cd /usr/share/doc/scponly/setup_chroot/
sudo gunzip setup_chroot.sh.gz
sudo chmod +x setup_chroot.sh
sudo ./setup_chroot.sh #this creates the user and home dir
mkdir /home/<user>/dev
mknod -m 666 /home/<user>/dev/null c 1 3 #apparently there's a bug in setup_chroot.sh
    
por 29.05.2009 / 00:57
0

Acho que você está falando sobre dois tipos diferentes de segurança aqui.

O primeiro, que requer recompilação (ou instalação de um binário empacotado) é a segurança de comunicação de ponta a ponta. Tudo o que você fizer no servidor com relação aos arquivos / pastas que um usuário pode acessar não protegerá as comunicações entre o cliente-servidor. Na verdade, se você não mantém o Openssh atualizado, existe a possibilidade de que alguém possa usá-lo como um vetor de ataque para entrar em seu servidor.

O segundo é a segurança de arquivos / pastas. Você pode restringir as configurações da pasta (chroot ou modo de isolamento) e isso restringirá os arquivos que podem ser acessados pelo usuário conectado. Observe que isso não ajuda a proteger as comunicações reais dos arquivos.

Espero que ajude!

    
por 28.05.2009 / 16:31
0

O que você está procurando é um chroot, também conhecido como prisão. A configuração pode ser um pouco complexa, e é improvável que as ferramentas necessárias existam em forma de pacote nos repositórios padrão do CentOS. No entanto, aqui está um tutorial debian que usei antes, ele deve colocá-lo no caminho certo: www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-ssh-env.en.html

    
por 28.05.2009 / 17:13