instância do Amazon EC2 ausente na interface de rede

1

Estou executando o Linux em uma instância t1.micro no Amazon EC2. Uma vez eu notei tentativas de login ssh bruteforce de um determinado IP, depois de pouco Googling eu emiti os dois seguintes comandos (outro ip):

iptables -A INPUT -s 202.54.20.22 -j DROP
iptables -A OUTPUT -d 202.54.20.22 -j DROP

Ou isso, ou talvez algumas outras ações como yum upgrade , causaram o seguinte fiasco: depois de reiniciar o servidor, ele surgiu sem a Interface de Rede!

Eu só posso me conectar a ele por meio do cliente ssh do AWS Management Console JAVA - via endereço 10.x.x.x local.

O Attach Network Interface do console e Detach.. estão esmaecidos para esta instância.

Network Interfaces item à esquerda não oferece nenhuma sub-rede para escolher, para criar uma nova NI.

Por favor, como posso recriar uma interface de rede para a instância?

Upd. A instância não pode ser acessada de fora: não pode ser pingada, conectada por SSH ou conectada por HTTP na porta 80.

Aqui está a ifconfig output:

eth0  Link encap:Ethernet  HWaddr 12:31:39:0A:5E:06  
      inet addr:10.211.93.240  Bcast:10.211.93.255  Mask:255.255.255.0
      inet6 addr: fe80::1031:39ff:fe0a:5e06/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:1426 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1371 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:152085 (148.5 KiB)  TX bytes:208852 (203.9 KiB)
      Interrupt:25 
lo    Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:16436  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

O que também é incomum: uma nova micro instância que criei do zero, sem relação com a problemática, também não foi pingável.

    
por Sergiks 10.04.2012 / 16:40

1 resposta

3

As instâncias do EC2 vêm com uma única interface - eth0. Essa interface é mapeada para o endereço IP privado da sua instância e não pode ser desanexada da instância. (Claro, você pode derrubar a interface, mas isso é uma função do sistema operacional, não da AWS).

O único caso em que você pode anexar / desconectar interfaces de rede é se sua instância está sendo executada em uma Virtual Private Cloud (VPC). Tais instâncias suportam várias interfaces.

Como a instância tem apenas uma única interface de rede, o fato de você conseguir se conectar a ela - mesmo que seja apenas pelo console da AWS - sugere que a interface ainda existe e está operacional (a entrada 'Network Interface') na entrada do console da AWS é preenchida apenas para instâncias de VPC). Vale a pena notar que o endereço IP público de uma instância será alterado quando uma instância for interrompida e iniciada (embora uma reinicialização não deva afetar isso). IPs elásticos podem ser usados para fornecer um endereço IP 'estático'. O endereço IP público (seja dinâmico ou 'elástico') não está diretamente associado à interface, e sim à rede EC2, o endereço público da NAT ao privado.

Como você ainda tem acesso SSH à instância, pode confirmar que a interface está operacional, procurando por uma entrada eth0 na saída de ifconfig . Você também pode usar o comando ec2-describe-instances para obter os endereços IP privados e públicos de sua (s) instância (s).

As instâncias do EC2 geralmente têm duas causas de pacotes bloqueados - o firewall do sistema operacional (iptables / netfilter, neste caso) ou o grupo de segurança do EC2. Na medida do possível, é sempre preferível bloquear o tráfego com o seu grupo de segurança, pois impede que os dados atinjam a instância. Grupos de segurança, no entanto, são sem estado, e a maioria dos pacotes não está configurada para modificá-los dinamicamente, então você provavelmente usará o iptables também.

Por padrão, o grupo de segurança do EC2 descarta todos os pacotes ICMP (necessários para o ping) - portanto, a menos que você o habilite especificamente, o ping não funcionará. Para ativar o ping no console da AWS (para o seu grupo de segurança):

  • Crie uma 'Regra ICMP personalizada' para o seu grupo de segurança
  • Tipo: Solicitação de eco e tipo: Resposta de eco (ambos são obrigatórios)
  • Fonte: 0.0.0.0/0

Você pode ver suas regras de iptables atualmente configuradas com: iptables -nvL e pode ver as configurações do grupo de segurança com ec2-describe-group SECURITY_GROUP

Ataques de força bruta e ter seu servidor varrido são, infelizmente, parte do que implica ter um servidor voltado para o público hoje. Os ataques ocorrem normalmente não é algo com que se preocupar, mas sim como o seu servidor é configurado para garantir que esses ataques não resultem em violações. Normalmente, o bloqueio manual de um único endereço IP não é o caminho mais eficaz, uma vez que você normalmente encontrará uma grande variedade de IPs como os originadores de ataques contra o seu servidor. Eu recomendaria olhar para fail2ban se você quiser uma solução baseada em logins com falha (ele varre seus logs e dinamicamente adiciona / remove as regras de firewall necessárias) ou um conjunto de regras do iptables com base no módulo recente.

Além disso, geralmente é uma boa prática, ao trabalhar com o iptables, configurar uma tarefa cron que libera as regras do iptables ( iptables -F ) após alguns minutos, para que você não se desconecte acidentalmente do servidor.

Nesse caso, uma atualização para o nginx resultou em uma configuração inválida, devido à adição de /etc/nginx/conf.d/default.conf . Crie um arquivo vazio com o mesmo nome (em vez de excluir o arquivo) para evitar que futuras atualizações causem o mesmo problema. Embora provavelmente não seja algo que a maioria das pessoas faz após uma atualização, você sempre pode testar sua configuração do nginx com service nginx configtest , o que permitirá que você saiba se há algum problema antes de finalizar o processo nginx em execução.

Se você realmente se encontrar com uma interface de rede desabilitada (por exemplo, por causa de ifdown eth0 ), você não poderá acessar o SSH na instância (ou contatá-la de qualquer maneira). A solução para esse cenário é parar a instância, desconectar o volume raiz do EBS, anexá-lo como um volume adicional a uma nova instância do EC2, corrigir o problema, reconectar o volume do EBS à sua instância original e iniciá-lo novamente. É uma das vantagens definitivas dos volumes do EBS.

    
por 10.04.2012 / 18:41