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

Слишком много соединений TIME_WAIT на mysql с внешнего хоста

Моя netstat показывает более 2000 соединений mysql с состоянием TIME_WAIT, которое, кажется, застряло и не исчезнет. Так было уже несколько часов, и многие соединения поступают с IP-адреса, у которого нет прав на мой сервер базы данных. Вроде зависает, как это убрать? Это атака грубой силы? Все мои пользовательские привилегии имеют определенные хосты, и я не использую подстановочные знаки.

Вот фрагмент netstat:

tcp        0      0 server:mysql       static.98.17.76.1:45222 TIME_WAIT  
tcp        0      0 server:mysql       static.98.17.76.1:34341 TIME_WAIT  
tcp        0      0 server:mysql       static.98.17.76.1:51888 TIME_WAIT  
tcp        0      0 server:mysql       static.98.17.76.1:54459 TIME_WAIT  
tcp        0      0 server:mysql       static.98.17.76.1:49599 TIME_WAIT  
tcp        0      0 server:mysql       static.98.17.76.1:50751 TIME_WAIT  
tcp        0      0 server:mysql       static.98.17.76.1:50731 TIME_WAIT  
tcp        0      0 server:mysql       static.98.17.76.1:54658 TIME_WAIT  
tcp        0      0 server:mysql       static.98.17.76.1:58974 TIME_WAIT  
tcp        0      0 server:mysql       static.98.17.76.1:33800 TIME_WAIT  
tcp        0      0 server:mysql       static.98.17.76.1:59840 TIME_WAIT  
tcp        0      0 server:mysql       static.98.17.76.1:53495 TIME_WAIT  
tcp        0      0 server:mysql       static.98.17.76.1:51561 TIME_WAIT 

Кроме того, мой PROCESSLIST в mysql не показывает эти соединения, поэтому я предполагаю, что они сразу отключаются, но не уверен, почему они не исчезнут. Будет ли это вызывать проблемы с максимальным количеством подключений для mysql?

Если вы найдете какие-то связи в netstat вывод в TIME_WAIT состояние, это может быть нормально. Вы можете получить их слишком много, когда у вас слишком много краткосрочных связей.

Я получил некоторые из них даже без необходимости указывать имя пользователя, пароль или имя базы данных. Просто введите:

mysql -h your_server_ip
ERROR 1045 (28000): Access denied for user 'khaled'@'your_pc_ip' (using password: NO)

и вы получите одно левое соединение в TIME_WAIT штат:

sudo netstat -anp | grep 3306
tcp      0      0 server_ip:3306      your_pc_ip:50464      TIME_WAIT   -

Однако рекомендуется запретить доступ с этого IP-адреса, особенно если вы не узнаете этот IP-адрес в качестве законного клиента. Простое правило iptables, подобное этому, может отклонять дальнейшие запросы с этого IP:

sudo iptables -A INPUT -s bad_ip -p tcp --dport 3306 -j DROP

Вам может потребоваться изменить -A к -I в зависимости от того, есть ли у вас другие правила или нет.