Установка и базовая настройка фаервола UFW
Дата публикации: 24.04.2026

Установка и базовая настройка фаервола UFW

Хочу себе такие же кнопки
ccb9a536


Установка и базовая настройка фаервола UFW: Защищаем сервер как крепость

Вы когда-нибудь видели, как охранник на входе в клуб проверяет гостей по списку? Кто-то проходит без вопросов, кого-то отправляют обратно, а подозрительных личностей вообще не пускают. Фаервол (межсетевой экран) UFW работает точно так же — он контролирует, какой трафик может "войти" на ваш сервер или "выйти" из него.

Для веб-мастера или арбитражника это критично:

  • Безопасность: Закроете уязвимости, которые ищут боты и хакеры.
  • Скорость: Отсечёте мусорный трафик, разгрузив сервер.
  • Изоляция: Разделите доступ для разных сервисов (например, только для вашего IP).

Сегодня вы научитесь: ✅ Устанавливать UFW на Ubuntu/Debian. ✅ Настраивать правила для SSH, HTTP/HTTPS и других портов. ✅ Блокировать атаки и автоматизировать защиту. ✅ Диагностировать проблемы с подключением.


1. Что такое UFW и почему не iptables?

UFW (Uncomplicated Firewall) — это "обёртка" над сложным инструментом iptables, которая делает настройку фаервола простой и интуитивной. Представьте:

  • iptables — это ручная коробка передач в гоночном болиде: мощно, но требует мастерства.
  • UFW — автомат в надёжном седане: достаточно знать, куда ехать.
Характеристика iptables UFW
Сложность Высокая (команды из 10+ параметров) Низкая (команды из 2-3 слов)
Подходит для Экспертов, тонкой настройки Начинающих и 90% задач
Логирование Настраивается вручную Включается одной командой
Ошибки Легко сломать сеть Защита от дурака

Важно: UFW доступен по умолчанию в Ubuntu/Debian. Для других дистрибутивов (CentOS, Arch) есть аналоги: firewalld или nftables.


2. Установка UFW

Шаг 1: Проверка наличия UFW

Откройте терминал и выполните:

ufw --version

Если увидите версию (например, ufw 0.36) — UFW уже установлен. Если нет — устанавливаем:

Шаг 2: Установка (если отсутствует)

Для Ubuntu/Debian:

sudo apt update && sudo apt install ufw -y

Для CentOS/RHEL (через EPEL):

sudo yum install epel-release -y && sudo yum install ufw -y

Шаг 3: Проверка статуса

sudo ufw status

Ответ должен быть:

Status: inactive

Это нормально — фаервол выключен по умолчанию.


3. Базовая настройка: Правила для SSH, HTTP/HTTPS

⚠️ Предупреждение: Если вы подключены к серверу по SSH, сначала разрешите порт 22, иначе рискуете потерять доступ!

Шаг 1: Разрешаем SSH (порт 22)

sudo ufw allow 22/tcp

или (ещё надёжнее — только для вашего IP):

sudo ufw allow from 123.123.123.123 to any port 22 proto tcp

Замените 123.123.123.123 на ваш реальный IP. Узнать его можно здесь.

Шаг 2: Разрешаем веб-трафик (HTTP/HTTPS)

Для веб-сервера (Nginx/Apache) нужны порты 80 (HTTP) и 443 (HTTPS):

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Или одной командой:

sudo ufw allow "Nginx Full"  # Для Nginx
sudo ufw allow "Apache Full" # Для Apache

Шаг 3: Активируем UFW

sudo ufw enable

Система спросит подтверждение:

Command may disrupt existing ssh connections. Proceed with operation (y|n)? y

Отвечайте y и нажимайте Enter.

Шаг 4: Проверяем правила

sudo ufw status numbered

Пример вывода:

Status: active

     To                         Action      From
     --                         ------      ----
[1] 22/tcp                     ALLOW       123.123.123.123
[2] 80/tcp                     ALLOW       Anywhere
[3] 443/tcp                    ALLOW       Anywhere

numbered показывает правила с номерами — это пригодится для их удаления/изменения.


4. Продвинутые правила: Блокировка атак и изоляция

Правило 1: Блокировка подозрительных IP

Допустим, вы заметили в логах (/var/log/auth.log) попытки взлома с IP 192.168.1.100. Блокируем его навсегда:

sudo ufw deny from 192.168.1.100 to any

Правило 2: Ограничение количества подключений (защита от DDoS)

Если кто-то пытается заспамить ваш сервер запросами, ограничим порт 80 до 10 соединений в минуту:

