Как выбрать эффективную политику брандмауэра для защиты ваших серверов

Вступление

Использование брандмауэра так же важно, как и принятие интеллектуальных политических решений, так и изучение синтаксиса. Firewalls, такие какiptables, могут применять политики, интерпретируя правила, установленные администратором. Однако, как администратор, вы должны знать, какие типы правил имеют смысл для вашей инфраструктуры.

Хотяother guides сосредоточен на командах, необходимых для запуска и работы, в этом руководстве мы обсудим некоторые решения, которые вам придется принять при реализации брандмауэра. Эти варианты будут влиять на поведение вашего брандмауэра, на то, как заблокирован ваш сервер, и как он будет реагировать на различные условия, которые могут возникать время от времени. Мы будем использоватьiptables в качестве примера для обсуждения специфики, но большинство фактических решений будут актуальными независимо от используемых инструментов.

Выбор политики по умолчанию

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

Дроп по умолчанию против принятия по умолчанию

Политика по умолчанию «принять» означает, что любой несогласованный трафик разрешен для входа на сервер. Как правило, это не рекомендуется, поскольку это означает, что фактически вы будете поддерживать черный список. С черными списками сложно работать, потому что вы должны заранее предвидеть и блокировать нежелательный трафик типаevery. Это может привести к головной боли при обслуживании и, как правило, к ошибкам, неправильным конфигурациям и непредвиденным дырам в установленной политике.

Альтернативой является политика по умолчанию «drop». Это означает, что любой трафик, не соответствующий явному правилу, не будет разрешен. Это похоже на белый список ACL. Каждая услуга должна быть явно разрешена, что может показаться значительным объемом исследований и работы на первых порах. Однако это означает, что ваша политика направлена ​​на обеспечение безопасности и что вы точно знаете, что разрешено получать трафик на вашем сервере.

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

Политика удаления по умолчанию против правила окончательного удаления

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

Различие между этими двумя методами заключается в том, что происходит, если правила брандмауэра сбрасываются.

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

Недостатком этого подхода является то, что ваши услуги будут полностью недоступны для ваших клиентов, пока вы не восстановите разрешающие правила. Вы могли бы даже потенциально заблокировать себя вне сервера, если у вас нет локального или внеполосного доступа, чтобы обойти проблему (серверы DigitalOcean доступны независимо от настроек сети с помощью кнопки «Доступ к консоли», расположенной в «Доступ»). часть страницы вашей капли в панели управления). Если очистка брандмауэра является намеренной, этого можно избежать, просто переключив политику по умолчанию на «принять» непосредственно перед сбросом правил.

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

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

Отбрасывание против отклонения трафика

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

Первый способ отклонения пакетов - «drop». Удаление может быть использовано в качестве политики по умолчанию или в качестве цели для правил матча Когда пакет отбрасывается,iptables просто выбрасывает его. Он не отправляет ответ клиенту, пытающемуся подключиться, и не дает никаких указаний на то, что он когда-либо даже получал рассматриваемые пакеты. Это означает, что клиенты (законные или нет) не получат никакого подтверждения получения своих пакетов.

Для попыток TCP-соединения оно будет остановлено до тех пор, пока не будет достигнут предел времени ожидания. Поскольку UDP является протоколом без установления соединения, отсутствие ответа для клиентов еще более неоднозначно. Фактически, не получение пакета обратно в этом случае часто является признаком того, что пакет был принят. Если UDP-клиент заботится о получении своих пакетов, ему придется повторно отправить их, чтобы попытаться определить, были ли они приняты, потеряны при передаче или отброшены. Это может увеличить количество времени, которое злоумышленнику придется потратить, чтобы получить правильную информацию о состоянии портов вашего сервера, но также может вызвать проблемы с законным трафиком.

Альтернативой отбрасыванию трафика является явное отклонение пакетов, которые вы не разрешаете. ICMP, или Протокол управляющих сообщений Интернета, является мета-протоколом, используемым в Интернете для отправки сообщений о состоянии, диагностике и ошибках между хостами в виде внеполосного канала, который не зависит от обычных протоколов связи, таких как TCP или UDP. Когда вы используете цель «отклонить», трафик отклоняется, и отправителю возвращается пакет ICMP, чтобы сообщить им, что их трафик был получен, но не будет принят. Сообщение о состоянии может указывать на причину.

Это имеет ряд последствий. Предполагая, что ICMP-трафику разрешено перетекать к клиенту, они будут немедленно проинформированы о том, что их трафик заблокирован. Для законных клиентов это означает, что они могут связаться с администратором или проверить параметры подключения, чтобы убедиться, что они обращаются к нужному порту. Для злоумышленников это означает, что они могут завершить сканирование и отобразить открытые, закрытые и отфильтрованные порты за более короткий период времени.

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

