服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞

今天 hxd和我说他搭建了个人博客 要和我加友链 于是就想着先看看我这尘封10000年的个人博客

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》 

登陆个人博客网站,发现只能显示静态页面,开始以为是mysql服务没有启动,查看后发现mysql服务启动正常,查询报错信息:

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

淦,这咋连不上,navicat远程也无法连接

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》 

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

 

看一下数据库内容

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

纳尼?? 数据表都被删了 看看这个readme

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

艹,被黑了,还好这个数据库里面没放什么内容,不然。。。

算了, 重新生成一下本地数据库表的sql语句

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

 将本都文件放到服务器中,进入mariaDB中运行sql文件

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

 删掉这个烦人的readme

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

 查看所有数据库

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

发现README_CCC里面也有这个信息,删掉!

 《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

找到正在运行的后端进程

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

 删掉,重新执行

结果还是无法连接

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

 去数据库中查看root信息 

 《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

地址出现错误 而且莫名其妙多了两个用户

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

不管了 全部删掉重新新增

生成本地user表的sql文件

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

/*
Navicat MySQL Data Transfer

Source Server         : localhost_3306
Source Server Version : 50541
Source Host           : localhost:3306
Source Database       : mysql

Target Server Type    : MYSQL
Target Server Version : 50541
File Encoding         : 65001

Date: 2021-07-18 14:39:50
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
  `User` char(16) COLLATE utf8_bin NOT NULL DEFAULT '',
  `Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
  `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
  `ssl_cipher` blob NOT NULL,
  `x509_issuer` blob NOT NULL,
  `x509_subject` blob NOT NULL,
  `max_questions` int(11) unsigned NOT NULL DEFAULT '0',
  `max_updates` int(11) unsigned NOT NULL DEFAULT '0',
  `max_connections` int(11) unsigned NOT NULL DEFAULT '0',
  `max_user_connections` int(11) unsigned NOT NULL DEFAULT '0',
  `plugin` char(64) COLLATE utf8_bin DEFAULT '',
  `authentication_string` text COLLATE utf8_bin,
  PRIMARY KEY (`Host`,`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges';

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('localhost', 'root', '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0', '0', '', '');

重启mysql 我的方法是

 先 ps -ef|grep mysq  查找所有mysql进程

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

然后全部kill掉  kill -9 上方红色方框圈住的进程号

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

重新启动  service mysql restart     

当mysql版本为5.7以上时 用service mysqld restart 多了个“d”

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

 连接成功!

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

那么,我们应该做些什么,才能防止数据库被恶意访问删除呢?或者是有什么手段可以快速恢复被删的文件?

开启Binlog日志

MySQL Server 的四种类型的日志:Error Log、General Query Log、Slow Query Log 和 Binary Log

Error Log 即 错误日志,记录 mysqld 发生的一些错误。

General Query Log 即 一般查询日志,记录 mysqld 正在做的事情,如客户端的连接和断开、来自客户端每条 Sql Statement 记录信息;如果你想准确知道客户端究竟传了什么内容给服务端,这个日志就非常管用了,当然了这货非常影响性能。

Slow Query Log 即 慢查询日志,记录一些查询执行较慢的 SQL 语句,这个日志非常常用,主要是给开发者调优用的。

Binary Log 简称 Binlog 即 二进制日志文件,这个文件记录了mysql所有的 DML 操作。通过 Binlog 日志我们可以做数据恢复,做主主复制和主从复制等等。对于开发者可能对 Binlog 并不怎么关注,但是对于运维或者架构人员来讲是非常重要的。

简而言之,Binlog 两个重要的用途——复制和恢复,很多十分好用的 MySQL 体验比如说增量备份,回滚至指定时间以及上面提到的主主和主从等等都依赖于 Binlog。

 检查是否开启

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

ON表示开启 OFF表示未开启

修改 my.cnf 文件开启Binlog,一般来说都位于 /etc/my.cnf 这边,部分像 MariaDB 可能是修改/etc/my.cnf.d/server.cnf 文件

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

在 [mysqld] 下写入如下内容:

log_bin                      =    /var/lib/mysql/bin-log
log_bin_index              =    /var/lib/mysql/mysql-bin.index
expire_logs_days          = 7
server_id                 = 0002
binlog_format              = ROW

 《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

 解释一下:

log_bin = /var/lib/mysql/bin-log , 开启 Binlog 并写明存放日志的位置

log_bin_index = /var/lib/mysql/mysql-bin.index , 指定索引文件的位置。

expire_logs_days = 7 ,删除超出这个变量保留期之前的全部日志被删除

server_id = 0002 , 指定一个集群内的 MySQL 服务器 ID,如果做数据库集群那么必须全局唯一,一般来说不推荐 指定 server_id 等于 1。

binlog_format = ROW,设置方面提到过的三种 Binlog 的日志模式。

 重启数据库

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

再次检测  show global variables like ‘log_bin’; 

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

 成功开启

如何使用binlog恢复数据,参照博客

https://blog.csdn.net/Nino_sama/article/details/117200086

修改服务器安全组 将mysql访问ip由公共转为本地ip

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

修改root登陆密码 

 《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

修改后台登陆密码

 《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

这里推荐一个在线加密解密的网站 https://www.cmd5.com 

《服务器数据库被恶意删除 还勒索比特币 数据库安全该怎么搞》

    原文作者:键盘奏鸣曲
    原文地址: https://blog.csdn.net/weixin_45660485/article/details/118864320
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