sudo ufw limit 80/tcp

Это создаст правило, которое временно блокирует IP после превышения лимита.

Правило 3: Разрешение доступа только для конкретной сети

Например, разрешим доступ к порту 3306 (MySQL) только для локальной сети 192.168.1.0/24:

sudo ufw allow from 192.168.1.0/24 to any port 3306 proto tcp

Правило 4: Перенаправление портов (проброс)

Допустим, у вас работает сервис на порту 8080, но вы хотите, чтобы он был доступен через 80:

sudo ufw allow 80/tcp
sudo ufw route allow proto tcp from any to any port 8080

Это полезно для проксирования трафика (например, через Nginx).


5. Управление правилами: Изменение и удаление

Как удалить правило

Узнаём номер правила (из sudo ufw status numbered), затем удаляем:

sudo ufw delete 3  # Удалит правило с номером 3

Как отключить UFW (временно)

sudo ufw disable

Внимание: Отключайте фаервол только для отладки! В рабочем режиме он должен быть всегда включён.

Как сбросить все правила

Если всё сломалось и нужно начать с чистого листа:

sudo ufw reset

Это удалит все правила и отключит UFW.


6. Логирование и диагностика

Включение логов

Чтобы видеть, кто стучится к вашему серверу:

sudo ufw logging on

Логи пишутся в /var/log/ufw.log. Посмотреть их:

sudo tail -f /var/log/ufw.log

Пример записи: [UFW BLOCK] IN=eth0 OUT= MAC=... SRC=192.168.1.100 DST=ваш_IP LEN=40 TOS=0x00 PREC=0x00 TTL=55 ID=12345 PROTO=TCP SPT=4444 DPT=22 WINDOW=1024 RES=0x00 SYN URGP=0 Это означает, что кто-то с IP 192.168.1.100 пытался подключиться к вашему SSH (порт 22), но был заблокирован.

Проверка открытых портов

Если что-то не работает, проверьте, открыт ли порт:

sudo ufw status | grep 80

Или через netstat:

sudo netstat -tulnp | grep 80

7. Автоматизация: Настройка UFW при старте сервера

UFW автоматически запускается при загрузке системы, но если вы изменили правила, их нужно сохранить:

sudo ufw enable  # Сохраняет правила в /etc/ufw/

Чтобы проверить, что UFW добавлен в автозагрузку:

systemctl is-enabled ufw

Должен вывести: enabled.


8. Типичные ошибки и их решение

Проблема Причина Решение
Не могу подключиться по SSH Забыли разрешить порт 22 до включения UFW Подключитесь через консоль хостинга и исправьте правила
Сайт не открывается Не разрешили порты 80/443 sudo ufw allow 80/tcp и sudo ufw allow 443/tcp
UFW не сохраняет правила Не выполнили sudo ufw enable Выполните команду и перезагрузите сервер
Логи пустые Логирование отключено sudo ufw logging on

Практика для закрепления

Упражнение 1: Базовая настройка

  1. Установите UFW на ваш сервер (или виртуальную машину).
  2. Разрешите доступ по SSH только для вашего IP.
  3. Разрешите порты 80 и 443.
  4. Включите UFW и проверьте статус.

Упражнение 2: Блокировка атак

  1. Добавьте правило, которое блокирует IP 1.2.3.4.
  2. Ограничьте порт 22 до 5 соединений в минуту (защита от брутфорса).
  3. Проверьте логи (/var/log/ufw.log) после попытки подключения.

Упражнение 3: Проброс портов

  1. Представьте, что у вас работает сервис на порту 3000.
  2. Настройте UFW так, чтобы трафик с порта 80 перенаправлялся на 3000.
  3. Проверьте доступность сервиса через браузер.

Упражнение 4: Диагностика

  1. Отключите UFW (sudo ufw disable).
  2. Попробуйте подключиться к серверу по SSH и открыть сайт.
  3. Включите UFW обратно и сравните поведение.

Вопрос для размышления

Почему опасно разрешать доступ ко всем портам для любого IP? Приведите 2 примера атак, которые это позволяет провести.


Итоги

Теперь ваш сервер защищён как крепость:

  • SSH доступен только вам.
  • Веб-трафик проходит без помех.
  • Подозрительные IP блокируются автоматически.
  • Логи помогают отслеживать атаки.

Следующий шаг: Настройте fail2ban для автоматической блокировки брутфорс-атак (это будет в следующем уроке).

