Conexão SSH recusada após modificar o iptables

1

Ontem à noite eu estava mexendo com meus iptables fazendo estes comandos específicos:

sudo iptables -F
sudo iptables -X
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

nada realmente prejudicial se eu estiver correto. E então minha conexão ssh caiu. Tentei reiniciar o servidor, mas ele continuou dizendo

ssh: connect to host X.X.X.X port 22: Connection refused

Eu tentei inicializar no modo de recuperação, montar / dev / sda2 / mnt, chroot / mnt e apenas liberar o iptables. Mas ainda não está funcionando. Parece que nada que precise de acesso externo está funcionando ...

Eu tentei remover (--purge) openssh-client e server e reinstalar, ainda o mesmo.

EDITAR:

Então, como Khaled mencionou, tentei adicionar

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

para o meu iptables no modo de recuperação, então salve-o em /etc/iptables.rules mas ele não funciona. Eu também tentei adicionar estas instruções para /etc/rc.local para liberar o iptables na inicialização:

#!/bin/sh -e
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

Ainda não funciona.

Além disso, este é o resultado quando eu (ainda no modo de recuperação chrooted) tento iniciar o ssh com a opção -d

/etc/init.d/ssh start -d
[....] Starting OpenBSD Secure Shell server: sshddebug1: sshd version OpenSSH_6.7, OpenSSL 1.0.1k 8 Jan 2015
debug1: private host key: #0 type 1 RSA
debug1: private host key: #1 type 2 DSA
debug1: private host key: #2 type 3 ECDSA
debug1: private host key: #3 type 4 ED25519
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
debug1: Bind to port 22 on 0.0.0.0.
Bind to port 22 on 0.0.0.0 failed: Address already in use.
debug1: Bind to port 22 on ::.
Bind to port 22 on :: failed: Address already in use.
Cannot bind any address.
 failed!

mas isso parece bastante lógico para mim (como um grande noob) já que eu já estou usando o ssh no modo de recuperação ...

EDIT 2:

Como perguntado, aqui o resultado do telnet quando o servidor está ativo e não no modo de recuperação:

telnet X.X.X.X 22
Trying X.X.X.X...
telnet: connect to address X.X.X.X: Connection refused
telnet: Unable to connect to remote host
    
por Chop 03.06.2015 / 11:05

1 resposta

2

O conjunto de regras que você postou não permite nenhuma conexão de entrada ao servidor. Você está permitindo apenas o tráfego localmente por meio da interface de loopback e RELATED , ESTABLISHED states. Estes não são suficientes para acessar o servidor. Você precisa pelo menos permitir a porta SSH usando um lile de regras:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Outra coisa importante a notar é a maneira como você está executando esses comandos do iptables. Você deve executá-los como um script, não um comando por vez. No momento em que você digitar o terceiro comando sudo iptables -P INPUT DROP , você está descartando todos os pacotes recebidos para o seu servidor e ele fica inacessível. Isto é porque o comando iptables entra em vigor imediatamente!

Normalmente, o erro de conexão recusada é causado por um processo que não está escutando na porta especificada ou por uma regra explícita do iptables REJECTR (o que não é o caso aqui). Se você puder acessar o servidor, você precisa ter certeza de que o servidor ssh está rodando e escutando na porta 22. Você pode usar:

sudo netstat -lnp | grep 22
    
por 03.06.2015 / 11:24

Tags