Таблица ответов "Отклонение против отклонения"

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

Тип клиентского пакета Команда NMap Политика порта отклик Предполагаемое состояние порта

TCP

nmap [-sT

-sS] -Pn <сервер>

принимать

TCP SYN / ACK

Open

TCP

nmap [-sT

-sS] -Pn <сервер>

Drop

(никто)

отфильтрованный

TCP

nmap [-sT

-sS] -Pn <сервер>

отклонять

СБРОС TCP

Закрыто

UDP

nmap -sU -Pn <сервер>

принимать

(никто)

Открыть или отфильтровать

UDP

nmap -sU -Pn <сервер>

Drop

(никто)

Открыть или отфильтровать

UDP

nmap -sU -Pn <сервер>

Первый столбец указывает тип пакета, отправленный клиентом. Во второй столбец мы включили командыnmap, которые можно использовать для тестирования каждого сценария. В третьем столбце указывается политика порта, применяемая к порту. Четвертый столбец - это ответ, который сервер отправит обратно, а пятый столбец - это то, что клиент может определить относительно порта на основании полученного ответа.

Политика ICMP

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

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

Пакеты ICMP организованы по «типу», а затем по «коду». Тип определяет общее значение сообщения. Например, Тип 3 означает, что пункт назначения был недоступен. Код часто используется для предоставления дополнительной информации о типе. Например, код 3 ICMP типа 3 означает, что порт назначения недоступен, а код 0 ICMP типа 3 означает, что сеть назначения недоступна.

Типы, которые всегда можно заблокировать

Некоторые типы ICMP устарели, поэтому их, вероятно, следует блокировать безоговорочно. Среди них ICMP источник гашения (тип 4 код 0) и альтернативный хост (тип 6). Типы 1, 2, 7 и тип 15 и выше являются устаревшими, зарезервированными для использования в будущем или экспериментальными.

Типы для блокировки в зависимости от конфигурации сети

Некоторые типы ICMP полезны в определенных конфигурациях сети, но должны быть заблокированы в других.

Например, сообщения перенаправления ICMP (тип 5) могут быть полезны для освещения плохого дизайна сети. Переадресация ICMP отправляется, когда лучший маршрут непосредственно доступен для клиента. Поэтому, если маршрутизатор получает пакет, который должен быть направлен на другой хост в той же сети, он отправляет сообщение перенаправления ICMP, чтобы сообщить клиенту об отправке пакетов через другой хост в будущем.

Это полезно, если вы доверяете своей локальной сети и хотите обнаружить неэффективность в ваших таблицах маршрутизации во время начальной настройки (исправление ваших маршрутов является лучшим долгосрочным решением). Однако в ненадежной сети злонамеренный пользователь может отправлять перенаправления ICMP для манипулирования таблицами маршрутизации на хостах.

Другими типами ICMP, которые полезны в одних сетях и потенциально вредны в других, являются пакеты объявления маршрутизатора ICMP (тип 9) и пакеты запроса маршрутизатора (тип 10). Пакеты объявления и запроса маршрутизатора используются как часть IRDP (ICMP Internet Router Discovery Protocol), системы, которая позволяет хостам при загрузке или присоединении к сети динамически обнаруживать доступные маршрутизаторы.

В большинстве случаев для хоста лучше настроить статические маршруты для шлюзов, которые он будет использовать. Эти пакеты должны приниматься в тех же ситуациях, что и пакеты перенаправления ICMP. Фактически, поскольку хост не будет знать предпочтительный маршрут для трафика любых обнаруженных маршрутов, сообщения перенаправления часто необходимы непосредственно после обнаружения. Если вы не используете службу, которая отправляет пакеты запроса маршрутизатора или изменяет ваши маршруты на основе рекламных пакетов (например,rdisc), вы можете безопасно заблокировать эти пакеты.

Типы, которые часто можно разрешить

Типы ICMP, которые обычно безопасно разрешать, приведены ниже, но вы можете отключить их, если хотите быть особенно осторожными.

  • Тип 8 - Эхо-запрос: это пинг-запросы, направленные на ваш сервер. Обычно это безопасно (отказ от этих пакетов не скрывает ваш сервер. У пользователей есть множество других способов узнать, работает ли ваш хост), но вы можете заблокировать их или ограничить адреса источников, на которые вы отвечаете, если хотите.

  • Тип 13 - Запрос метки времени: эти пакеты могут использоваться клиентами для сбора информации о задержке. Они могут использоваться в некоторых методах снятия отпечатков ОС, поэтому блокируйте их, если хотите, или ограничьте диапазон адресов, на которые вы отвечаете.

