Evite ser bloqueado ao configurar o SSH e o iptables [duplicado]

7

Quando você está configurando iptables ou SSH sobre SSH e o data center está a milhares de quilômetros de distância (e conseguir alguém para conectar um KVM é difícil), quais são algumas práticas padrão para evitar o travamento de si mesmo?

    
por user36976 30.05.2014 / 10:46

3 respostas

17

Houve uma pergunta semelhante Configurar o iptables por SSH sem ficar bloqueado?

Eu posto aqui as dicas que dei na pergunta anterior:

1) Eu faço backup do arquivo de configuração antigo do iptables:

cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak

2) Antes de tentar as novas configurações, execute este comando para garantir que você possa se conectar novamente se algo nas novas configurações bloquear (basicamente substitui as regras antigas após 5 minutos):

echo "mv /etc/sysconfig/iptables.bak /etc/sysconfig/iptables && service iptables restart" | at now + 5min

3) Agora você pode modificar com segurança as regras do iptables. Se algo der errado, você pode se conectar em 5 minutos.

    
por 30.05.2014 / 10:54
1

Se você precisar modificar a configuração do SSH, por exemplo, em /etc/ssh/sshd_config : deixe uma sessão aberta em outro terminal. Isso geralmente permanecerá aberto, mas é claro que você pode usar um truque similar como no post do @ shardan para a configuração do SSH também.

    
por 30.05.2014 / 11:01
0

Outra maneira de garantir que você tenha acesso é usar o sinalizador -R do ssh no servidor remoto:

/usr/bin/ssh -R 55555:localhost:22 [email protected]

A partir do seu.otherserver.com você pode agora logar na máquina remota usando:

ssh localhost -p 55555

Para garantir que não fique bloqueado por mais de 5 minutos, executo uma tarefa do cron que executa o seguinte script de shell no servidor remoto:

#! /bin/sh 
GREPSSH=$(ps ax|grep serverkey|awk -F ' ' '{print $1}')
if [ "$GREPSSH" -eq NULL ]
then
echo "no sshlink \n"
/usr/bin/ssh -nNT -i ~/.ssh/serverkey -R 55555:localhost:22 -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes [email protected] &
else echo $GREPSSH
exit 1
fi

Este script:

  • verifica se o ssh de saída está sendo executado
  • se não for iniciado com várias opções (-nNT e -o) e o -R para encaminhamento de porta para o servidor remoto
  • usa uma chave de identidade ssh (-i) para permitir o login sem uma senha your.otherserver.com

Eu descobri que esta é uma ferramenta útil para voltar às máquinas remotas: ~)

    
por 31.05.2014 / 00:33