Сравнение Security Enhanced NGINX и Hiawatha Web Server при отражении атак 7 уровня (BOTS/SQL/XSS etc.)

    Добрый день.

    В завершение «недели NGINX», мы решили рассказать об очень интересной сборке «безопасной» версии NGINX китайской компании Neusoft, о которой не было замечено ни одной статьи на Хабре, а именно — SeNginx. В дополнение к этому, мы также расскажем вам о втором веб сервере, которому не уделяется так много внимания, как Nginx — Hiawatha Web Server, и постараемся сравнить Hiawatha с SeNginx в плане использования их для обеспечения безопасности вашего сайта или web приложения.

    image image

    Отметим, что за 5 лет существования нашей хостинговой компании нам довелось повидать целый спектр атак различных уровней и типов на сайты и web приложения наших клиентов, а также поработать с London Metropolitan Police в поиске и поимке одного управляющего ботнетом. Сегодня DDoS атаки стали настолько частыми, что только за вчерашний день Arbor в одном из наших датацентров зафиксировал 49 DDoS атак 3/4 уровней мощностью до 20-25 Gbit/s (график 1 и график 2). И, хотя Arbor девайсы и могут при определенной настройке неплохо справляться с атаками 3 и 4 уровня, они практически бесполезны при атаках 7 уровня, целью которых является перегрузка ресурсов сервера, а также поиск уязвимостей в вашем приложении.

    Самым бюджетным вариантом отражения атак 7 уровня являются различные варианты с использованием DNS RoundRobin + HaProxy, Nginx, Varnish Cache и т.д., которые либо позволяют рассредоточить атаку между несколькими серверами клиента, либо дают возможность обработать запросы ботов «в лоб» с помощью отдачи кешированной версии страницы. Данный подход, к сожалению, часто требует ручной настройки, постоянного мониторинга и редко эффективен при меняющихся типах атак.

    Наглядное представление DNS RoundRobin + Nginx (источник):

    image

    После длительных поисков нами был найден отличный модуль к NGINX, написанный русскими программистами на Perl в 2012 году и позволяющий фильтровать ботов, которые заходят на ваш сайт в автоматическом режиме — Roboo (статья на Хабре). Модуль показал себя с наилучшей стороны, позволяя фильтровать сотни тысяч запросов от ботов с помощью NGINX с минимальной нагрузкой на сервер.

    Мы не смогли выяснить как, но модуль Roboo был замечен уже китайскими программистами, переписан на C и включён в сборку NGINX с модулями безопасности, которая получила название SeNginx.

    Итак, что же такое SeNGINX?

    SeNginx — это сборка NGINX с дополнительными модулями безопасности, а именно:

    • HTTP Robot Mitigation — переписанный на C модуль Roboo, который защищает сайт от ботов, не поддерживающих Javascript или Flash. Таких ботов в данный момент большинство, хотя и появляются новые боты (PhantomJS, Zombie JS и т.д.), поддерживающие Java — таких ботсетей пока гораздо меньше.
    • Naxsi & Mod Security — модули защиты от SQL, XSS и web сканеров с помощью Whitelist и наборов правил.
    • User-Agent Whitelist with DNS Reverse Resolve — возможность добавлять в список разрешений ботов, которые используются поисковыми системами (Google, Yandex и т.д.) с проверкой по Reverse DNS, что позволит запретить доступ ботам, которые имеют UserAgent: googlebot, но таковыми на самом деле не являются.
    • Dynamic IP Blacklist — модуль позволяет вносить IP адреса ботов или сканеров в черный список в автоматическом режиме, записывать их в log файл и при желании разблокировать через определенное время
    • NetEye Security Layer — модуль, позволяющий интегрировать различные модули безопасности между собой и установить, в каком порядке они производят проверки
    • Statistics — удобный модуль статистики в JSON формате, отображающий как статистику самого NGINX, так и модулей безопасности — http://demo.senginx.org

    В дополнение, в SeNginx присутствуют модули для Load Balancing (Session Persistence, Fastest Load Balancing Algorithm / Fair Load Balancing Alogorithm ), MIME cache модуль, а также поддержка Syslog.

    В итоге, SeNginx — это очень мощный инструмент противодействия ботам и автоматизированным сканерам безопасности, которые используются для поиска уязвимостей на вашем сайте.

    Что такое Hiawatha Web Server?

    Hiawatha — это полноценный web сервер, написанный студентом из Амстердама Hugo Leisink в 2002 году и поддерживаемый до сих пор. В отличие от Nginx, Hiawatha был изначально задуман, как web сервер с функциями безопасности, такими как защита от SQL, XSS, CSRF и Exploit атак.

    После нашего общения с Hugo в течении последних нескольких лет, в Hiawatha был также добавлен и протестирован модуль Roboo, для защиты от вебсайтов от ботов, но с одной дополнительной возможностью, которую мы рассмотрим далее.

    Преимущество Hiawatha заключается в том, что данный web сервер очень прост в настройке и эксплуатации. В то время как Nginx является мощным и иногда сложным инструментом, Hiawatha может быть установлен и настроен в короткие сроки, включая мониторинг и защиту. Nginx, например, не имеет удобного способа отслеживания трафика по каждому виртуальному хосту и требует настройки сторонних модулей для осуществления расширенного мониторинга виртуальных хостов.

    Возможности Hiawatha Web Server:

    • Безопасность — защита от SQL / XSS / CSRF / Exploit атак, логирование в system.log
    • Поддержка Cache — возможность установки размера кеша и удобная настройка типов файлов, сохраняемых в кеш (CacheRProxyExtensions = css, gif, html, jpg, js, png, txt )
    • Поддержка Reverse Proxy — как и в Nginx, в Hiawatha реализована поддержка reverse proxy
    • Защита от ботов — с недавнего времени, вы можете включить защиту от ботов с помощью Javascript или HTTPHeader (ChallengeClient)
    • Hiawatha Monitor — Hiawatha имеет web панель сбора статистики со всех своих серверов в единую базу данных, данные из которой можно интегрировать в свои приложения

    В итоге, Hiawatha — это удобный и достаточно простой в использовании web сервер, который, в отличие от Nginx, не имеет миллиона настроек, а просто устанавливается и работает из коробки и имеет в себе дополнительные функции обеспечения безопасности.

    В чем отличия SeNginx и Hiawatha?

    Конечно, кто-то скажет что сравнивать Nginx с малоизвестным веб сервером не имеет смысла, однако наши тесты и довольно долгое использование Hiawatha в production environment показали, что Hiawatha является отличным open source инструментом, не требующим больших знаний в настройке и управлении и не сильно уступающим Nginx.

    Однако, основное отличие SeNginx от Hiawatha в их способах интеграции модуля Roboo заключается в следующем:

    В SeNginx Robot Mitigation модуль работает по принципу — On/Off, что означает необходимость либо точной настройки белого списка IP адресов (допустим платежных систем) для избежания их блокировки данным модулем, либо включения модуля защиты от ботов непосредственно во время атаки бот сетью. Такой способ защиты не очень удобен, так как вам необходимо постоянно отслеживать сайты, которые находятся под атакой ботов, либо же держать модуль постоянно включенным, что может привести к определенным проблемам с доступностью сайта для «белых» ботов.

    В Hiawatha же, реализован механизм включения модуля защиты от ботов только в том случае, если количество подключений к вашему серверу превышает определенный барьер. Допустим, если в моменты пиковой нагрузки на ваш веб сервер вы обрабатываете 10,000 подключений, то атака бот сетью может создавать нагрузку в 100,000 и более подключений к вашему веб серверу. В данном случае, выставление настроек Hiawatha на уровень в 15,000 соединений позволит вам автоматически подключать модуль защиты от ботов только тогда, когда ваш сервер находится под атакой.

    В итоге, если вы не хотите разбираться с огромным количеством настроек SeNginx, то вам будет проще и быстрее настроить Hiawatha, и на время забыть о botnet атаках. Если же вы профессионально занимаетесь защитой от DDoS, то сборка SeNginx это отличный инструмент, который можно точно настроить под потребности ваших клиентов.
    Поделиться публикацией
    Похожие публикации
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 12
    • –1
      О каких уровнях идет речь? Я так и не смог найти их описания. Что означают 3,4,7 и другие уровни атаки?
      • 0
        Да, извините за излишек терминов. Атаки 3 и 4 уровня являются атаками на инфраструктуру и пропускную способность сервера. Если проще, то если у вашего сервера имеется канал подключения к сети в 100 Mbit/s, то более высокий трафик забьет этот канал и приведет к недоступности сервера. Атаки же 7 уровня (layer 7) — это атаки на web сервер и базу данных вашего сервера, которые приводят к перегрузке ресурсов сервера. Если вы работаете на виртуальной машине, при Layer 7 атаке ваш хостер может отключить вас за чрезмерное использование ресурсов, даже если вы будете ни при чём.
        • 0
          написанный русскими программистами на Perl в 2012 году и позволяющий фильтровать ботов, которые заходят на ваш сайт в автоматическом режиме — Roboo (статья на Хабре)

          Указанный по ссылке модуль хоть и написан русским программистом(за который Эльдару отдельное спасибо) как и Roboo, но это два разных модуля:
          github.com/yuri-gushin/Roboo
          github.com/kyprizel/testcookie-nginx-module
          • +5
            Преимущество Hiawatha заключается в том, что данный web сервер очень прост в настройке и эксплуатации. В то время как Nginx является мощным и иногда сложным инструментом


            Какие знакомые слова, вот только поменять в первом предложении 'Hiawatha' => 'Nginx', а во втором 'Nginx' => 'Apache2'.
            • 0
              Naxsi очень память кушает. В промышленном варианте мало применим.
              • 0
                «течет» и «кушает» разные вещи. Отсюда вопрос: так «течёт» или «кушает»?
                • 0
                  В nginx мало модулей, которые «текут» (пока не встречал таких). Naxsi именно кушает.
                  • 0
                    Тогда не понятно почему его нельзя в промышелнном варианте применять.
                    • 0
                      стоимость его обслуживания очень высокая, есть более экономичные варианты (например, сборка тех же инструкций на map/geo)
              • 0
                или HTTPHeader (ChallengeClient)


                Это что за зверь, поискал, не чего не нашел, с js все ясно как делается, а вот как это работает?
                • –1
                  Под Windows этого праздника жизни нет?

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.