Часть 04. Настройка фаервола UFW
Часть 04. Настройка фаервола UFW
«Запереть дверь — ещё не значит обезопасить дом. Но оставить её открытой — значит, гарантированно потерять всё, что внутри.» — Воланд
Глава 1. Что такое UFW и зачем он нужен
UFW (Uncomplicated Firewall) — это простая в использовании программа для управления сетевым фильтром в Linux. По сути, это удобный интерфейс к встроенному фаерволу ядра (nftables).
Без фаервола все порты сервера открыты внешнему миру. Любой бот или сканер может пробовать подключиться к любым сервисам. UFW закрывает всё, кроме явно разрешённого.
Политика работы:
- default deny incoming — всё входящее запрещено по умолчанию
- default allow outgoing — исходящие соединения разрешены (обновления, DNS и т.д.)
Каждый сервис открывает свой порт строго по необходимости.
Воланд, закуривая папиросу:
«Фаервол — это швейцар в приличном доме. Он не спрашивает, кто вы, пока вы не покажете приглашение. А без приглашения — даже не надейтесь.»
Глава 2. Проверка и установка UFW
На Ubuntu 24.04 LTS UFW часто предустановлен. Проверяем:
sudo ufw version
Ожидаемый вывод:
ufw 0.36.2
Copyright 2008-2023, Canonical Ltd.
Если утилита не найдена — устанавливаем:
sudo apt update && sudo apt install -y ufw
Проверяем статус (пока неактивен):
sudo ufw status
Ожидаемый вывод:
Status: inactive
Важно: Ни в коем случае не включайте UFW до добавления правил! Без правила для SSH вы мгновенно потеряете доступ к серверу.
Бегемот, протирая монокль:
«Пока фаервол спит — можно всё. Но как только проснётся — обратно уже не войти. Проверьте список правил дважды, смертные.»
Глава 3. Настройка политик по умолчанию
Запрещаем весь входящий трафик:
sudo ufw default deny incoming
Ожидаемый вывод:
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)
Эта команда устанавливает политику по умолчанию для входящих соединений: всё, что не разрешено явно, будет заблокировано.
Разрешаем весь исходящий трафик:
sudo ufw default allow outgoing
Ожидаемый вывод:
Default outgoing policy changed to 'allow'
(be sure to update your rules accordingly)
Исходящие соединения разрешены — сервер может скачивать обновления, отправлять почту, отвечать на запросы. Блокировать исходящий трафик имеет смысл только на особо защищённых серверах, нам это ни к чему.
Теперь политики UFW:
- Входящие: запрещено всё, кроме явно разрешённых портов
- Исходящие: разрешено всё
Воланд, поправляя манжеты:
«Входящие — только по приглашению. Исходящие — без ограничений. Хочешь обновить пакеты — пожалуйста. Хочешь послать лог — бога ради. Но попробуй постучаться внутрь без ключа — пеняй на себя.»
Глава 4. Добавление правил
4.1. SSH (порт 22022) с ограничением частоты
Сейчас SSH работает на порту 22022. Добавляем правило с limit — это не просто разрешение, а защита от подбора: UFW блокирует IP, с которого пришло более 6 попыток подключения за 30 секунд:
sudo ufw limit 22022/tcp
Команда выполняется без вывода.
4.2. Веб-порты (на будущее)
Для предстоящей установки веб-сервера Nginx и SSL-сертификатов сразу добавим правила для HTTP и HTTPS:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Команды выполняются без вывода.
Проверяем список добавленных правил перед активацией:
sudo ufw show added
Ожидаемый вывод:
Added rules:
ufw limit 22022/tcp
ufw allow 80/tcp
ufw allow 443/tcp
Коровьев, разглядывая таблицу портов:
«Три открытые двери из десятков тысяч. SSH — для администратора, 80-й и 443-й — для веба. Остальные — наглухо заперты. Никакой самодеятельности — только по делу.»
Глава 5. Включение фаервола
Активируем UFW:
sudo ufw --force enable
Ожидаемый вывод:
Firewall is active and enabled on system startup
Флаг --force отключает предупреждение о возможном разрыве SSH — правило для порта 22022 уже добавлено.
Проверяем статус:
sudo ufw status verbose
Ожидаемый вывод:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
To Action From
-- ------ ----
22022/tcp LIMIT Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
22022/tcp (v6) LIMIT Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
Пояснения к выводу:
Status: active— фаервол работаетLogging: on (low)— логирование включено на минимальном уровнеDefault: deny (incoming)— всё входящее запрещеноDefault: allow (outgoing)— исходящие разрешеныLIMIT— защита от подбора (rate limiting)(v6)— правило дублируется для IPv6
Включаем автозагрузку UFW при старте системы (ещё не сделано):
sudo systemctl enable ufw
Ожидаемый вывод:
Synchronizing state of ufw.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ufw
Глава 6. Проверка работы
Не закрывая текущую сессию, открываем второе окно терминала и проверяем, что SSH работает через фаервол:
ssh srv02
Если подключение успешно — фаервол настроен верно.
Проверяем, что закрытый порт (например, 3306 для MySQL) не отвечает извне. С другого компьютера:
nc -zv XX.XX.XX.XX 3306
Ожидаемый вывод (соединение отклонено):
nc: connect to XX.XX.XX.XX port 3306 (tcp) failed: Connection refused
Воланд, просматривая логи:
«Вот видите — уже кто-то стучится в закрытый порт. А MySQL у нас даже не установлен. Фаервол вежливо промолчал и записал это в журнал. Через неделю таких записей будут тысячи. Интернет — место шумное.»
Финал части: Резюме Воланда
| Параметр | Статус |
|---|---|
| UFW установлен и активен | ✅ |
| Политика deny incoming | ✅ |
| Политика allow outgoing | ✅ |
| Rate-limiting на SSH (22022) | ✅ |
| Открыт порт 80 (HTTP) | ✅ |
| Открыт порт 443 (HTTPS) | ✅ |
Воланд подводит итог четвёртой части:
«Фаервол заперт. Лишние двери закрыты, нужные — нараспашку, но с ограничением. Злоумышленникам остаётся только стучаться в глухую стену и записываться в лог. Пора ставить веб-сервер!»
Комментарии
Комментарии пока не подключены.