Как не развязать DDoS-атаку против собственных серверов
В последнее время много говорят про DDoS-атаки (распределенные атаки на отказ в обслуживании) после того, как произошел коллапс с серверами DNS-хостингового сервиса Dyn, в результате которого тысячи пользователей остались без Интернета. Излишне говорить, что мы должны знать об этой угрозе, о том, как все это работает, и о том, как защитить себя от нее. Особенно сейчас, в эпоху Интернета вещей, когда кибер-преступники достаточно легко могут создать армию зараженных устройств для осуществления подобного рода атак.
Защита многих устройств, относящихся к Интернету вещей, оставляет желать лучшего, открывая хакерам широкие возможности для легкого получения доступа к этим устройствам и контроля над ними, чтобы использовать их как оружие. В рамках DDoS-атаки все эти подневольные «солдаты» подключаются одновременно к серверу для того, чтобы перегрузить его запросами, в результате чего он становится неспособным вовремя обрабатывать их (включая и запросы «нормальных» пользователей). Как будто толпа людей внезапно выскочила перед Вами в супермаркете, но не для того, чтобы что-то купить, а просто помешать Вам сделать требуемые покупки.
Эта опасность может быть обычным явлением, а потому компаниям, конечно же, следует учитывать это. Но вся правда заключается в том, что серверы компании имеют гораздо больше шансов «зависнуть» в силу своих собственных ошибок, нежели в результате внешнего воздействия. Это было подтверждено экспертами Google, которые, не приводя конкретных данных, предупредили о тревожной частоте, с которой происходят такие инциденты.
Серверы компании имеют гораздо больше шансов «зависнуть» в силу своих собственных ошибок
Исследователи этого крупного поисковика утверждают, что программисты и разработчики часто исходят из того, что объем трафика будет правильно и равномерно распределен системой, при этом не имея «аварийного» плана на случай, если это окажется не так.
Google показывает пример в качестве объяснения. Огромный объем мобильных приложений устанавливают соединения со своими серверами через определенный период времени для получения требуемой информации. Если все в порядке, то, как правило, многие приложения подключаются каждые 15 минут. В случае ошибки эти приложения начинают работать таким образом, чтобы повторять свои запросы каждые 60 секунд, а потому не придется ждать еще дополнительных 15 минут в том случае, если приложение не получило ответ при первой попытке.
Такая система показывает свои недостатки в том случае, когда сервер по каким-либо причинам недоступен в определенный период времени (кстати, не обязательно слишком долгий). Когда сервер «возвращается» к работе и начинает корректно работать, он получает не только свои «обычные» запросы каждые 15 минут, но кроме этого он еще одновременно получает все предыдущие запросы, которые осуществлялись каждые 60 секунд в тот период времени, пока сервер был недоступен.
Что в итоге? Оказывается, невольно происходит «самоубийственная» DDoS -атака, которая могла бы «убить» приложение в результате чрезмерного количества одновременных подключений. Если вдруг сервер снова возвращается в офлайновое состояние после такого внезапного объема трафика, то количество вновь поступающих запросов только множится.
Советы, как избежать DDoS-атак
Чтобы избежать подобных ситуаций, эксперты Google предлагают несколько советов:
Во-первых, сделайте так, чтобы первоначальная 60-секундная задержка удваивалась с каждым неудачным запросом, т.е. вторая попытка запроса будет осуществляться уже через 120 секунд, третья – через 240 секунд и т.д. Таким образом, увеличение количества запросов будет осуществляться медленнее, что позволит серверу быстрее вернуться в нормальный режим работы.
Кроме этого, эксперты Google также рекомендуют, чтобы приложения имели счетчик количества попыток повторных подключений, осуществляемых каждым пользователем, в результате чего наиболее срочные запросы получали бы более высокий приоритет, когда сервер возвращается к нормальному режиму работы. Таким образом, запросы, которые дольше других ожидают ответа, будут обрабатываться в первую очередь, а остальные – потом. Это позволит предотвратить «пробку» трафика, а также нежелательные простои в работе, вызванные DDoS-атакой, запущенной против самого же себя.
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.