Eu acidentalmente proíbo a conexão SSH com um servidor remoto ... O que vem a seguir?

61

Digamos novamente: todos cometemos erros , e eu acabei de cometer um.

Uma breve história: eu estava fazendo algumas coisas em um VPS (Debian) que estou alugando, quando notei algum comportamento estranho. Usando o netstatcomando, vi uma conexão não autorizada através do SSH. Como não sabia o que fazer, decidi encerrar sua conexão usando iptables:

iptables -A INPUT -p tcp --dport ssh -s IP -j DROP

Mas estou cansado e escrevi

iptables -A INPUT -p tcp --dport ssh -j DROP

e eu me chutei (e todos os outros) ...

Como faço para corrigir isso?

tomatoGuy
fonte
11
não, porque ele está bloqueando todos os pacotes ssh na máquina. em uma sub-rede configurada incorretamente, você apenas tcpdump para esse endereço mac, obtém a sub-rede em que está configurando e, em seguida, configura um nic virtual para a mesma sub-rede e conversa com ela.
Jfalcon aka Don Fanning
50
Bem, você certamente removeu o acesso do indivíduo não autorizado, pelo menos.
um CVn
2
Para a próxima vez, talvez a troca de um morto fosse útil.
Wayne Conrad
2
Quem é o seu anfitrião? Muitos hosts de VM oferecem um console serial que permite o SSH nos casos em que você não consegue de um local remoto.
26615 Jon

Respostas:

60

Existem várias alternativas:

  • Veja se eles têm acesso IPMI / "KVM" / console ao servidor, o que permite controlá-lo como se você tivesse um teclado físico conectado a ele.
  • Se eles não oferecerem isso, veja se você pode inicializar a VM em um CD do linux de recuperação (alguns provedores oferecem isso) e, em seguida, corrija as regras de firewall dessa maneira e, em seguida, inicialize normalmente.
  • Se você não tiver acesso ao console, antes de inicializar para recuperação ou anexar o volume a outra VM (como no caso da Amazon, credite a resposta de user3550767), tente a resposta de Ankh2054 de reinicialização primeiro se você não salvou as regras ( provavelmente o caso desde que você se expulsou antes de ter a chance de salvar). Use o painel de controle ou peça a alguém para fazer o ciclo de energia usando uma redefinição / desligamento não normal (também conhecido como reinicialização forçada ou desligamento forçado), caso o script init salve as regras automaticamente ao reiniciar normalmente (credit @jfalcon, @joshudson).

    Considere as desvantagens disso (como os dados sendo gravados durante a reinicialização podem ser perdidos e a verificação do sistema de arquivos pode ser necessária na inicialização, portanto, o tempo de inicialização é maior, embora esse atraso possa ser menor do que a inicialização na recuperação).

g491
fonte
11
dependendo do servidor vps, pode não haver um acesso remoto que ele possa acessar. sistemas como vmware, kvm, xen, etc. possuem consoles, mas não são configurados para consumo público. fecha que permite que essa forma de controle público seja aberta.
Jfalcon aka Don Fanning
4
Dito isto, se estiver no espaço amazon / google, ele poderá capturar a unidade e montá-la de outra máquina virtual para fazer a correção.
Jfalcon aka Don Fanning
47

Se você ainda não salvou a regra IPtables, poderá reiniciar o servidor no VPS (se disponível) e a regra deverá desaparecer.

Ankh2054
fonte
a menos que o script init salve as tabelas de ip durante o desligamento.
Jfalcon aka Don Fanning
3
@jfalcon: É por isso que você pode pedir que puxem o plug virtual.
Joshudson
22
@jfalcon É também por isso que é uma má idéia salvar automaticamente no desligamento ... tomar a decisão de salvar uma decisão consciente do administrador de sistemas, não algo executado cegamente pelo sistema.
um CVn
@joshudson: Você precisa dizer ao macaco de reinicialização exatamente o que fazer e forçar o desligamento. Não basta iniciar um desligamento.
Jfalcon aka Don Fanning
@ MichaelKjörling: Essa filosofia também está errada. Este é um VPS tão provável que ele esteja aplicando sandbox em seus aplicativos e ele não tem controle sobre quem aciona o interruptor. E você não tem idéia de como a hospedagem VPS configurou suas compilações. Não há nada errado em salvar no desligamento. O erro dele foi o erro dele. A atitude inteligente em primeiro lugar seria colocar o SSH em uma porta não padrão ou usar o fail2ban em vez de reagir com uma reação de pânico.
Jfalcon aka Don Fanning
30

É para isso que servem as linhas de ajuda com pessoal humano. Ligue para o provedor de serviços e peça a um de seus operadores remover a regra para você.

RobertG
fonte
3

Uma maneira geral de corrigir uma instância quebrada é desligá-la e anexar o volume raiz a uma instância de trabalho. Em seguida, você pode montar o volume e visualizar logs ou editar arquivos de configuração. Você pode desanexar o volume e iniciá-lo em sua própria instância.

user3550767
fonte
2
Verdadeiro para APS VPS; geralmente não é verdade.
21915 MadHatter
@MadHatter Os detalhes exatos podem variar, mas se um provedor VPS não oferecer nenhum método para inicializar com uma imagem de trabalho conhecida de onde você pode montar e consertar seu sistema de arquivos raiz, esperaria que eles saíssem do negócio assim que os clientes aprendeu sobre essa limitação.
kasperd
Geralmente, eles fazem isso oferecendo acesso ao console, para que você possa inicializar no modo de usuário único ou a partir da mídia de resgate (geralmente abstraída como ISO). Eu afirmo que isso é de fato muito mais normal do que a maneira estranha da AWS de lidar com o problema, onde um segundo VPS é (temporariamente) um requisito.
23915 MadHatter
@ MadHatter Qual das duas abordagens parece estranha pode muito bem depender do que você está mais familiarizado. E qualquer uma das abordagens faz o trabalho. Qual é o mais comum em que realmente não posso comentar, pois até agora eu só precisava desse acesso em um único provedor VPS.
precisa saber é o seguinte
@kasperd: Não, o que você usa depende do suporte de um determinado provedor VPS; não é uma questão de escolha. Se você estiver usando a AWS, monte o volume em outro VPS; se você estiver usando um provedor VPS mais normal, inicializa um usuário único ou a partir da mídia de resgate. Eu não considero esse ponto um idiota (bem, não inteiramente), mas porque é importante entender que é preciso descobrir quais são os métodos suportados do provedor, e então usá-los. Tentar usar o método AWS com, digamos, Hetzner simplesmente não funcionará , porque um servidor Hetzner vs não pode ver o FS de outro (afaik).
21915 MadHatter
3

Resposta formal: acesse o painel de gerenciamento do VPS, obtenha acesso local (KVM virtual) de alguma forma ou ligue para eles.

Explicação das etapas / regras para evitar cair novamente nela:

  1. Existem alterações nas regras de ip, roteamento e firewall que podem dar errado e bloquear seu acesso.
  2. e também se aplica à configuração de dispositivo de rede dedicada, não apenas aos VPS

Então, se você estiver 100% certo que você pode recuperar .. Eu recomendo sempre fazer uma maneira de redefinir configuração de rede ao seu estado anterior .. como, sessão de fundo aberto com tanto screen, nohupou tmux, ainda cronpode trabalhar para isso, e adicionar iptables -Fou outro meio desejado para redefinir qualquer coisa para o estado anterior.

kagali-san
fonte