Мне нужно включить работу с сетью для MySQLd, но каждый раз, когда я это делаю, сервер просто забывается. Некоторые подразумевают, что сценарий угадывания пароля начинает зависать на сервере, открывая соединение через порт 3306 и пробуя случайные пароли навсегда.
Как я могу предотвратить это?
Для SSH я использую denyhosts, который хорошо работает. Есть ли способ заставить работать denyhosts с MySQLd?
Я также рассмотрел вопрос об изменении порта, на котором работает MySQL, но это далеко не идеально, и это только временное решение (что если они обнаружат новый порт?)
У кого-нибудь есть другие идеи?
Если это не так, я запускаю MySQL 5.x на FreeBSD 6.x.
источник
1: Измените порт с 3306. Не из-за большей безопасности, но чтобы взять на себя нагрузку на сервер, чтобы справиться с ложными атаками входа в систему
2. Создайте SSL-сертификат и включите его на своем сервере MySQL (в любом случае это необходимо для шифрования соединения клиент-сервер)
3. Создайте один или несколько клиентских сертификатов (все клиенты должны иметь сертификат, а клиентское программное обеспечение должно быть настроено для его использования). Если ваши клиенты - .Net, вам нужно преобразовать сертификат клиента в формат pkcs12, но это легко сделать, см. Это руководство.
4: Настройте учетную запись пользователя MySQL так, чтобы он требовал клиентский сертификат x509, тогда злоумышленнику понадобятся учетные данные для входа и клиентский сертификат (вы даже можете указать пароль на клиентском сертификате, тогда злоумышленнику также потребуется это тоже).
Я использовал это руководство для создания сертификатов и файлов ключей, но есть много руководств.
Я предпочитаю использовать мое SSH-соединение только для доступа к моему linux-серверу в целях администрирования, а не для доступа клиентов.
источник
Используя MySQL Proxy, вы можете написать небольшой скрипт LUA, который принимает комбинацию пользователь / пароль, но ждет X секунд, чтобы обработать вход в систему, если запрос на соединение поступает из неутвержденного диапазона IP-адресов.
Кроме того, вы можете добавить немного дополнительной логики в скрипт LUA, чтобы занести в черный список диапазоны IP-адресов после трех неудачных попыток.
В целом, это технически выполнимо, но я собираюсь использовать другие рекомендации для туннелирования через SSH или VPN к общему белому (через FW или другим способом) диапазону IP.
источник
почему нельзя разрешить доступ к порту mysqld только с защищенных хостов?
источник
Хотя это не «реальный» ответ - я не знаю, зачем вам нужно выставлять его внешнему миру напрямую.
Разве вы не можете включить ssh в этом окне и использовать туннелирование для доступа к движку БД?
Или любое другое решение VPN для доступа к нему (приходит в голову openvpn).
источник
Не настоящее решение проблемы, но может помочь, если вы просто запустите сервер на другом порту. Большинство из этих сканирующих ботов, вероятно, запрограммированы на проверку 3306. Это не решит проблему, но вы, вероятно, получите гораздо меньше сканирований, просто изменив порт.
источник
Я считаю, что связи должны быть огненными, быстрыми и хорошими. Там много учебников для iptables и чего угодно :)
Также вы можете установить cronjob на хостах клиентов, которые будут запускать smth на сервере, чтобы брандмауэр не блокировал известные хосты.
источник
Лучше всего было бы использовать ssh для туннелей, но вы можете попробовать использовать fail2ban вместо denyhosts, потому что я думаю, что он нацелен на мониторинг большего количества различных приложений, поэтому не должно быть проблем с добавлением в него журнала mysql.
источник
Предложение для вашего раздела my.cnf-ini [mysqld]
чтобы избежать сотен попыток за 90 секунд. Отрубить их на 10 попыток.
Рассматривайте раз в день FLUSH HOSTS, чтобы очистить законных людей, пытающихся использовать вашу систему, которые просто НЕ МОГУТ помнить свой пароль. Возможно, через несколько дней, они получат это.
источник