Закрываем порт 3306 MySQL в UFW: доступ только по белому IP
Почему открытый порт 3306 — критическая уязвимость?
Порт 3306 по умолчанию слушает база данных MySQL/MariaDB. Если открыть его для всего мира (0.0.0.0), боты начинают подбирать пароли каждую секунду. Решение — разрешить подключения только с доверенного белого IP офиса.
Опасности публичного доступа к СУБД
| Угроза | Последствия | Решение через UFW |
|---|---|---|
| Брутфорс паролей | Высокая нагрузка на CPU, риск взлома | Блокировка всех IP по умолчанию |
| Эксплойты уязвимостей | Кража или шифрование базы | Белый список разрешенных IP |
Настройка правил UFW для MySQL
- Проверяем статус фаервола:
sudo ufw status verbose - Убеждаемся, что доступ по SSH открыт (чтобы не потерять связь!):
sudo ufw allow 22/tcp - Разрешаем подключение к MySQL только с доверенного IP:
# Замените 203.0.113.15 на ваш белый статический IP: sudo ufw allow from 203.0.113.15 to any port 3306 proto tcp - Удаляем общее правило, если порт был открыт для всех:
sudo ufw delete allow 3306/tcp - Включаем и перезагружаем фаервол:
sudo ufw enable sudo ufw reload
Важно: В файле /etc/mysql/mysql.conf.d/mysqld.cnf параметр bind-address должен быть выставлен в 0.0.0.0, иначе база не примет входящие подключения даже через фаервол.
Частые вопросы (FAQ)
Как посмотреть список пронумерованных правил UFW?
Выполните sudo ufw status numbered. Это позволяет удалять правила по номерам.
Как удалить правило по его номеру?
Например: sudo ufw delete 3.
Можно ли открыть порт для целой офисной подсети?
Да, укажите CIDR маску: sudo ufw allow from 192.168.1.0/24 to any port 3306 proto tcp.
Что делать, если у разработчиков динамический IP?
Используйте SSH-туннели (порт 3306 остается закрытым) или корпоративный VPN.