Настройка UFW на Linux (Ubuntu)
В Linux используется межсетевой экран под названием iptables. Для удобства конфигурирования используют различные графические оболочки. Рассмотрим одну из них — Uncomplicated Firewall (UFW).
Краткое описание
С английского языка название дословно переводится как несложный (упрощенный) брандмауэр. Особенность продукта — минимализм с графической оболочкой на основе командной строки. Если кратко, то UFW используют для базовых настроек межсетевого экрана. Он содержит необходимый минимум функций для стандартной защиты корпоративных ресурсов. Создание более сложных правил и тонкая настройка доступны в iptables.
Изначально решение разрабатывалось для операционных систем семейства Debian и Ubuntu. Дальнейшие действия выполняются под управлением Ubuntu.
Предварительная подготовка
Если UFW не установлен на серверной платформе, используем стандартную утилиту:
Второй вариант – утилита установлена, но неактивна, тогда прописываем:
Важно! Любые действия, связанные с конфигурированием продукта, выполняются с правами суперпользователя.
После инсталляции проверим состояние программы:
Стандартная конфигурация программы блокирует входящий трафик, но разрешает исходящий. Чтобы изменить параметры, открываем системный файл:
sudo ufw default allow outgoing
Первая строка отвечает за блокировку, а вторая за исходящие подключения.
Настройка
UFW распределяет правила согласно профилям программ. Они хранятся по следующему пути:
Создание нового или редактирование текущего профиля проводится администратором в ручном режиме. Для начала ознакомимся с текущими профилями:
Просмотр подробной информации по любой записи осуществляется при помощи следующей команды:
Где name — наименование профиля, которое заключается в одинарные кавычки.
Например, просмотрим сервис OpenSSH:
Первая строка — имя новой записи в UFW. Вторая описывает заголовок, по которому профиль будет идентифицироваться. Третья содержит краткое описание сервиса (рекомендуется использовать 1-2 предложения). Последняя строка указывает порты, которые необходимо открыть для работы приложения.
Сохраняем файл и перезагружаем межсетевой экран:
Следующий шаг — прописываем политику для новой записи. Доступно два режима: разрешить (Allow) и запретить (Deny). Синтаксис выглядит следующим образом:
Где action – одно из двух значений Allow или Deny, а name_profile — наименование профиля.
Операции с портами
Для открытия/закрытия портов также используется команды Allow/Deny, в зависимости от требований администратора. Синтаксис выглядит следующим образом:
Расшифровка:
1. action — одно из двух действий: разрешить (Allow) или запретить (Deny);
2. port — цифровое имя порта, для которого применяется правило;
3. name_protocol — наименование протокола.
Если требуется указать перечень портов, используем двоеточие между начальной и конечной точкой. Альтернативный вариант — использовать имя службы, для которой создается запись. Например, откроем порт для сервиса HTTP:
Важно! UFW разрешает стандартный порт, который закреплен за службой. Если значение отличается от общепринятых, то создавать правило по имени сервиса нельзя — оно не активируется.
Операции с IP-адресами
Аналогично портам правила создаются правила и для IP-адресов. Синтаксис идентичен предыдущему пункту:
Action – принимает значение Allow или Deny, IP-адрес – адрес оборудования, которому предоставляется/запрещается доступ к серверу.
Например, команду разрешить устройству с IP-адресом 10.68.23.15 доступ к всем портам сервера можно записать так:
Также доступна опция идентификации порта, например:
Добавление словосочетания to any port (name) задает конкретное значение порта, для которого доступ будет открыт. Вместо name указываем номер порта.
Если требуется создать правило для нескольких IP-адресов, используем видоизмененный синтаксис:
Операции с сетевым интерфейсом
При создании профилей также применяют имена сетевых интерфейсов. Синтаксис представлен ниже:
Поле action, как и в предыдущих разделах, принимает состояние Allow и Deny, а опция name_interface отвечает за наименование сетевого интерфейса, для которого создается правило.
Для просмотра списка активных интерфейсов вводим в терминале команду:
Также доступна дополнительная опция to any port — для однозначной идентификации порта.
Удаление записей
Чтобы удалить созданное ранее правило, используем ключ delete. В общем виде команда выглядит так:
Где number — порядковый номер записи в таблице конфигурации UFW. Чтобы проставить цифровые значения для каждой строки, укажем в терминале:
После этого просто указываем номер записи в таблице. Допустим:
Перезагрузка не требуется.