domingo, 25 de outubro de 2009

Alterando ou Desabilitando as Mensagens do SSH

O SSH é um excelente mecanismo para acessar remotamente uma máquina. Seguro, rápido, eficiente. Tão eficiente que pode ser utilizado para outros fins, como o tunelamento via SSH para o SVN, um sistema de controle de versão, ou mesmo para tunelar o protocolo do X11 e exportar o modo gráfico da máquina remota para a máquina cliente.
Por padrão, o SSH normalmente imprime uma série de mensagens no momento do acesso. Estas mensagens variam de máquina para máquina e de distribuição para distribuição, mas podem ser todas removidas ou alteradas. Em alguns casos, é imperativo a sua remoção, como quando se utiliza o SSH para tunelar o SVN, com o esquema "svn+ssh". A não remoção destas mensagens causa erros no protocolo do SVN, que não consegue "entender" os dados da mensagem, (que, obviamente, não fazem sentido para ele), e normalmente imprime uma mensagem de erro como "svn: Malformed network data".
Então, como mudo ou removo as mensagens do SVN?? Muito simples, basta seguir os passos:

1- Logue-se como root e edite o arquivo abaixo:

vi /etc/ssh/sshd_config


A primeira coisa que se pode editar é a mensagem de "Banner". Procure a linha:

Banner etc/issue.net


Para eliminar a mensagem, basta comentar esta linha (colocando a tralha - "#" - na frente). Outra opção é editar o arquivo de mensagem que a linha referencia (no exemplo acima, o arquivo /etc/issue.net) e modificá-lo, alterando a mensagem ou deixando-o vazio.

Mas não é só isso!!
Muitas vezes, o ssh imprime a informação de data e hora do último login. Esta informação é particularmente útil e importante para controle e segurança do acesso. No entanto, pode ser um pé-no-saco para tunelamento de SVN pelo esquema svn+ssh. Para removê-la, ainda no mesmo arquivo, procure a opção "PrintLastLog yes" e modifique-a para:

PrintLastLog no


Apenas isto elimina todas as mensagens em algumas distribuições. Porém, outras distros têm mensagens de sistema que costumam aparecer em ocasiões como o login do ssh. Estas mensagens podem ser encontradas no arquivo:

/etc/motd


Se este arquivinho existir, ele deve conter apenas texto estático que é copiado para o stout no momento do login (na verdade, ele pode ser um link simbólico para /var/run/motd); para eliminar o texto, basta editar o arquivo e apagar todas as linhas, ou apagar o arquivo de link simbólico.

Importante: não esqueça de reiniciar o sshd para que as mudanças tenham efeito:

/etc/init.d/ssh restart


Outra coisa importante é sempre fazer backup dos arquivos de configuração que você modificar, caso precise retroceder as alterações!!


  • Aprimorando a Segurança do SSH

Independente do que foi comentado acima, você pode - e muitas vezes deve!! - adotar algumas medidas de segurança que vão garantir a sua paz e tranquilidade, ainda que seu SSH não tenha mensagens de Last Log, etc.
A primeira coisa a fazer é abrir o arquivo "/etc/ssh/sshd_config" e adicionar (ou configurar) as seguintes linhas:

Port 10000 - Esta linha identifica a porta que vai ser usada tanto para o ssh quanto para o sftp. A porta padrão é "22", então não preciso nem dizer que 99,9% dos ataques vão direto para esta porta. Troque a porta para qualquer outra. No exemplo, coloquei a porta 10000. Portas altas tendem a ser mais seguras.

PermitRootLogin no - Este é o essencial do essencial... nunca permita o login do root. Você pode administrar o que quiser remotamente se você logar como um usuário comum e se tornar root posteriormente, com o comando "su". Não permita que o root fique propenso a ataques!!

AllowUsers beltrano cicrano - Este é um comando de white list (lista branca). Permite que você configure exatamente e exclusivamente quem pode conectar. Se esta linha estiver presente, um usuário que não contiver seu nome ali jamais será autorizado a conectar. É uma técnica muito restritiva, mas útil em muitos casos.

PermitEmptyPasswords no - Este é outro comando essencial do essencial... nunca permita que um usuário maluco defina sua senha como vazia e deixe sua conta exposta ao acesso remoto... virtualmente qualquer um poderá conectar como este usuário e ele poderá ser usado para ataques contra o root ou para derrubar a máquina!!

X11Forwarding no - A menos que você tenha a intenção (e necessidade!!!) de rodar o modo gráfico remotamente, defina este comando como "no". Se for "yes", você poderá tunelar via ssh o modo X, rodando remotamente qualquer programa com interface gráfica, que será exportada para a sua máquina local. Isso é uma ótima idéia dentro de uma intranet, mas pela internet é péssimo. O protocolo X não é comprimido nem foi desenvolvido para acesso remoto e, por isso, é lento e complicado... liberar o X para os usuários implica em correr sério risco de engarrafar a sua rede por excesso de carga!!

Bom, espero ter ajudado!! E, claro, COMENTE!!!

2 comentários:

Wagner disse...

legal, parabens!!!!

O Pajé disse...

Obrigado, Wagner!! Fico feliz de ter ajudado!! Volte sempre!!