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

У инстанса Amazon EC2 отсутствует сетевой интерфейс

Я использую Linux на экземпляре t1.micro в Amazon EC2. Как только я заметил попытки входа в систему через bruteforce ssh с определенного IP-адреса, после небольшого поиска в Google я выполнил две следующие команды (другой IP-адрес):

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

Либо это, либо другие действия, например yum upgrade Возможно, это привело к следующему фиаско: после перезагрузки сервера он вышел без сетевого интерфейса!

Я могу подключиться к нему только через SSH-клиент JAVA Консоли управления AWS - через локальный адрес 10.x.x.x.

Консоли Attach Network Interface так же как Detach.. для этого экземпляра выделены серым цветом.

Network Interfaces элемент слева не предлагает никаких подсетей на выбор, чтобы создать новый N.I.

Посоветуйте, пожалуйста, как я могу воссоздать сетевой интерфейс для экземпляра?

Upd. Экземпляр недоступен извне: его нельзя пинговать, подключать по SSH или подключаться по HTTP через порт 80.

Вот ifconfig вывод:

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)

Что еще необычно: новый микро-экземпляр, который я создал с нуля, не имеющий отношения к проблемному, тоже не пинговался.

Экземпляры EC2 имеют единый интерфейс - eth0. Этот интерфейс сопоставлен с частным IP-адресом вашего экземпляра и не может быть отключен от экземпляра. (Конечно, вы можете отключить интерфейс, но это функция операционной системы, а не AWS).

Единственный случай, когда вы можете подключать / отсоединять сетевые интерфейсы, - это если ваш экземпляр работает в виртуальном частном облаке (VPC). Такие экземпляры поддерживают несколько интерфейсов.

Поскольку у экземпляра есть только один сетевой интерфейс, тот факт, что вы можете подключиться к нему - даже если это только через консоль AWS - предполагает, что интерфейс все еще существует и работает (запись «Сетевой интерфейс» в AWS запись в консоли заполняется только для экземпляров VPC). Стоит отметить, что общедоступный IP-адрес экземпляра изменится, когда экземпляр будет остановлен и запущен (хотя «перезагрузка» не должна влиять на это). Эластичные IP-адреса могут использоваться для предоставления «статического» IP-адреса. Общедоступный IP-адрес (динамический или «эластичный») напрямую не связан с интерфейсом, скорее, сеть EC2 преобразует общедоступный адрес в частный через NAT.

Поскольку у вас по-прежнему есть SSH-доступ к экземпляру, вы можете подтвердить, что интерфейс работает, посмотрев запись eth0 в выходных данных ifconfig. Вы также можете использовать ec2-describe-instances команда, чтобы получить частный и общедоступный IP-адреса вашего экземпляра (ов).

Экземпляры EC2 обычно имеют две причины блокирования пакетов - брандмауэр операционной системы (в данном случае iptables / netfilter) или группа безопасности EC2. Насколько это возможно, всегда предпочтительнее блокировать трафик с помощью вашей группы безопасности, поскольку это предотвращает попадание данных в экземпляр. Однако группы безопасности не имеют состояния, и большинство пакетов не настроено для их динамического изменения, поэтому вы, вероятно, также будете использовать iptables.

По умолчанию группа безопасности EC2 отбрасывает все пакеты ICMP (необходимые для проверки связи), поэтому, если вы специально не включите ее, проверка связи не будет работать. Чтобы включить ping из консоли AWS (для вашей группы безопасности):

  • Создайте «Пользовательское правило ICMP» для своей группы безопасности.
  • Тип: эхо-запрос и тип: эхо-ответ (оба обязательны)
  • Источник: 0.0.0.0/0

Вы можете увидеть свои текущие настроенные правила iptables с помощью: iptables -nvL и вы можете просмотреть настройки своей группы безопасности с помощью ec2-describe-group SECURITY_GROUP

К сожалению, атаки методом грубой силы и сканирование вашего сервера являются частью того, что влечет за собой наличие общедоступного сервера сегодня. Как правило, эти атаки происходят не о чем беспокоиться, а о том, как настроен ваш сервер, чтобы эти атаки не привели к нарушениям. Обычно ручная блокировка одного IP-адреса не является самым эффективным способом, поскольку вы обычно найдете множество IP-адресов в качестве источников атак на ваш сервер. Я бы порекомендовал изучить fail2ban если вам нужно решение, основанное на неудачных попытках входа в систему (оно сканирует ваши журналы и динамически добавляет / удаляет необходимые правила брандмауэра) или iptables набор правил на основе последнего модуля.

Кроме того, при работе с iptables обычно рекомендуется настроить задание cron, которое сбрасывает ваши правила iptables (iptables -F) через несколько минут, чтобы случайно не заблокировать доступ к серверу.

В этом случае обновление nginx привело к неверной конфигурации из-за добавления /etc/nginx/conf.d/default.conf. Создайте пустой файл с тем же именем (вместо удаления файла), чтобы будущие обновления не вызывали ту же проблему. Хотя это, вероятно, не то, что большинство людей делают после обновления, вы всегда можете проверить свою конфигурацию nginx с помощью service nginx configtest, который сообщит вам, если есть какие-либо проблемы, прежде чем вы завершите запущенный процесс nginx.

Если вы действительно обнаружите, что у вас отключен сетевой интерфейс (например, из-за ifdown eth0), вы не сможете подключиться к экземпляру по SSH (или в любом случае связаться с ним). Решение для этого сценария состоит в том, чтобы остановить экземпляр, отсоединить корневой том EBS, присоединить его как дополнительный том к новому экземпляру EC2, устранить проблему, повторно подключить том EBS к исходному экземпляру и запустить его резервное копирование. Это одно из несомненных преимуществ томов EBS.