Nos comentários, estabelecemos que isso está em uma instância do Amazon AWS EC2 e que você se bloqueou remotamente a partir do acesso SSH. Ao usar o Amazon EC2, você terá um pouco de dor de cabeça aqui. Não há modo serial / console real para acesso, nem qualquer um que possa apenas 'consertar' isso, e desabilitando todas as conexões como você fez, você se bloqueou completamente.
Você não tem muita solução aqui, mas para destruir a instância do EC2 e começar de novo.
E depois de começar de novo, você tem duas opções de como firewall seu sistema:
-
Use o firewall do grupo de segurança do EC2. Isso é um pouco mais fácil de configurar e já está lá, sem nenhuma configuração adicional - é parte da infraestrutura do EC2, onde é necessário permitir que as portas realmente sejam recebidas para a instância do EC2. Você também não vai se trancar tão facilmente (embora você possa ficar bloqueado, é fácil consertá-lo, porque você apenas permite a porta 22 novamente no conjunto de regras do painel de configurações do Amazon EC2, desde que você não mexa. com
iptablestambém. -
Use um conjunto de regras decente
iptablese não saia do PuTTY no seu EC2 até que esteja absolutamente certo as regras que você colocou em prática não torpedo completamente seu acesso ao sistema.
Agora, menciono em # 2 um "conjunto de regras decente". Abaixo segue o meu guia para EC2 iptables , desde que você realmente leia os comentários antes de executar os comandos (por exemplo, não mexa com OUTPUT ou FORWARD a menos que você realmente precise).
Um conjunto de regras de trabalho para iptables de acordo com seus requisitos:
Você não precisa digitar linhas que tenham # no começo, são apenas meus comentários explicando o que cada comando faz. Além disso, substitua YOUR.IP.ADDRESS.HERE pelo seu endereço IP real, onde é mostrado abaixo.
Filtragem de entrada:
# Permit localhost to communicate with itself.
iptables -A INPUT -i lo -j ACCEPT
# Permit already established connection traffic and related traffic
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# Permit new SSH connections into the system from trusted IP address
iptables -A INPUT -p tcp --dport 22 -s YOUR.IP.ADDRESS.HERE -m conntrack --ctstate NEW -j ACCEPT
# Permit all other traffic from trusted IP Address
iptables -A INPUT -s YOUR.IP.ADDRESS.HERE -j ACCEPT
# Drop all other traffic
iptables -A INPUT -j DROP
Filtragem de saída:
% bl0ck_qu0te%# Allow Localhost to itself
iptables -A OUTPUT -i lo -j ACCEPT
# Allow RELATED,ESTABLISHED state traffic (related to Inbound for example)
iptables -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# Allow all other traffic to trusted IP address
iptables -A OUTPUT -d YOUR.IP.ADDRESS.HERE -j ACCEPT
# Drop all other unpermitted outbound traffic.
iptables -A OUTPUT -j DROP
Filtragem avançada:
% bl0ck_qu0te%# Drop FORWARD target traffic, we don't need it
iptables -A FORWARD -j DROP
Note que eu acredito firmemente em não mexer com as políticas padrão em um servidor, porque ele tem alguns ... males ... se não forem feitos corretamente, e eu normalmente só filtro entrada tráfego e FORWARD tráfego e permissão de tráfego de saída devido a servidores de sincronização de tempo, servidores de atualização do Ubuntu nem sempre têm um número definido de IPs, outros processos relacionados que eu preciso (SSH in / out por exemplo como parte do tráfego 'relacionado') etc.
Eu também acredito firmemente em usar REJECT em vez de DROP , mas isso é apenas para tornar mais fácil saber que seu servidor está ativo e recusando conexões. Para esse fim, eu estaria substituindo o -j DROP por -j REJECT --reject-with icmp-host-unreachable ou similar.
Observe que, se você tiver o sistema IPv6 ativado, isso também deverá ser feito para o IPv6, mas com ip6tables e substituindo os indicadores de mensagens relacionadas ao ICMP pelos equivalentes ICMP6.