Назад | Перейти на главную страницу

Удаленные пользователи пытаются получить доступ к root mysqld

Я только что просмотрел свой файл системного журнала и заметил ТОННУ следующих записей:

25 августа 13:06:17 ssrv001 mysqld: 150825 13:06:17 [Предупреждение] Доступ запрещен для пользователя 'root'@'61.160.232.48' (с использованием пароля: ДА)

IP-адрес является вредоносным, так как никто, кроме меня, не имеет корневого доступа к этому серверу. Я удалю удаленный доступ для корневого пользователя mysqld, но будет ли этого достаточно, чтобы предотвратить подобные вещи?

Я также думал о реализации чего-то, что будет запрещать подключения с IP-адресов, которые несколько раз отправляли недопустимые запросы.

Прежде всего, я рекомендую вам разрешить вход в систему mysql с правами root только с localhost. Если вам нужно подключиться к mysql с другого сервера - создайте нового пользователя и предоставьте ему только необходимые разрешения.

Кроме того, вы можете использовать fail2ban или аналогичный для добавления IP-адресов хакеров в черный список после нескольких неудачных попыток подключения.

И, наконец, вы можете изменить свой порт mysql, чтобы избежать атак методом грубой силы.

Узнайте больше о защите ваших баз данных MySQL в Linux здесь: Как защитить базы данных MySQL и MariaDB на Linux VPS

ОБНОВИТЬ: Я забыл, что у MySQL есть собственные инструменты для блокировки IP-адресов после неудачных попыток входа в систему. Вы можете использовать это в своем файле конфигурации mysql:

max_connect_errors = 5;

Но по умолчанию mysqld блокирует хост после 10 ошибок соединения.

Об этом подробнее здесь: Системные переменные сервера #sysvar_max_connect_errors и тут: Хост host_name заблокирован

Я с Максимом и знаю, что разрешить вход в MySQL как root только с localhost. Я бы пошел еще дальше, разрешив вход для локального хоста или определенных IP-адресов для всех пользователей.

Что-то, что вы можете сделать для подключения к удаленному серверу MySQL в качестве локального пользователя, - это ssh-туннелирование.

Что-то вроде этого Должно работать для систем UNIX:

ssh -fNg -L 9999:127.0.0.1:3306 user@yourhost.com

Это включит клиентский порт 9999 в качестве «туннеля» для удаленного порта yourhost.com:3306.

Для систем Windows, возможно, подойдет Putty. Взгляните на это:

http://www.ytechie.com/2008/05/set-up-a-windows-ssh-tunnel-in-10-minutes-or-less/

Большинство современных графических клиентов MySQL допускают туннелирование соединений, например MySQL Workbench отлично работает:

https://www.mysql.com/products/workbench/

Вам следует заблокировать mysql с помощью iptables. Этот фрагмент блокирует mysql с любого хоста, кроме localhost:

iptables -A INPUT -i lo -p tcp --dport mysql -j ACCEPT
iptables -A INPUT -p tcp --dport mysql -j DROP

Имейте в виду, что эти настройки в iptables не будут постоянными. В зависимости от вашего дистрибутива вам следует отредактировать конфигурацию iptables. Для систем на базе Redhat6 вы должны отредактировать /etc/sysconfig/iptables например.

Вы также должны отключить удаленный вход в систему root в mysql с помощью следующих sql-запросов:

DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');

Вы также можете подумать о внедрении fail2ban для блокировки IP-адресов со слишком большим количеством неудачных попыток входа в систему. Этот вопрос о сбое сервера должен помочь вам в этом.