Моя 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
в зависимости от того, есть ли у вас другие правила или нет.