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

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

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

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

Прежде чем приступить к обсуждению различных типов фаерволов, ознакомьтесь с трафиком Transport Control Protocol (TCP).

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

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

Типы фаерволов

Существует три базовых типа брандмауэров:

  • фильтры пакетов сетевого уровня (или stateless),
  • с сохранением состояния (или stateful),
  • и прикладного уровня.

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

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

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

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

Правила фаерволов

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

Предположим, у вас есть сервер со списком правил для входящего трафика:

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

Обратите внимание на слова «accept» и «drop» в этих примерах. С их помощью задаётся действие, которое фаервол должен выполнить в случае, если трафик отвечает правилу.

  • Accept значит разрешить трафик;
  • Reject – заблокировать трафик и вернуть ошибку «unreachable»;
  • Drop – заблокировать трафик и не возвращать ничего.

Далее правило должно содержать условия, с которыми сопоставляется каждый пакет трафика.

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

Политика фаервола по умолчанию

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

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

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

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

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

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

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

Создание правил исходящего трафика

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

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

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

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

Программы и инструменты

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

IPTables

IPTables – это стандартный фаервол, который по умолчанию входит в большинство дистрибутивов Linux

Примечание: Более современный вариант называется nftables и в скором времени он заменит этот пакет.

На самом деле IPTables является фронт-эндом для хуков netfilter на уровне ядра, при помощи которых можно управлять сетевым стеком Linux. Он работает путем сопоставления каждого пакета, пересекающего сетевой интерфейс, с набором правил.

Инструкции по настройке фаервола IPTables можно найти в следующих статьях:

UFW

UFW расшифровывается как Uncomplicated Firewall (то есть, незамысловатый фаервол). Это интерфейс для iptables, упрощающий процесс настройки фаервола.

Подробнее о UFW можно прочесть в статье «Настройка фаервола с помощью UFW на облачных серверах Ubuntu и Debian».

FirewallD

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

Чтобы перейти с FirewallD на более привычный iptables, читайте это руководство.

Fail2ban

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

Больше о Fail2ban:

Добавить!

Заключение

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

Tags: , , , ,

Добавить комментарий