Na AWS, preciso abrir as portas no firewall de uma instância do EC2, bem como no grupo de segurança?

8

Se eu mudar minha porta SSH de 22 para 23453, não consigo mais ssh in.

Mais detalhadamente, estou usando uma instância do Red Hat EC2 no Amazon Web Services. Esta é a segunda mudança que eu tenho em uma nova instalação (a primeira mudança foi para adicionar um usuário não-root).

Eu posso ssh bem usando o Git Bash e um arquivo local .ssh / config, eu edito a linha em / etc / ssh / sshd_config que atualmente diz

#Port 23453

para dizer

Port 23453

depois reinicie o sshd com

sudo service sshd restart

Eu então adiciono uma linha "Port 23453" meu arquivo .ssh / config

Host foo 
Hostname my-ec2-public-DNS
Port 23453
IdentityFile my ssl key

Se eu abrir outro shell do Git Bash (sem fechar minha conexão existente) e tentar fazer o ssh em minha instância (com o ssh foo), vejo o seguinte erro:

ssh: connect to host my-ec2-public-DNS port 23453: Bad file number

O grupo de segurança anexado a essa instância tem duas entradas, ambas TCP

22 (SSH) 0.0.0.0/0

23453 0.0.0.0/0

Meu palpite é que a porta ainda está bloqueada pelo meu firewall.

A saída de sudo iptables -L é a seguinte

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

O que parece muito aberto para mim.

UPDATE

Depois de adicionar uma regra iptables

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

e tentando novamente, ainda sem sorte.

Saída de iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:23453

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Qual parece suficientemente aberto. Não tenho certeza de como procurar pacotes que entram ou atividade na porta. Mas a saída de netstat -ntlp (como root)

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State PID/Program name
tcp        0      0 0.0.0.0:56137               0.0.0.0:*                   LISTEN      948/rpc.statd
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      930/rpcbind
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1012/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1224/master
tcp        0      0 0.0.0.0:23453               0.0.0.0:*                   LISTEN      32638/sshd
tcp        0      0 :::36139                    :::*                        LISTEN      948/rpc.statd
tcp        0      0 :::111                      :::*                        LISTEN      930/rpcbind
tcp        0      0 ::1:631                     :::*                        LISTEN      1012/cupsd
tcp        0      0 :::23453                    :::*                        LISTEN      32638/sshd

O que me parece mostrar o sshd em 23453.

Eu verifiquei novamente que a instância tem a porta aberta no grupo de segurança (Porta: 23453, Protocolo: tcp, Fonte: 0.0.0.0/0)

O que mais pode estar causando a falha na conexão via SSH?

Felicidades

POSTMORTEM

Agora posso me conectar. Era uma regra que faltava no iptables. A saída de iptables -L agora é assim:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:23453 state NEW
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
    
por Andrew Martin 21.11.2012 / 14:15

4 respostas

12

O firewall da sua instância não tem essa porta aberta. Tente o seguinte comando:

iptables -I INPUT 3 -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 23453 -m state --state New -j ACCEPT

Observe que as regras do iptables precisam ser salvas para persistirem após uma reinicialização. No RHEL isso é:

/sbin/service iptables save
    
por 21.11.2012 / 14:29
1

Tem certeza de que o grupo de segurança está definido corretamente? Você clicou em "Aplicar alterações"? Muitas pessoas esquecem de aplicar suas mudanças:)

"Número de arquivo incorreto" geralmente significa tempos limite de conexão e sua configuração do iptables parece correta.

    
por 21.11.2012 / 14:42
1

Adicione uma regra iptables

iptables -I INPUT 1 -p tcp --dport 23435 -j ACCEPT

que aceita tráfego de qualquer host, pela porta 23435, e tenta o ssh, se você vir algum pacote ou atividade, significa que os pacotes estão chegando ao seu servidor.

Se você não vir nenhum pacote, significa que o grupo de segurança da AWS não tem regras para permitir sua porta.

mas se vir o tráfego nesta regra (por iptables -nvL ), terá de executar "netstat -ntlp" e verificar se o daemon SSH está em execução na porta 2435. e em 0.0.0.0/0 .

esperamos que essas etapas resolvam o problema. se ainda não, então me diga.

    
por 21.11.2012 / 14:23
0

No caso de alguém se deparar com este tópico porque mudou a porta padrão do ssh, aqui está uma solução que funcionou para mim:

  1. Para ignorar um firewall corporativo, alterei a porta para 80 em /etc/ssh/sshd_conf .
  2. Infelizmente, o Apache já estava instalado nessa instância, então não pude mais usar o ssh.
  3. Desanexei o volume da instância.
  4. anexado a outra instância
  5. montou, alterou a porta no arquivo de configuração
  6. desconectou-o, anexou-o à instância anterior
  7. reinicializado: tudo de bom: D
por 25.02.2013 / 15:23