Настройка фаервола UFW в Ubuntu/Debian: Закрываем лишние порты домашнего сервера Когда домашний Linux-сервер работает на белом статическом IP-адресе, он моментально становится мишенью для сотен ботов-сканеров, которые круглосуточно брутфорсят SSH и ищут открытые порты. Самый простой и надежный способ защитить систему — настроить встроенный брандмауэр
UFW (Uncomplicated Firewall). Мы настроим жесткую политику: заблокируем абсолютно все входящие подключения, кроме жизненно важных для нашего сервера (веб-трафик, PHP, почта и СУБД).
Шаг 1. Базовые правила (Запретить всё входящее)
Перед включением фаервола задаем дефолтную политику — блокировать всё, что ломится снаружи, но разрешить серверу выходить в сеть:
Code:
sudo ufw default deny incoming sudo ufw default allow outgoing
Шаг 2. Открываем веб-порты (Joomla, Kunena, SSL)
Разрешаем стандартный веб-трафик, чтобы наш сайт `moysrv.ru` открывался у пользователей по всему миру:
Code:
sudo ufw allow 80/tcp # Обычный HTTP sudo ufw allow 443/tcp # Защищенный HTTPS (наш SSL Let's Encrypt)
Шаг 3. Защита SSH и панели phpMyAdmin
Внимание: Открывать порт SSH (22) для всего мира категорически нельзя. Мы разрешим доступ по SSH и к админке баз данных phpMyAdmin (порт 9000 для PHP-FPM)
строго для вашего домашнего IP-адреса (например, 77.51.225.50):
Code:
sudo ufw allow from 77.51.225.50 to any port 22 proto tcp sudo ufw allow from 77.51.225.50 to any port 9000 proto tcp
Если у вас изменится IP, не забудьте обновить это правило, иначе сервер вас заблокирует! Шаг 4. Включаем брандмауэр UFW
Проверяем список добавленных правил перед запуском:
Code:
sudo ufw show added
Если всё указано верно, активируем защиту командной строки:
Система спросит подтверждение (может разорвать SSH-сессию) — смело жмем
Y и Enter.
Шаг 5. Контроль статуса
Проверить, какие порты сейчас находятся под защитой, можно командой:
Code:
sudo ufw status numbered