Поиск по сайту:

Что такое брандмауэр и как он работает?


Введение

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

В этом руководстве рассматривается, как работают брандмауэры, с акцентом на программные брандмауэры с отслеживанием состояния, такие как iptables и FirewallD, поскольку они относятся к облачным серверам. Мы начнем с краткого объяснения TCP-пакетов и различных типов брандмауэров. Затем мы обсудим различные темы, относящиеся к межсетевым экранам с отслеживанием состояния. Наконец, мы предоставим ссылки на другие руководства, которые помогут вам настроить брандмауэр на вашем собственном сервере.

Сетевые пакеты TCP

Прежде чем обсуждать различные типы брандмауэров, давайте кратко рассмотрим, как выглядит сетевой трафик протокола управления передачей (TCP).

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

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

Типы брандмауэров

Давайте быстро обсудим три основных типа сетевых брандмауэров: фильтрация пакетов (без сохранения состояния), с отслеживанием состояния и уровень приложений.

Фильтрация пакетов или брандмауэры без сохранения состояния работают, проверяя отдельные пакеты изолированно. Таким образом, они не знают о состоянии соединения и могут разрешать или отклонять пакеты только на основе отдельных заголовков пакетов.

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

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

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

Правила брандмауэра

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

Предположим, у вас есть сервер со следующим списком правил брандмауэра, которые применяются к входящему трафику:

  1. Принимать новый и установленный входящий трафик к общедоступному сетевому интерфейсу через порты 80 и 443 (веб-трафик HTTP и HTTPS)
  2. Переключите входящий трафик с IP-адресов нетехнических сотрудников в вашем офисе на порт 22 (SSH)
  3. Принимать новый и установленный входящий трафик из диапазона IP-адресов вашего офиса на интерфейс частной сети через порт 22 (SSH)

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

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

Политика по умолчанию

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

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

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

Входящий и исходящий трафик

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

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

Написание исходящих правил

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

Чтобы дополнить примеры входящих правил брандмауэра (1 и 3) из раздела «Правила брандмауэра» и обеспечить правильную связь по этим адресам и портам, мы могли бы использовать эти исходящие правила брандмауэра:

  1. Принимать установленный исходящий трафик к общедоступному сетевому интерфейсу через порты 80 и 443 (HTTP и HTTPS)
  2. Принимать установленный исходящий трафик к частному сетевому интерфейсу через порт 22 (SSH)

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

Программное обеспечение и инструменты брандмауэра

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

Iptables

Iptables — это стандартный брандмауэр, включенный в большинство дистрибутивов Linux по умолчанию (его начнет заменять современный вариант под названием nftables). На самом деле это внешний интерфейс для перехватчиков сетевых фильтров на уровне ядра, которые могут манипулировать сетевым стеком Linux. Он работает, сопоставляя каждый пакет, который проходит через сетевой интерфейс, с набором правил, чтобы решить, что делать.

Чтобы узнать, как реализовать брандмауэр с помощью iptables, перейдите по этим ссылкам:

  • Как настроить брандмауэр с помощью IPTables в Ubuntu 14.04
  • Как реализовать базовый шаблон брандмауэра с Iptables в Ubuntu 14.04
  • Как настроить брандмауэр Iptables для защиты трафика между вашими серверами

УФВ

UFW, что означает Uncomplicated Firewall, представляет собой интерфейс для iptables, предназначенный для упрощения процесса настройки брандмауэра.

Чтобы узнать больше об использовании UFW, ознакомьтесь с этим руководством: Как настроить брандмауэр с UFW на облачном сервере Ubuntu и Debian.

БрандмауэрD

FirewallD — это комплексное решение брандмауэра, доступное по умолчанию на серверах CentOS 7. Кстати, FirewallD использует iptables для настройки сетевого фильтра.

Чтобы узнать больше об использовании FirewallD, ознакомьтесь с этим руководством: Как настроить FirewallD для защиты вашего сервера CentOS 7.

Если вы используете CentOS 7, но предпочитаете использовать iptables, следуйте этому руководству: Как перейти с FirewallD на Iptables в CentOS 7.

Fail2ban

Fail2ban — это программное обеспечение для предотвращения вторжений, которое может автоматически настроить ваш брандмауэр так, чтобы он блокировал попытки грубой силы входа в систему и DDOS-атаки.

Чтобы узнать больше о Fail2ban, перейдите по этим ссылкам:

  • Как работает Fail2ban для защиты служб на сервере Linux
  • Как защитить SSH с помощью Fail2Ban в Ubuntu 14.04
  • Как защитить сервер Nginx с помощью Fail2Ban в Ubuntu 14.04
  • Как защитить сервер Apache с помощью Fail2Ban в Ubuntu 14.04

Заключение

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

Если вы хотите узнать больше о том, как работают брандмауэры, перейдите по этим ссылкам:

  • Как работает брандмауэр Iptables
  • Как выбрать эффективную политику брандмауэра для защиты серверов
  • Глубокое погружение в архитектуру Iptables и Netfilter