问题
由于已经被人多次进入数据库删除数据并且留下恶心人的话: 请往xxx打xx币多少多少,十天内不打则会对数据进行删除或者泄露。 所以开始研究数据库的安全问题,我用的是mysql所以只会提这个,其他数据库应该也有类似的操作。
思考
一般我们开发环境的MySQL是没有配置登录保护的,但仅限于开发环境,正式环境是不允许无限制登录,存在很大的风险。
解决问题
MySQL 5.7 以后提供了Connection-Control插件用来控制客户端在登录操作连续失败一定次数后的响应的延迟。该插件可有效的防止客户端暴力登录的风险(攻击)。该插件包含以下两个组件:
- connection_control:控制失败次数以及延迟时间
- connection_control_failed_login_attempts:将登录失败的操作记录至information_schema表
安装插件
使用root账户登录
mysql -u root -p
安装插件
install plugin connection_control soname "connection_control.so";
install plugin connection_control_failed_login_attempts soname "connection_control.so";
若已安装则会报错
验证插件安装状态
select plugin_name, plugin_status from information_schema.plugins where plugin_name like 'connection%';
修改插件配置
vim /etc/my.cnf
[mysqld]
# ========= Connection-Control插件 =========
plugin-load-add = connection_control.so
connection-control = FORCE
connection-control-failed-login-attempts = FORCE
# 阻塞1分钟
connection_control_min_connection_delay = 60000
connection_control_max_connection_delay = 86400
# 可错误3次
connection_control_failed_connections_threshold = 3
# ========= Connection-Control插件 =========
测试
三次进行错误密码测试,将会出现第三次错误卡死的情况。
总结
虽然无法根除恶心的人做恶心的事情,但至少能给他们的恶心路径放点石头钉子,冲冲冲!