Acesso SFTP sem problemas

1

Estou tentando fornecer acesso a uma pasta local para alguém pela Internet. Depois de pesquisar um pouco, cheguei à conclusão de que SFTP é a coisa mais segura para expor através do firewall para o mundo caótico e maligno da Internet. Estou planejando usar o openssh-server para esse fim. Mesmo que eu acredite que o openssh irá parar um atacante aleatório, eu não tenho tanta certeza sobre a segurança do meu computador assim que alguém estiver conectado através do ssh.

Em particular, mesmo que eu não conceda privilégios à conta de usuário dessa pessoa, ele pode simplesmente "su" para, digamos, "nobody". E como eu nunca me preocupei com tais coisas antes, eu poderia ter dado alguns privilégios moderados a ninguém em algum momento (não os direitos do sudo certamente!).

Eu obviamente valorizaria seus comentários sobre dar privilégios a ninguém em primeiro lugar, mas esse não é o ponto, realmente. Meu objetivo é dar acesso ao SFTP para alguém em um estado tão restrito que eu não deveria precisar me preocupar com essas coisas (pelo menos não mais do que eu deveria ter feito antes).

Isso é realmente possível? Estou falando bobagem ou preocupado em vão?

    
por enobayram 25.06.2013 / 17:46

1 resposta

2

Provavelmente, você deseja endurecer o servidor um pouco (procure em fail2ban e altere a porta de 22 como um bom começo), mas, supondo que eu tenha lido a sua pergunta corretamente, você está olhando para chroot um usuário SFTP e limitá-los a apenas ser capaz de usar SFTP (ao contrário de executar quaisquer outros comandos)

Eu implementei isso em um dos meus servidores com o seguinte script:

echo 'CREATING USER' $1

echo 'adding user ..'
sudo useradd -d /home/$1 -s /usr/lib/sftp-server -M -N -g sftponly $1
echo '..done'

echo '--------------'
echo 'set a password'
sudo passwd $1

echo 'creating dir structure ..'
sudo mkdir -p /home/$1/uploads /home/$1/.ssh
sudo chown $1:sftponly /home/$1/uploads /home/$1/.ssh
#
cd /home/$1
echo 'adding shares ..'
sudo mkdir -p {ebooks,misc,movies,music,tv}
echo 'ebooks' && sudo mount --rbind /home/media/ebooks /home/$1/ebooks -o ro
echo 'misc' && sudo mount --rbind /home/media/misc /home/$1/misc -o ro
echo 'movies' && sudo mount --rbind /home/media/movies /home/$1/movies -o ro
echo 'music' && sudo mount --rbind /home/media/music /home/$1/music -o ro
echo 'tv' && sudo mount --rbind /home/media/tv /home/$1/tv -o ro
#
echo '..done'

O que faz:

  1. Cria o usuário, adiciona-o ao grupo 'sftponly' e altera seu shell
  2. Cria uma estrutura de diretório para esse usuário fazer chroot em
  3. Usa o mount + rbind para montar uma árvore de arquivos existente na nova pasta equivalente de usuários (somente leitura)

Antes de usar, você precisará preparar o sistema executando o seguinte:

Adicionar um grupo

sudo addgroup sftponly

Modifique o sshd_config

/etc/ssh/sshd_config file e adicione o seguinte:

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

No mesmo arquivo, encontre a linha que lê algo como Subsystem sftp /usr/lib/openssh/sftp-server e mude para Subsystem sftp internal-sftp

Edite os shells disponíveis

sudo nano /etc/shells

adicione o seguinte na parte inferior:

/usr/lib/sftp-server
    
por 25.06.2013 / 18:03