我需要为MySQLd打开网络,但是每次这样做,服务器都会被强行淘汰。一些卑鄙的密码猜测脚本开始在服务器上运行,在端口3306上打开连接并永久尝试随机密码。
我该如何阻止这种情况的发生?
对于SSH,我使用denyhosts,效果很好。有没有办法使denyhosts与MySQLd一起使用?
我也考虑过更改MySQL正在运行的端口,但这并不理想,只是一个权宜之计(如果他们发现了新端口,该怎么办?)
还有其他想法吗?
如果有所不同,我在FreeBSD 6.x上运行MySQL5.x。
我需要为MySQLd打开网络,但是每次这样做,服务器都会被强行淘汰。一些卑鄙的密码猜测脚本开始在服务器上运行,在端口3306上打开连接并永久尝试随机密码。
我该如何阻止这种情况的发生?
对于SSH,我使用denyhosts,效果很好。有没有办法使denyhosts与MySQLd一起使用?
我也考虑过更改MySQL正在运行的端口,但这并不理想,只是一个权宜之计(如果他们发现了新端口,该怎么办?)
还有其他想法吗?
如果有所不同,我在FreeBSD 6.x上运行MySQL5.x。
Answers:
我不知道用于MySQL的任何类似于denyhosts的软件包,但是我确实有几个解决方案:
编辑:
要回答您的评论,请尝试以下操作:
iptables -A INPUT -p tcp -s 202.54.1.50 --sport 1024:65535 -d 202.54.1.20 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s 202.54.1.20 --sport 3306 -d 202.54.1.50 --dport 1024
.20是MySQL,而.50是远程连接IP地址。
1:将端口从3306更改。不是出于提高安全性的原因,而是要承担服务器的负载以应对错误的登录攻击
2:创建SSL证书并在您的MySQL服务器上启用它(无论如何都要加密客户端-服务器连接)
3:创建一个或多个客户端证书(所有客户端都需要具有该证书,并且需要将客户端软件配置为使用它)。如果您的客户端是.Net,则需要将客户端证书转换为pkcs12格式,但这很容易做到,请参阅本指南。
4:将MySQL用户帐户设置为需要x509客户端证书,然后攻击者都需要登录凭据和客户端证书(您甚至可以在客户端证书上输入密码,然后攻击者也需要密码)。
我使用本指南制作证书和密钥文件,但那里有许多指南。
我只希望使用SSH连接访问Linux框用于管理目的,而不是用于客户端访问。
为什么不只允许安全主机访问mysqld端口?
这不是真正的解决方案,但是如果仅在其他端口上运行服务器,则可能会有所帮助。这些扫描程序中的大多数可能已被编程为仅检查3306。它不能解决问题,但是仅更改端口,您的扫描次数可能会少很多。