Uncomplicated Firewall (UFW) — это утилита для настройки межсетевого экрана Netfilter в операционных системах Linux, особенно в Ubuntu. Разработанная Canonical Ltd., UFW предоставляет простой и понятный интерфейс командной строки для управления сетевыми правилами, позволяя администраторам легко настраивать входящие и исходящие соединения. UFW поддерживает IPv6,
имеет возможность ведения логов и позволяет гибко настраивать правила фильтрации трафика, включая разрешение или блокировку определенных портов, а также поддержку многопортовых правил.
Устанавливем UFW с помощью команды:
По умолчанию UFW отключен, проверить состояние UFW можно командой:
Если UFW включен, то в консоли будут отображаться установленные правила, консоль может выглядеть следующим образом:
Так вы всегда можете узнать как настроен фаервол.
Внимание! Перед включением UFW необходимо провести начальную настройку. В частности, должен быть доступен SSH (порт 22). В противном случае вы рискуете потерять доступ к серверу.
Добавление правила для SSH-соединений
Чтобы разрешить входящие SSH-соединения, выполните команду:
Демон SSH ожидает подключений через порт 22. UFW знает о таких популярных сервисах, как ssh, sftp, http и https, поэтому вы можете использовать их имена вместо указания номера порта.
Однако если ваш SSH-демон работает на другом порту, вам нужно явно разрешить его, например:
После этого ваш брандмауэр готов к работе.
Запуск UFW
Чтобы активировать UFW, выполните команду:
Вы увидите предупреждение:
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
Это значит, что запуск UFW может прервать текущее SSH- соединение. Однако мы уже добавили правило для SSH в настройки UFW, поэтому разрыва соединения не произойдёт. Просто нажмите «y».
Добавление правил для других подключений
Для обеспечения корректной работы приложений на сервере необходимо настроить правила брандмауэра, позволяющие доступ к определенным службам и портам.
HTTP (80 порт)
Незашифрованные веб-серверы используют порт 80 для HTTP-трафика. Чтобы разрешить доступ к этому порту, можно использовать следующие команды:
или:
Эти команды добавляют правило, разрешающее доступ к порту 80 из любого источника.
HTTPS (443 порт)
Зашифрованные соединения используют порт 443 для HTTPS-трафика. Правила для HTTPS аналогичны правилам для HTTP, но с использованием порта 443:
или:
FTP (21 порт)
Порт 21 используется для незашифрованной передачи файлов по протоколу FTP. Чтобы разрешить доступ к этому порту, можно использовать команду:
или:
Добавление диапазонов портов
Если необходимо разрешить доступ к диапазону портов, можно использовать следующую команду:
Также можно указать конкретный протокол для диапазона портов:
Добавление IP-адресов
Для разрешения доступа к серверу из определенных IP-адресов можно использовать команду:
Это правило разрешает доступ к любому порту сервера с указанного IP-адреса.
Если необходимо ограничить доступ к конкретному порту, можно использовать команду:
Также можно работать с диапазонами IP-адресов:
Ограничение подключений
Чтобы запретить HTTP-соединения, можно использовать команду:
Если необходимо запретить все соединения с определенным IP-адресом, можно использовать команду:
Удаление правил
Существует два способа удаления правил. Первый — по номеру правила. После выполнения команды sudo ufw status numbered
можно увидеть список активных правил с их номерами.
Затем можно удалить правило, используя команду:
где 3 — это номер правила, которое нужно удалить.
Второй способ заключается в использовании фактического правила, например:
или:
Отключение UFW
Чтобы отключить UFW, можно использовать команду:
Это приведет к тому, что все созданные ранее правила потеряют силу.
Сброс правил
Если необходимо сбросить текущие настройки, можно использовать команду:
Это приведет к тому, что все правила будут отключены и удалены.
Логи
UFW поддерживает ведение журнала событий, который может быть полезен для отслеживания активности и обнаружения потенциальных угроз. Для включения логирования можно использовать команду:
Ufw поддерживает несколько уровней логирования:
- off — отключен.
- low — регистрирует все заблокированные пакеты, не соответствующие заданной политике (с ограничением скорости), а также пакеты, соответствующие зарегистрированным правилам.
- medium — все то, что при значении low. Плюс все разрешенные пакеты, не соответствующие заданной политике, все недопустимые пакеты, и все новые соединения. Все записи ведутся с ограничением скорости.
- high — работает также как и medium. Плюс все пакеты с ограничением скорости.
- full — также как и high, но без ограниения скорости.
Чтобы задать уровень логирования, можно использовать команду:
По умолчанию используется уровень low.
Заключение
Правильное управление правилами брандмауэра является важным аспектом безопасности сервера. Настроив доступ к необходимым службам и портам, а также заблокировав ненужные подключения, можно значительно снизить риски проникновения на сервер и совершения вредоносных действий.