С появлением у вас сервера Ubuntu стоит задуматься об информационной безопасности. В принципе, о ней всегда стоит задумываться. В данном случае речь пойдёт об обеспечении сетевой безопасности и защиты внутренних процессов от внешней среды.
В Linux для этих целей используется iptables, но его освоение может оказаться достаточно сложной для начинающих пользователей. В дистрибутиве Ubuntu используется собственная оболочка для настройки брандмауэра iptables — UFW (Uncomplicated FireWall).
ufw --help
UFW (Uncomplicated Firewall) — это интерфейс iptables, предназначенный для упрощения процесса настройки брандмауэра.
iptables — утилита командной строки, которая является стандартным интерфейсом управления работой межсетевого экрана netfilter для ядер Linux, начиная с версии 2.4.
netfilter — межсетевой экран, встроен в ядро Linux с версии 2.4.
Начальная настройка UFW
Произведём начальную настройку UFW на внешнем сервере Ubuntu Server 22.04.4. Работаем под sudo.
Текущая версия UFW:
ufw --version
Текущий статус UFW по умолчанию inactive:
ufw status
Перед тем как приступить к настройке UFW, нужно позаботиться о том, чтобы не наступить на грабли. А именно: не закрыть себе доступ. Если у вас есть доступ к консоли сервера, уже хорошо, вы сможете что-то исправить. А если вы работаете через OpenSSH по 22 порту, то можно случайно себя заблокировать.
Я работаю из сети, у которой есть прямой IP адрес, добавлю его в разрешающее правило:
ufw allow from 46.39.246.23
Теперь с указанного IP можно получить доступ ко всем портам сервера, включая TCP 22, через который у меня открыта SSH сессия.
Включаем UFW:
ufw enable
Проверим статус:
ufw status
Отображается статус active и наше добавленное разрешающее правило. Меня не отключило от SSH, что хорошо.
Настроим правила по умолчанию.
- Все входящие соединения блокируем.
- Все исходящие соединения разрешаем
ufw default deny incoming
ufw default allow outgoing
План минимум выполнен, мы закрылись ото всех, разрешили доступ себе и открыли серверу путь наружу.
Добавим правила UFW
Мы защитились со всех сторон, иногда этого хватает, если сервер не требует внешних соединений. Пусть у нас сервер будет выполнять роль web-сервера, разрешим входящие соединения на TCP 80 (HTTP) и TCP 443 (HTTPS).
ufw allow 80/tcp
ufw allow 443/tcp
ufw status
Видим что набор разрешающих правил расширился.
Дополнительно
Для удаления правила UFW, используется команда delete:
ufw delete allow 80/tcp
ufw delete allow in 80/tcp
ufw delete allow out 80/tcp
Удаление по номеру:
ufw status numbered
ufw delete НОМЕР
ufw status numbered
Отключение UFW:
ufw disable
Сброс настроек:
ufw reset