Помните: Фаервол — это как замок на двери. Он не защитит от всех угроз, но сделает жизнь хакера намного сложнее. Всегда обновляйте правила и следите за логами!


Введение: чем VDS отличается от шаред-хостинга и зачем это веб-мастеру
Как правильно выбрать тариф: CPU, RAM, NVMe или SSD, канал
Выбор операционной системы: почему Ubuntu 22.04/24.04 — стандарт индустрии
Регистрация домена и первичная настройка DNS-записей (A, AAAA, CNAME)
Генерация SSH-ключей на локальном компьютере (Windows/Mac/Linux)
Добавление публичного ключа на сервер и первый вход по SSH
Отключение входа по паролю и запрет авторизации для root
Смена стандартного порта SSH для снижения шума в логах
Создание основного рабочего пользователя с правами sudo
Базовое обновление системы и установка необходимых утилит (curl, wget, git, htop)
Настройка часового пояса и синхронизация времени (NTP)
Установка и базовая настройка фаервола UFW
Разрешение только необходимых портов (SSH, HTTP, HTTPS)
Установка Fail2Ban для защиты от перебора паролей
Настройка правил Fail2Ban для SSH и веб-сервера
Знакомство с Docker: установка движка и CLI
Установка Docker Compose для управления мульти-контейнерными приложениями
Основы изоляции: почему каждый проект должен быть в своем контейнере
Подготовка файловой структуры сервера для удобного хранения проектов
Развертывание Nginx как обратного прокси-сервера через Docker
Настройка конфигурации Nginx для статических сайтов
Установка PHP-FPM в отдельном контейнере
Связка Nginx и PHP-FPM через внутреннюю Docker-сеть
Оптимизация настроек PHP-FPM (pm.max_children, memory_limit) под нагрузку
Установка MariaDB/MySQL в изолированном контейнере
Безопасное хранение паролей от БД через переменные окружения (.env)
Подключение к базе данных из внешнего клиента (DBeaver/Navicat) через туннель
Установка Redis для кэширования запросов и сессий
Интеграция Redis с PHP-приложением для ускорения работы
Автоматическая выдача SSL-сертификатов через Certbot (Let's Encrypt)
Настройка автопродления SSL-сертификатов по крону
Принудительный редирект с HTTP на HTTPS в Nginx
Включение gzip и brotli сжатия для ускорения загрузки страниц
Настройка кэширования статики (browser caching) в заголовках Nginx
Защита от простых DDoS и ботов: модуль limit_req в Nginx
Настройка резервного копирования баз данных (mysqldump) по расписанию
Настройка резервного копирования файлов проектов (tar)
Отправка бэкапов на удаленное хранилище (S3-compatible storage или другой сервер)
Ротация и очистка старых логов, чтобы не забить диск
Мониторинг нагрузки: установка и настройка htop и iotop
Просмотр логов в реальном времени: tail, grep и journalctl
Установка простого мониторинга доступности (Uptime Kuma или скрипт в Telegram)
Изоляция арбитражных инструментов: запуск ботов в отдельных контейнерах
Установка SOCKS5/HTTP прокси (3proxy) внутри Docker для мультиаккаунтинга
Настройка аутентификации и ограничения доступа к прокси по IP
Проверка анонимности и работы прокси-сервера
Оптимизация ядра Linux (sysctl.conf) для высоких нагрузок и сетевых соединений
Настройка swap-файла: когда он нужен, а когда вредит
Чек-лист финальной проверки безопасности перед запуском проекта
План действий при взломе или падении сервера: восстановление из бэкапа
АПТЕЧКА ДЛЯ ЖИВОТНЫХ
Автомобили Германии — FORD, MERSEDES, VW, IVECO
Чат рулетка 2026: чаты, где каждый момент — шанс
Чат рулетка онлайн
Чат с Аней: психологический разговор
Чатрулетка: новый способ общения
Чай и кофе: сила вкуса
Детские игрушки из безопасных материалов
Эксплуатация шин: Рекомендации по использованию
Фототехника для пейзажей
Как Aptum хостинг помогает малым бизнесам в управлении CRM-системами
Как выбрать Vdsina вечный хостинг для своего проекта
Компоненты безопасности IP
Конкуренция на российском автомобильном рынке
Онлайн генератор паролей для Windows
Оптимизация обработки форм GEO проекта
Сервер для социальных сетей: Безопасность, Скорость, Изоляция
Смешные моменты
Сравнение Arsys хостинг сервисов для блогеров с WordPress на 2023 год
Весь экран под циферблат
рейтинг хостингов 2026 Быстрые VDS серверы