VPS

Iptables – защита VPS на Ubuntu межсетевым экраном Linux

Вступление

Межсетевой экран Linux Iptables используется для мониторинга входящего и исходящего трафика на сервер и его фильтрации. Его работа основана на правилах, определяемых пользователями и призвана защитить систему от нежелательного доступа кого-либо. Используя Iptables, вы можете определить правила, которые будут разрешать только определённый трафик на ваш сервер. В этом руководстве по Iptables вы увидите, как защитить ваше веб-приложение используя Iptables.

Примечание: Для пользователей RHEL/ CentOS уже установлен в операционной системе сервис firewallD. Если вы хотите использовать Iptables, вам нужно вначале его отключить.

Что понадобится

Прежде чем приступить к выполнению руководства, проверьте наличие:

Если вы хотите узнать больше о SSH и SSH командах следуйте этому руководству.

Базовые понятия в Iptables

Все данные отправляются через интернет в форме пакетов. Ядро Linux обеспечивает интерфейс для фильтрации как входящих, так и исходящих пакетов используя таблицы для фильтра пакетов. Iptables – это приложение командной строки, межсетевой экран Linux. Вы можете использовать его для установки, обслуживания и проверки этих таблиц. Могут быть определены сложные таблицы. В каждой таблице может быть несколько цепочек. Цепочки – это ни что иное, как набор правил. Каждое правило определяет, что делать с пакетом, если он соответствует некоторому заданному шаблону. Когда пакет соответствует, задаётся TARGET (действие). Действие может быть обнаружить соответствие с другой цепочкой или одному из трёх специальный значений:

  • ACCEPT (принять): Что означает, пакету будет разрешено прохождение.
  • DROP (сбросить): Что означает, пакету не будет разрешено прохождение, он будет сброшен и “забыт”.
  • RETURN (вернут): Означает, пропустить текущую цепочку и вернуться к следующему правилу в цепочке, из которой он был вызван.

В рамках данного руководства мы собираемся работать с одной из таблиц по умолчанию под названием filter. Таблица фильтров имеет три цепочки (набора правил).

  • INPUT – Эта цепочка используется для контроля входящих на сервер пакетов. Вы можете разрешить/заблокировать подключение, в зависимости от порта, протокола или IP-адреса источника.
  • FORWARD – Данная цепочка используется для фильтра входящих на сервер пакетов, но перенаправляемых куда-то ещё.
  • OUTPUT – Эта цепочка используется для фильтра исходящих с вашего сервера пакетов.

Iptables tutorial - filters table

Шаг 1 – Установка межсетевого экрана Linux Iptables

1. Установка Iptables

Приложение Iptables идёт предустановленным в почти всех дистрибутивах Linux. Но, если вдруг в вашей системе Ubuntu/Debian оно не установлено, выполните команды:

2. Проверка текущего статуса Iptables

Этой командой вы можете проверить статус конфигурации вашего Iptables. Здесь ключ -L используется для отображения списка всех правил и ключ -v – для более детального списка. Пожалуйста, обратите внимание, что эти ключи являются чувствительными к регистру (case sensitive).

Пример вывода:

Это вывод результата выполнения команды, приведенной выше. Здесь все три цепочки установлены в значение политики по умолчанию ACCEPT. На данный момент нет правил ни для одной из цепочек.

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

Шаг 2 – Определение цепочки правил

Определение правила значит добавить его в список (цепочку). Вот команды Iptables, дополненные определёнными параметрами. Нам не обязательно определять их все.

Здесь -A указывает на дополнение (append). Цепочка указывает на цепочку, которую мы хотим дополнить нашими правилами. Значение interface – это сетевой интерфейс, где мы хотим производить фильтрацию трафика. Значение protocol указывает на сетевой протокол пакетов, которые вы хотите фильтровать. Также вы можете определить номер порта – port, по которому вы хотите фильтровать трафик.

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

1. Разрешение трафика на localhost

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

Пример вывода на экран:

Здесь опция -A используется для того, чтобы добавить к цепочке INPUT правило принимать все подключения на интерфейс lo. lo означает петлевой(loopback) интерфейс. Он используется для всех коммуникаций на localhost, как взаимодействие между базой данных и веб-приложением на одной и той же машине.

2. Разрешение подключения к HTTP, SSH, и SSL портам

Мы хотим, чтобы наши постоянные подключения по HTTP (порт 80), https (порт 443), ssh (порт 22) работали как обычно. Введите следующие команды для разрешения этого. Мы определим протокол, опция -p и соответствующий порт для каждого протокола опцией –dport (порт назначения – destination port).

Теперь все подключения по TCP-протоколу, с определёнными портами будут приняты.

3. Фильтрация пакетов на основании содержимого

Если вы хотите принять или отклонить пакеты, основываясь на IP-адресе или диапазоне IP-адресов, вы можете определить их при помощи опции -s. Например, для принятия пакетов с адреса 192.168.1.3 –

Вы можете настроить сбрасывание пакетов с IP-адреса подобной командой с опцией DROP.

Если вам нужно сбросить пакеты из диапазона IP-адресов, вам нужно использовать модуль Iprange с опцией -m и задать диапазон IP-адресов с ключом –src-range.

4. Отбрасывание всего остального трафика

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

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

5. Удаление правил

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

Эта команда удаляет все текущие правила. Если вы хотите удалить определённое правило, вы можете сделать это при помощи опции -D. Вначале, выведите список правил с номерами при помощи этой команды:

Теперь у вас есть список правил с номерами.

Чтобы удалить задайте номер в списке и цепочку правила. В нашем случае цепочка INPUT и номер 3.

Шаг 3 – Сохранение изменений

Правила Iptables, которые мы создали, сохранены в памяти. Это значит, что нам придётся их переопределять после перезагрузки. Для того, чтобы сделать эти изменения постоянными и после перезагрузки, используйте команду в системе Ubuntu/Debian:

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

Заключение

В нашем руководстве по Iptables мы использовали межсетевой экран Linux для разрешения трафика по определённым портам. Мы также убедились, что наши правила будут сохранены после перезагрузки. Данный межсетевой экран Linux будет сбрасывать нежелательные пакеты, но здесь есть оговорка – Iptables обрабатывает только трафик ipv4. Если на вашем VPS разрешена сетевая конфигурация ipv6, вам нужно установить другие правила для трафика с ip6tables.

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

Нажмите здесь, чтобы оставить комментарий

Присоединяйтесь к тысячам других подписчиков по всему миру

и получайте самые свежие руководства на вашу электронную почту

Пожалуйста, подождите...

Спасибо за подписку!

Начните экономить сейчас!

Хостинг и доменное имя от

руб.95
00