Как смягчить DDOS-атаки на AWS?

У меня есть веб-приложение (NodeJS), и я планирую развернуть его на AWS. Чтобы минимизировать затраты, он будет работать на одном экземпляре EC2. Однако я беспокоюсь о том, что произойдет, если кто-то решит благословить меня с помощью DDOS-атаки и, следовательно, у меня будет несколько вопросов. Я провел довольно много исследований, но, поскольку моего понимания явно не хватает, я прошу прощения, если некоторые из вопросов являются просто глупыми:

  1. Я хочу, чтобы люди не наводняли мой сайт атаками уровня 4. Достаточно ли настроить мою группу безопасности на прием трафика (в дополнение к SSH-порту 22) от:

    Тип HTTP

    Протокол TCP

    Диапазон портов 80

Остановит UDP-флуд и другие от попадает в мой экземпляр EC2?

  1. Через группу безопасности я бы разрешил SSH-подключения к порту 22 только со своего статического IP-адреса. Сможет ли это удержать злоумышленников от попыток полностью атаковать порт 22?

  2. На моем экземпляре EC2 будет работать Ubuntu. Я хочу избежать атак на уровне приложений (уровень 7) и планировал сделать это непосредственно из моего приложения, поэтому каким-то образом определяю, не наводняет ли определенные IP-адреса определенные URL-адреса, и при необходимости блокирует их. Однако это кажется немного запоздалым, поскольку трафик уже попадает на мой веб-сервер, и мой сервер все равно должен делать эту работу. Поэтому вместо того, чтобы делать это прямо из моего приложения, я подумал, можно ли использовать IP-таблицы для блокировки любого подозрительного трафика, прежде чем он попадет на мой веб-сервер. Есть ли набор общих настроек, с помощью которых можно распознать мошенническое поведение и заблокировать нарушителей? Я планировал изучить fail2ban в надежде, что это упростит процесс. Теперь я понимаю, что если он зайдет так далеко, он все равно поразит мой экземпляр EC2, но я хочу защитить свое приложение также от, например, атак грубой силы.

  3. Сможет ли AWS CloudFront отразить большинство атак DDOS уровня 4? Если нет, то использование бесплатного CloudFlare будет иметь значение?

  4. Допустим, кто-то все равно наводняет мой сайт, и это приводит к увеличению трафика, чем я ожидал. Есть ли способ остановить зарядку в какой-то момент? Есть предупреждения о выставлении счетов, но я не вижу способа установить жесткие ограничения для AWS и сказать, что инстанс отключен от сети, если пропускная способность превышена.

Я также понимаю, что теперь есть способ полностью предотвратить DDOS-атаки, но я хочу защитить по крайней мере от основные попытки. Заранее благодарим вас за любую помощь.

2
задан 27 December 2015 в 20:46
2 ответа

1) Настройка группы безопасности - это простой и важный уровень безопасности. Если у вас запущено какое-либо веб-приложение, то порт 80/443 должен быть открыт для всего мира, а 22 для удаленного доступа к серверу через ssh должны быть разрешены только с определенного IP-адреса. Кроме этих 3 портов весь трафик будет блокироваться. Вы можете протестировать с помощью Port Scanning или NMAP.

2) Ограничьте доступ для SSH только вашим статическим IP-адресом, а также для доступа к EC2 Instance через ssh вам понадобится ключ. Если злоумышленник каким-то образом узнает ваш IP-адрес, он не сможет получить доступ к вашему серверу без ключа.

Примечание: - Если вы используете CDN(CloudFlare), то ваш статический IP-адрес EC2 уже скрыт.

3) Вы можете ограничить количество одновременных подключений с одного и того же IP-адреса к вашему серверу.

Для этого можно использовать правила брандмауэра linux :-

iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 -j DROP
iptables-save >/etc/iptables.up.rules

Первая строка будет Watch the IP connection to your eth0 interface. Вторая строка будет Проверять, новое ли соединение в течение последних 60 секунд, и если поток пакетов больше десяти, то соединение обрывается. Третья строка сделает правила постоянными в случае перезагрузки.

Для проверки количества одновременных подключений от всех клиентов, которые подключены к вашему серверу :-

 netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head 

Появится список текущих активных подключений по IP-адресу, а оскорбительным IP-адресом обычно является тот, который имеет большое количество подключений.

12  10.1.1.1
160 162.19.17.93

В приведенном выше примере первое число - это количество соединений, за которым следует IP-адрес источника.

Примечание :- В сильно загруженном сервере количество соединений может быть больше 100, но во время DDOS-атаки это число будет увеличиваться еще больше. Для среднестатистического хоста, если у вас более 30 соединений с одного IP-адреса, есть шанс, что вас атакуют. Если из одной сети подключено более 5 таких IP/хостов, это очень явный признак DDOS-атаки.

Выводы lsof,netstat и tcpdump очень полезны при обнаружении такого рода проблем.

Теперь вы получаете IP-адрес клиента, для блокировки которого можно использовать IP-таблицы или команду tcpkill. TCPKILL является частью dsniff пакета.

apt-get install dsniff

Then issue :-

tcpkill host x.x.x.x

Вышеуказанный метод хорош, и он поможет вам смягчить небольшую DDOS Attack при правильном применении. Теперь, если вы используете CDN ( CloudFlare ), то вы можете заблокировать атакующего только на этом уровне. Можно использовать CloudFlare API для блокировки IP адреса. При этом трафик не будет поступать на ваш сервер.

Узнайте больше в CloudFlare API Doc

См. вышеприведенный метод и создайте скрипт, который поможет вам в автоматизации.

4) На мой взгляд, CloudFlare лучше CloudFront. CloudFlare легко настроить, и с одной панели управления вы можете справиться со всем. Даже если вы найдете большое количество ненужного трафика, режим "I am Under Attack" смягчит его менее чем за 5-10 секунд.

Узнайте больше о DDOS и режиме "Я под атакой" в блогах Cloudflare.

5) Вы можете настроить AWS сигнализацию для остановки/прекращения экземпляра EC2, если пропускная способность вашей сети превысила лимит.

AWS Alarm Sample

Edit:- Одна важная вещь - попробуйте настроить инструмент мониторинга (например, Nagios) и инструмент управления логами для доступа к веб-приложениям. Это поможет вам найти узкое место.

3
ответ дан 3 December 2019 в 10:40

DDOS-атаки можно смягчить множеством способов:

  1. путем изменения архитектуры (ресурсы AWS)
  2. с помощью инструментов и утилит. (встроенные инструменты в экземплярах ec2)

Итак, когда у вас есть сложная архитектура для вашего веб-сервера, я бы посоветовал пойти путем изменения вашей архитектуры. Я написал подробный блог о том, какие сервисы вы должны использовать для смягчения DDOS-атак на AWS

Если у вас возникла такая проблема с одним экземпляром, и вы не хотите тратить много на другие ресурсы AWS, тогда я написал другой блог. который продемонстрирует способы предотвращения DDOS на экземпляре EC2 без использования сторонних инструментов .

Надеюсь, это поможет, дайте мне знать, если вам нужно больше информации по той же теме.

0
ответ дан 3 December 2019 в 10:40

Теги

Похожие вопросы