Backup automatizado e seguro usando SSH / SCP / SFTP

São muitos os scripts de backup existentes hoje na Internet para o fim de agilizar e automatizar esse importante e muitas vezes esquecido item de Segurança da Informação. Mas poucos se preocupam em como esses dados serão enviados, podendo criar mais problemas do que solução.

[ Hits: 112.361 ]

Por: Carlos Vinícius Braga dos Santos em 29/05/2007 | Blog: http://slaypher.wordpress.com


O shell restrito chamado RSSH



Existe um shell especial que nos será muito útil, é o rssh! Com ele permitimos apenas que os usuários usem os comandos scp ou sftp, mas não tenham acesso shell diretamente pelo ssh. E se preferir, pode definir apenas que eles usem apenas o scp ou apenas o sftp.

Vale lembrar que com o rssh é permitido outros tipos de conexões como rhosts e rsync, mas não será abordado por aqui, pois não vamos utilizá-los.

Baixe o rssh no link abaixo:
Depois de fazer o download, vamos instalá-lo. Copie o arquivo para o seguinte diretório e execute os passos para instalação:

# cp rssh-2.3.2.tar.gz /usr/local/src
# cd /usr/local/src
# tar -zxvf rssh-2.3.2.tar.gz
# cd rssh-2.3.2
# ./configure
# make
# make install


Pronto! Temos agora a solução para parte dos nossos problemas, com isso não vamos mais permitir que certos usuários tenham acesso shell ao nosso sistema. Vale lembrar que o acesso shell que me refiro é o bash!

Vamos agora fazer algumas configurações e por tudo em ordem, comece logo alterando o seu shell pequeno grilo. Edite o arquivo /etc/passwd e altere a linha do seu usuário, removendo o shell de "/bin/bash" para "/usr/local/bin/rssh", deve ficar parecido com isso:

pequenogrilo:x:1001:104::/home/pequenogrilo:/usr/local/bin/rssh

Vamos então alterar algumas configurações no arquivo "/usr/local/etc/rssh.conf":

logfacility = LOG_USER
allowscp
umask = 022

Descomente ou adicione essas linhas, com isso iremos permitir apenas acesso ao comando scp e não permitiremos o sftp muito menos ssh.

Reinicie o daemon sshd com o seguinte comando:

# /etc/rc.d/rc.sshd restart

E faça um pequeno teste, tente conectar usando o cliente ssh ou sftp e veja o que acontece. Primeiro tente com o usuário mestre e depois com o seu usuário, o pequenogrilo. Lembre-se que alteramos a porta do daemon sshd para 2222 e levando em conta que o IP dessa máquina é 192.168.0.1, testemos:

Caso ele pergunte sobre a chave, digite "yes" e depois entre com a senha normalmente:

# ssh 192.168.0.1 -p 2222 -l mestre

Depois tente usando o sftp:

# sftp -oPort=2222 mestre@192.168.0.1

Agora com o pequenogrilo:

# ssh 192.168.0.1 -p 2222 -l pequenogrilo

E depois:

# sftp -oPort=2222 pequenogrilo@192.168.0.1

Veja os resultados, com o mestre você consegue acesso normalmente, mas com o pequenogrilo, ou a conexão falha, ou exibe uma mensagem do rssh dizendo que esse usuário não está autorizado a estabelecer esse tipo de conexão.

Com isso resolvemos o nosso problema de não permitir acesso ao shell pelo nosso usuário de backup, mas ainda nos deparamos com outro problema. Veremos...

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Configurando servidor SSH
   3. O shell restrito chamado RSSH
   4. Criando jaula SSH de segurança (Jail)
   5. A hora da verdade! O backup
   6. Considerações finais
Outros artigos deste autor

Você sabe o que é INODE?

Traduzir dicas e mensagens do login

Utilizando atributos em partições ReiserFS

Leitura recomendada

Vulnerabilidade em mais de 6 milhões de sites com flash

Procurando rootkits no seu sistema

Jogando pesado na segurança de seu SSH

Autenticação via hardware: o módulo pam_blue

Slackware vs PAM

  
Comentários
[1] Comentário enviado por mbsalgueiro em 29/05/2007 - 10:24h

Cara parabens pelo artigo! Gostei d+ q vou comecar a usa-lo no servidor aqui q dou suporte! =)
So me tira uma duvida eu quero aumentar o tamanho do bk eu mudo essas duas linhas neh?

if [ $(du BKP_`basename $i`_`date +%Y_D%d_M%m`.tar.gz | cut -f1) -gt 10000 ];

if [ $(du BKP_`basename $i`_`date +%Y_D%d_M%m`.tar.gz | cut -f1) -le 10000 ];

e retiro essa pq ela eh p quebrar se o bk for maior de 10Mb

split -b 10m BKP_`basename $i`_`date +%Y_D%d_M%m`.tar.gz BKP_`basename $i`_`date +%Y_D%d_M%m`.tar.gz.

vlww pela att!
abraco

[2] Comentário enviado por slaypher em 29/05/2007 - 23:30h

Olá,

Desculpe a demora para responder, e espero que o artigo junto com o script venha a ser muito útil para você.

Mas respondendo sua questão, você pode também alterar apenas os valores, caso queira um volume maior na quebra, por exemplo 50MB, basta alterar os valores para a sua necessidade ou comentar a parte da quebra dos pacotes.

[]'s

[3] Comentário enviado por cilmar_oliveira em 07/02/2008 - 22:45h

Muito útil....bom mesmo...
valew

[4] Comentário enviado por Maielo em 11/02/2008 - 17:25h

Parabéns pelo artigo, ajudou muito.


Vlw =]]

[5] Comentário enviado por marujo em 19/01/2009 - 11:24h

Irmãozinho parabéns, está muito bem elaborado e explicado...

[6] Comentário enviado por femars em 05/01/2010 - 10:38h

Mto bom, parabens!

[7] Comentário enviado por ls_ketzer em 24/03/2010 - 15:30h

Muito bom mesmo, meus parabens!!!

Feitas as devidas adaptações ta funcionando beleza...

[8] Comentário enviado por paulopmt1 em 26/06/2013 - 11:36h

Olá amigo,
este script faz verificação da data do arquivo antes de enviar (só envia se o arquivo de origem foi modificado)?

Parabéns pelo artigo!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts