У меня есть сервер, подключенный к Интернету, и я хотел бы обеспечить некоторую защиту от DDOS-атак. В настоящее время я рассматриваю возможность использования fail2ban и / или snort. Я знаю, что у них разные подходы к работе. Насколько я понимаю, Fail2Ban отслеживает файлы журналов для определения вторжений, а snort отслеживает входящие пакеты.
Стоит ли использовать оба? Достаточно ли использовать только один из них? Какая функциональность однозначно одна, а другая - нет? Меня беспокоит производительность. Может ли snort замедлить работу нашей сети?
На вашем месте я бы начал с fail2ban.
Оба могут истощить ваши ресурсы, если они не настроены должным образом, но я подозреваю, что предостережения при работе с регулярным выражением будут вам более знакомы.
fail2ban проще сделать сразу полезным (по крайней мере, на мой взгляд).
Гораздо проще настроить фактическую блокировку вредоносных источников, чем snort, и вы можете настроить fail2ban для сканирования журналов snort, чтобы заблокировать их.
По всей вероятности, ни один из них не защитит вас от DDoS как такового, но оба могут, в их эквиваленте режиму блокировки, использоваться для предотвращения исчерпания несетевых ресурсов, (фактически) избегая взаимодействия с реальными серверами приложений.
Одна из проблем с snort заключается в том, что несколько нетривиально заставить его работать в режиме IPS (то есть фактически блокировать трафик) - AFAIK, гораздо более распространенным является запуск его как IDS (то есть обнаружение только вредоносного трафика).
fail2ban, как вы говорите, по сути, просто скрипт, который выполняет регулярное выражение в файлах журнала, извлекает вредоносные источники из этих журналов (например, неудачный вход в систему по SSH, запуск веб-клиента повторяющихся ответов 4xx или 5xx или наличие пользовательского агента, связанного с известными профилями злоумышленников. ). Он интегрируется с iptables (и со всем, что может работать поверх iptables, например firewalld, shorewall), чтобы блокировать трафик, связанный с вредоносными хостами. Эти блоки обычно реализуются либо как простые правила iptables, либо как правило iptables + ipset.
snort (и suricata, и другие IDSen) фактически проверяют различные аспекты потоков трафика, чтобы обнаружить потенциально вредоносный трафик. Он использует правила в формате, зависящем от домена, который также может выполнять сопоставление IP-адресов (и / или имени хоста / домена), а также проверку пакетов, повторную сборку и многое другое. Достаточно широко используемый набор правил в EmergingThreat's - вы можете прочитать (некоторые из них), чтобы почувствовать возможности snort.
Одно из соображений заключается в том, что fail2ban, как правило, будет полезен из коробки, в то время как это не совсем относится к snort - вам обычно нужно настроить его правила (и, возможно, добавить некоторые из своих), чтобы сбалансировать объемы событий с их действенностью. .
Лично мне, пока я трачу некоторое время на то, чтобы научиться работать с snort, работает следующая установка:
Это может сработать, а может и не сработать, но это означает, что вы получите некоторые дополнительная защита от фырканья без необходимости особенно разбираться в его устройстве.
Тем не менее, я хотел бы упомянуть, что правила snort могут показаться немного более тревожными, чем можно было бы оправдать - иметь некоторое представление о том, на какие угрозы они указывают и как понимать / интерпретировать предупреждения, обычно стоит усилий.
Как только вы освоитесь с snort, сначала настройте его, а затем подумайте, хотите ли вы, чтобы он имел дело с вещами напрямую (например, переводил его в режим IPS).
Попутно вы можете подумать о том, как WAF может быть частью общей картины, если многие из ваших открытых ресурсов размещены в Интернете.