🛡️ UFW: Ваш личный телохранитель в мире цифрового хаоса
- Получить ссылку
- X
- Электронная почта
- Другие приложения
Вы когда-нибудь задумывались, сколько раз за день кто-то пытается постучаться в ваш сервер? Спойлер: намного больше, чем вы думаете.
🤔 Вместо введения: что такое брандмауэр и
зачем он вам?
Представьте,
что ваш сервер — это дом. В нём живут важные данные, работают сервисы, общаются
пользователи. И каждую секунду кто-то пытается открыть дверь — проверить, не
оставили ли вы её незапертой.
Брандмауэр —
это дверной замок. Только умный.
Он решает, кому
входить, а кому оставаться за порогом. И если в реальной жизни вы сами решаете,
открывать ли дверь незнакомцу, то в цифровом мире этим занимается брандмауэр.
UFW — это тот самый замок, который не требует от вас быть
дипломированным слесарем, чтобы его настроить.
📜 Немного истории: почему UFW вообще
появился?
В далёком 1998
году, когда интернет был медленным, а хакеры — редкими, управлять брандмауэром
в Linux могли только избранные. Всё потому, что использовался iptables —
мощнейший, но невероятно сложный инструмент.
Чтобы просто открыть порт для SSH, нужно было вводить команду на несколько строк:
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate
NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack
--ctstate ESTABLISHED -j ACCEPT
И это только
для одного порта. А если нужно было открыть веб-сервер, почту, базу данных?
Готовьтесь к многочасовым ритуалам с магией командной строки.
Разработчики
Ubuntu посмотрели на это и сказали: «Эй, а давайте сделаем что-то простое!» Так
в 2012 году, с выходом Ubuntu 12.04, появился Uncomplicated Firewall —
«Несложный брандмауэр». Главная философия проекта: предоставить
пользователю понятный интерфейс, не требующий глубоких знаний синтаксиса.
И знаете что? У
них получилось. Сегодня одна команда sudo ufw allow ssh заменяет две
громоздкие строки iptables.
🧠 Как UFW устроен изнутри?
UFW — это не
самостоятельный брандмауэр. Это надстройка (или, если хотите,
«обёртка») над iptables и Netfilter — ядром Linux, которое реально фильтрует
трафик.
Простая
аналогия:
- Netfilter — это сам закон.
- iptables — это сложный юридический
кодекс на 1000 страниц.
- UFW — это краткая памятка с
простыми правилами.
Когда вы
вводите sudo ufw allow 80, UFW «переводит» эту команду на язык iptables и
передаёт ядру. Всё остальное происходит за кулисами. Вы просто говорите, чего
хотите, а UFW делает это за вас.
🚀 Первые шаги: настройка UFW с нуля
Допустим, у вас
есть свежий сервер. Он как новенькая квартира: двери открыты, окна распахнуты —
все приглашаются. Это опасно.
Шаг 1. Проверяем статус
sudo ufw status
Скорее всего, вы увидите:
Status:
inactive
Это значит, что
брандмауэр выключен. Все порты открыты.
Шаг 2.
Настраиваем базовые правила (самый важный момент!)
Перед тем как
включить брандмауэр, нужно сказать ему, что делать. Иначе вы рискуете заблокировать
самого себя — особенно если работаете по SSH на удалённом сервере.
Вот золотое правило: сначала разрешите SSH, только потом включайте брандмауэр.
# Разрешаем SSH
(порт 22)
sudo ufw allow ssh
# или
sudo ufw allow 22
Теперь можно настраивать политику по умолчанию: запрещаем все входящие, разрешаем все исходящие.
sudo ufw default deny incoming
sudo ufw
default allow outgoing
Это стандартная
и безопасная политика. Исходящие соединения (например, когда ваш сервер сам
скачивает обновления) не блокируются. А вот кто-то снаружи не сможет зайти без
вашего разрешения.
Шаг 3. Включаем брандмауэр
sudo ufw enable
Вы увидите:
Firewall is active and enabled on system
startup[reference:16]
Поздравляю! Ваш
сервер теперь под защитой.
Шаг 4. Проверяем статус с деталями
sudo ufw status
verbose
Вывод покажет что-то вроде:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny
(routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
🎯 Практические примеры: открываем порты
для сервисов
Теперь, когда
брандмауэр включён, давайте научимся открывать порты. UFW делает это настолько
просто, что вы удивитесь.
🔓 Самые частые сценарии
SSH (порт 22) — удалённое управление сервером:
sudo ufw allow ssh
# или через
порт
sudo ufw allow 22/tcp
HTTP (порт 80) и HTTPS (порт 443) — веб-сервер:
sudo ufw allow http
sudo ufw allow https
# или
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
WireGuard (порт 51820/udp) — ваш VPN:
sudo ufw allow 51820/udp
База данных (порт 3306 для MySQL / 5432 для PostgreSQL) — если нужен доступ извне:
sudo ufw allow 3306/tcp # MySQL
sudo ufw allow 5432/tcp # PostgreSQL
⚠️ Важно:
базы данных лучше держать закрытыми от внешнего мира и открывать только для
доверенных IP-адресов. О том, как это сделать, читайте ниже.
🔒 Открываем порт только для конкретного
IP
Представьте: вы хотите, чтобы к админке вашего сайта имели доступ только вы и ваш коллега. Остальным — вход воспрещён.
sudo ufw allow from 123.45.67.89 to any port 22
Здесь 123.45.67.89 —
это IP-адрес, которому вы доверяете. Теперь даже если кто-то узнает пароль от
SSH, он не сможет зайти с другого адреса.
🚫 Блокируем нежелательный IP
В прошлых статьях мы обсуждали атаки на ваш сервер — помните IP-адреса из логов fail2ban? Их можно заблокировать вручную:
sudo ufw deny
from 103.189.235.167
🎨 Открываем диапазон портов (для игр или
P2P)
Некоторым приложениям нужно много портов сразу:
sudo ufw allow 1000:2000/tcp
🧠 Продвинутые техники: когда просто
«allow» недостаточно
UFW умеет
больше, чем кажется.
🔐 Открываем порт только для определённого
интерфейса
На сервере может быть несколько сетевых интерфейсов: публичный (eth0) и внутренний (eth1). Вы можете разрешить доступ к сервису только через внутреннюю сеть:
sudo ufw allow in on eth1 to any port 3306
Это значит:
база данных доступна только с других серверов в вашей внутренней сети.
🧩 Удаляем правило
Ошиблись? Не проблема:
# Посмотреть
номера правил
sudo ufw status
numbered
sudo ufw delete
3
🧪 Сброс всех правил (осторожно!)
Если вы всё испортили и хотите начать заново:
sudo ufw reset
Эта команда
вернёт UFW к настройкам по умолчанию и отключит его. После этого вы сможете
настроить всё с чистого листа.
⚠️ Ошибки, которые совершают даже опытные администраторы
На первый
взгляд UFW кажется простым. И это его главный коварство. Вот самые частые
ловушки:
1. «Включил
UFW — и потерял доступ к серверу»
Классика. Вы
подключаетесь к серверу по SSH, включаете UFW без предварительного разрешения
SSH — и всё. Сессия обрывается. Доступ потерян.
Решение: всегда сначала sudo ufw allow ssh,
потом sudo ufw enable. И желательно держать открытой вторую SSH-сессию на
случай, если что-то пойдёт не так.
2. «Правило
есть, а трафик не проходит»
Вы открыли порт, а подключение всё равно не работает. Возможно, сервис слушает только на локальном интерфейсе (127.0.0.1) и не принимает соединения извне. Проверьте:
sudo netstat -tulpn
| grep :80
Если в строке
указано 127.0.0.1:80, значит, сервис доступен только с самого сервера.
3. «Docker
обходит UFW»
Это известная
проблема. Docker по умолчанию создаёт свои собственные правила iptables,
которые могут игнорировать настройки UFW. В результате порты
контейнеров могут быть открыты миру, даже если UFW говорит обратное.
Решение: нужно настроить Docker на
использование UFW или явно указывать интерфейсы при запуске контейнеров.
4. «Статус
показывает ALLOW, а соединения нет»
Бывает, что UFW показывает правило, но трафик всё равно блокируется. Проверьте:
sudo ufw status
verbose
Обратите
внимание на политику Default. Если там deny (incoming), а вы открыли
порт только для определённого IP — проверьте, что ваш IP совпадает.
📊 Как проверить, что UFW реально
работает?
Простой способ — попробовать подключиться к серверу с другого компьютера или использовать онлайн-инструменты проверки портов. Но есть и командный способ:
# Проверить,
какие порты слушает сервер
sudo netstat -tulpn
| grep LISTEN
# Сравнить с правилами UFW
sudo ufw status
numbered
Если порт есть
в netstat, но нет в ufw status — он недоступен извне. Если есть
в обоих — всё работает.
💎 Итог: почему UFW — ваш лучший друг в
мире серверов?
- Простота: одна команда вместо нескольких
строк iptables.
- Надёжность: UFW использует проверенный годами
механизм Netfilter.
- Гибкость: можно открывать порты для
конкретных IP, интерфейсов, диапазонов портов.
- Безопасность: по умолчанию блокирует всё
входящее, разрешает всё исходящее.
UFW — это не
просто инструмент. Это философия: безопасность должна быть доступной.
Не нужно быть гуру сетевых технологий, чтобы защитить свой сервер. Достаточно
знать несколько простых команд и понимать логику работы.
В следующей
статье мы разберём, как работает WireGuard — современный
VPN-протокол, который идеально сочетается с UFW и даёт максимальную
безопасность и скорость. Оставайтесь на связи! 🚀
📚 Источники
Материалы
подготовлены на основе открытых источников:
- Википедия — Uncomplicated
Firewall
- Ubuntu Documentation — Firewall
- Cloud.ru — UFW
в Ubuntu: полный путеводитель
- ZDNet — An
uncomplicated introduction to Uncomplicated Firewall
- LinuxSecurity — UFW
Important Firewall Misconfigurations and Risks
- LinuxSecurity — Ubuntu
UFW Firewall Advisory on Security Pitfalls
- Получить ссылку
- X
- Электронная почта
- Другие приложения
Популярные сообщения
🧬 ChaCha20 и Curve25519: Криптография под капотом WireGuard
Немного о том, зачем это нужно.
🔌 L2TP: протокол, который объединил лучшее от двух миров
⚡ ИИ-помощник (на OpenRouter)
Спросите про VPN, протоколы или настройку серверов.
Комментарии
Отправить комментарий