Назад | Перейти на главную страницу

В AWS нужно ли открывать порты в брандмауэре инстанса EC2, а также в группе безопасности?

Если я изменю свой порт SSH с 22 на 23453, я больше не смогу использовать ssh.

Более подробно, я использую экземпляр Red Hat EC2 в Amazon Web Services. Это второе изменение при новой установке (первое изменение заключалось в добавлении пользователя без полномочий root).

Я могу нормально использовать ssh, используя Git Bash и локальный файл .ssh / config, я редактирую строку в / etc / ssh / sshd_config, которая в настоящее время говорит

#Port 23453

сказать

Port 23453

затем перезапустите sshd с помощью

sudo service sshd restart

Затем я добавляю строку «Порт 23453» в свой файл .ssh / config.

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

Если я открываю другую оболочку Git Bash (не закрывая существующее соединение) и пытаюсь подключиться к моему экземпляру по ssh (с помощью ssh foo), я вижу следующую ошибку:

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

Группа безопасности, прикрепленная к этому экземпляру, имеет две записи, обе TCP

22 (SSH) 0.0.0.0/0

23453 0.0.0.0/0

Я предполагаю, что порт все еще заблокирован моим брандмауэром.

Выход sudo 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

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

Что мне кажется довольно открытым.

ОБНОВИТЬ

После добавления правила iptables

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

и пытаюсь снова, все равно не повезло.

Выход 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

Что выглядит достаточно открытым. Я не совсем уверен, как искать входящие пакеты или активность в порту. Но выход netstat -ntlp (как корень)

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

Мне кажется, это показывает sshd на 23453.

Я еще раз проверил, что у экземпляра открыт порт в группе безопасности (порт: 23453, протокол: tcp, источник: 0.0.0.0/0)

Что еще может быть причиной сбоя подключения по SSH?

Ура

POSTMORTEM

Теперь я могу подключиться. Это отсутствующее правило в iptables. Выход iptables -L теперь выглядит так:

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

У брандмауэра вашего экземпляра этот порт не открыт. Попробуйте следующую команду:

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

Обратите внимание, что правила iptables необходимо сохранить, чтобы они сохранялись после перезагрузки. В RHEL это:

/sbin/service iptables save

Добавить правило iptables

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

который принимает трафик с любого хоста через порт 23435 и пытается использовать ssh, если вы видите какие-либо пакеты или активность, это означает, что пакеты достигают вашего сервера.

Если вы не видите пакетов, это означает, что у группы безопасности AWS нет правила, разрешающего ваш порт.

но если вы видите трафик по этому правилу (по iptables -nvL), то вам нужно запустить "netstat -ntlp" и проверить, работает ли демон SSH на порту 2435. и далее. 0.0.0.0/0.

надеюсь, эти шаги решат проблему. если все равно нет, то скажи мне.

Вы уверены, что группа безопасности настроена правильно? Вы нажимали «Применить изменения»? Многие люди забывают применить свои изменения :)

«Неверный номер файла» обычно означает тайм-ауты подключения, и настройки iptables выглядят правильно.

Если кто-то наткнется на эту тему, потому что они изменили порт ssh по умолчанию, вот решение, которое сработало для меня:

  1. Чтобы обойти корпоративный брандмауэр, я изменил порт на 80 на /etc/ssh/sshd_conf.
  2. К сожалению, Apache уже был установлен на этом экземпляре, поэтому я больше не мог использовать ssh.
  3. Я отсоединил том от экземпляра.
  4. прикрепил его к другому экземпляру
  5. смонтировал его, изменил порт в конфигурационном файле
  6. отсоединил его, снова прикрепил к старому экземпляру
  7. перезагрузился: все хорошо: D