Типы, указанные ниже, обычно могут быть разрешены без явных правил путем настройки вашего брандмауэра, чтобы разрешать ответы на запросы, которые он сделал (с помощью модуляconntrack для разрешения трафикаESTABLISHED иRELATED).

  • Тип 0 - Эхо-ответы. Это ответы на эхо-запросы (эхо-запросы).

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

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

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

  • Тип 14 - Ответы на метки времени. Это ответы на запросы меток времени, генерируемые вашим сервером.

Некоторые эксперты по безопасности по-прежнему рекомендуют блокировать весь входящий ICMP-трафик, однако многие сейчас поддерживают интеллектуальные политики принятия ICMP. Ссылкиhere иhere содержат дополнительную информацию.

Ограничение соединения и ограничение скорости

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

Ограничение соединения

Ограничение подключений может быть реализовано с помощью таких расширений, какconnlimit, чтобы проверить, сколько активных подключений открыл клиент. Это может быть использовано для ограничения количества соединений, разрешенных за один раз. Если вы решите наложить ограничение на подключение, вам придется принять некоторые решения относительно того, как оно применяется. Общая разбивка решений:

  • Ограничение по адресу, сети или по всему миру?

  • Сопоставлять и ограничивать трафик для конкретной службы или для сервера в целом?

Соединения могут быть ограничены для каждого хоста отдельно, или ограничение может быть установлено для сегмента сети путем предоставления префикса сети. Вы также можете установить глобальное максимальное количество соединений для службы или всего компьютера. Имейте в виду, что их можно смешивать и сочетать, чтобы создавать более сложные политики для управления номерами соединений.

Ограничение скорости

Ограничение скорости позволяет вам создавать правила, которые определяют скорость или частоту, с которой трафик будет приниматься вашим сервером. Существует ряд различных расширений, которые можно использовать для ограничения скорости, включаяlimit,hashlimit иrecent. Выбор используемого расширения будет во многом зависеть отway, для которого вы хотите ограничить трафик.

Расширениеlimit приведет к тому, что рассматриваемое правило будет согласовано до тех пор, пока не будет достигнут предел, после чего дальнейшие пакеты будут отброшены. Если вы установите ограничение, например «5 / сек», и правило будет разрешать совпадение 5 пакетов в секунду, после чего правило больше не будет совпадать. Это хорошо для установки глобального ограничения скорости для услуги.

Расширениеhashlimit более гибкое, позволяя указать некоторые значения, которыеiptables будет хешировать для оценки совпадения. Например, он может посмотреть на адрес источника, порт источника, адрес назначения, порт назначения или произвольную комбинацию этих четырех значений для хеширования каждой записи. Он может ограничиваться полученными пакетами или байтами. По сути, это обеспечивает гибкое ограничение скорости для каждого клиента или услуги.

Расширениеrecent динамически добавляет IP-адреса клиентов в список или сверяется с существующим списком, если правило соответствует. Это позволяет вам распределить свою ограничивающую логику между несколькими различными правилами для сложных шаблонов. Он имеет возможность указывать количество обращений и временной диапазон, как и другие ограничители, но также может сбрасывать временной диапазон, если виден дополнительный трафик, эффективно заставляя клиента останавливать весь трафик, если он ограничен.

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

Монолитный и Цепной менеджмент

Вся политика брандмауэраiptablesоснована на расширении встроенных цепочек. Для простых брандмауэров это часто принимает форму изменения политики по умолчанию для цепочек и добавления правил. Для более сложных межсетевых экранов часто полезно расширить структуру управления, создав дополнительные цепочки.

Созданные пользователем цепочки неразрывно связаны с их цепочкой вызовов. Созданные пользователем цепочки не имеют политики по умолчанию, поэтому, если пакет проваливается через созданную пользователем цепочку, он возвращается в вызывающую цепочку и продолжает оценку. Имея это в виду, созданные пользователем цепочки в основном полезны для организационных целей, чтобы сделать условия соответствия правил более СУХИМЫМИ, и улучшить читаемость путем разделения условий совпадения.

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

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

Решение о том, следует ли объединять все ваши правила в одну из встроенных цепочек или создавать или использовать дополнительные цепочки, во многом будет зависеть от того, насколько сложным и простым в управлении является ваш набор правил.

Заключение

К настоящему времени у вас должно быть довольно хорошее представление о некоторых решениях, которые вам придется принять при разработке политик брандмауэра для ваших серверов. Обычно время, затрачиваемое на межсетевые экраны, сильно зависит от начальной настройки, оставляя управление довольно простым. Хотя для разработки политики, которая наилучшим образом соответствует вашим потребностям, может потребоваться некоторое время, обдумывание и эксперименты, но это даст вам больший контроль над безопасностью вашего сервера.

Если вы хотите узнать больше о межсетевых экранах и, в частности, оiptables, ознакомьтесь со следующими статьями:

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

Related