Введение / Зачем это нужно
Брандмауэр — это первый рубеж защиты любого сервера Linux. Он контролирует входящие и исходящие сетевые подключения, блокируя нежелательный трафик и защищая ваши данные. В Ubuntu стандартным инструментом для этого является UFW (Uncomplicated Firewall). После завершения этого руководства у вас будет настроенный брандмауэр, разрешающий необходимые сервисы (SSH, HTTP, HTTPS) и запрещающий всё остальное, что снижает риск атак и улучшает безопасность вашего сервера.
Требования / Подготовка
- Операционные системы: Ubuntu 22.04 LTS, Ubuntu 23.10, Debian 12 (другие дистрибутивы могут использовать аналогичные инструменты, например,
iptablesилиfirewalld). - Права пользователя: Доступ root через
sudo. - Сетевая инфраструктура: Сервер с установленным сетевым интерфейсом и доступом в интернет.
- Предустановленные пакеты: UFW уже включён в базовый репозиторий Ubuntu; вам понадобится только
sudoи базовые утилиты.
Установка UFW (если не установлен)
sudo apt update
sudo apt install ufw -y
Пошаговая инструкция
Шаг 1: Включить брандмауэр
Активируйте UFW и подтвердите действие:
sudo ufw enable
Вы увидите запрос Продолжить? [y/N]. Введите y, чтобы применить правила.
Шаг 2: Разрешить удаленный SSH-доступ
Для управления сервером по SSH разрешите входящие подключения на порт 22:
sudo ufw allow ssh
Вы также можете разрешить доступ только с конкретного IP-адреса (замените <IP> на нужный адрес):
sudo ufw allow from <IP> to any port 22
Шаг 3: Разрешить веб-трафик (HTTP/HTTPS)
Если вы размещаете веб-сервер, разрешите порты 80 (HTTP) и 443 (HTTPS):
sudo ufw allow 80
sudo ufw allow 443
Шаг 4: Проверить статус брандмауэра
Проверьте, что правила применяются корректно:
sudo ufw status verbose
Вывод покажет:
Status: active– брандмауэр включён.- Список разрешённых и заблокированных правил.
Шаг 5: Сохранить конфигурацию (опционально)
Правила сохраняются автоматически, но если вы хотите перезагрузить брандмауэр после изменений, выполните:
sudo ufw reload
Проверка результата
После выполнения шагов откройте терминал на удалённом хосте (или используйте ssh локально) и проверьте подключение:
ping -c 3 8.8.8.8
curl -I https://example.com
Если ping и HTTP-запросы проходят, брандмауэр работает корректно. Для тестирования заблокированного порта (например, 22) вы можете временно заблокировать его:
sudo ufw deny 22
и проверить, что SSH недоступен. После теста восстановите правило:
sudo ufw allow 22
Возможные проблемы
| Симптом | Причина | Решение |
|---|---|---|
Connection timed out при SSH | Брандмауэр блокирует порт 22 | Выполните sudo ufw allow ssh или sudo ufw allow 22 |
拒绝访问 (отказано в доступе) при веб-сервере | Порт 80/443 заблокирован | Разрешите их: sudo ufw allow 80 и sudo ufw allow 443 |
ufw: command not found | UFW не установлен | Выполните sudo apt install ufw -y |
Ошибка аутентификации при загрузке UFW | Использование неправильных прав | Выполните команду от имени root (sudo) |
Правило уже существует | Дублирующее правило | Проверьте sudo ufw status и удалите лишнее |
Если вы столкнулись с ошибкой, которая не указана выше, проверьте журналы (sudo ufw logs) и убедитесь, что в конфигурации нет противоречивых правил. Также убедитесь, что сетевой интерфейс, который вы хотите защитить, не является lo (локальный). Для локального интерфейса выполните sudo ufw allow in on lo.