linux入门-mysql安全防范

近日服务器收到攻击,数据库被清空并插入了一个表,内容如下:

warning bitcoin_address email
To recover your lost Database and avoid leaking it: Send us 0.1 Bitcoin (BTC) to our Bitcoin address 1J6jLduCXbPyxt5EMTs7iHwdafANy4ThJc and contact us by Email with your Server IP or Domain name and a Proof of Payment. If you are unsure if we have your data, contact us and we will send you a proof. Your Database is downloaded and backed up on our servers. Backups that we have right now: xxx,xxx,xxx . If we dont receive your payment in the next 10 Days, we will make your database public or use them otherwise. 1J6jLduCXbPyxt5EMTs7iHwdafANy4ThJc admin@yourdatabase.biz

紧急处理

造成的原因因为mysql账号密码被暴力破解和允许远程访问,需要做一些紧急处理

  1. 禁用远程
    为了方便,开放允许远程连接,而且没加ip限制,导致黑客有机可乘。所以我们现在要把一切远程连接关闭。
    本机登陆
// 服务器中国登陆数据库
$ mysql -u 你的账号 -p
$ 你的密码

查看用户
有一个特殊的数据库,数据库名为mysql,表名为user,它存储了服务器数据库有用户信息和访问权限。

// 选用mysql系统表
$ use mysql;
// 查询全部的用户和host
$ select user,host form user;

host为允许访问的主机地址,'%代表全部允许,如果发现host的信息为%,那这就是问题所在了,把它全删了。

$ delete from user where host = '%';

这时候任何远程访问都会被禁止,无法在本机外访问了。
刷新一下缓存,让配置生效

$ flush privileges;
  1. 删除黑客账号
    作为一个专业的黑客,自然会给自己留后路,比如偷偷加一个数据库账号,所以我们要还要查一下用户表。
$ select user from user;

如果发现不认识的账号,一定要删了,如只保留根角色

// 删除一切非根用户
$ delete from user where user != 'root';

除了这一步之外,我们还需要去db表相应删除

// 删除一切非根用户
$ delete from db where user != 'root';

同样记得刷新缓存,让配置生效

$ flush privileges;
  1. 修改密码
    尽管前面已经禁用了远程,可是密码已经泄露了,终究不安全,所以我们还要再去改密码。
    还是在系统user表中,有一个password字段,它存储着用户的密码,不过是加密后的,更新的时候需要用系统方法password()。这里已更新root账号的为例
// 更新密码
$ update user set password = password('你的新密码');

新密码一定要复杂,可以考虑闭着眼睛敲(记得复制出来,要不忘了)。
更新完后还是记得更新缓存(当然可以最后再刷新缓存)。

  1. 修改端口
    mysql默认端口是3306,黑客随便试一下就可以发现了,我们应该修改一下数据库的端口。(尽管还可以进行端口扫描,可是猜不到也没作用)
    首先我们在mysql环境下查询一下当前所用的端口是什么
$ show global variables like 'port'; 
Variable_name port
port 3306

退出mysql命令行模式。
如果我们计划把端口改成3305,先检查一下端口是否被占用

netstat -tunlp |grep 3305

如果没有任何输出那就证明没有被占用。
紧接着我们打开mysql的配置文件,在/etc/my.cnf。
修改3306端口为一个新的端口

vim /etc/my.cnf

[mysqld]
port=3305

如果[mysqld]下没有port参数,加一个即可。
保存退出vim。

然后我们重启mysql服务

$ systemctl restart mysqld

mysqld,不是mysql
然后发现3306已经连不上了,需要用新端口才可以。

  1. 重置数据
    信息泄露了终究不安全,不过我所泄露的信息都是一些测试数据,关系不大,我重置一下就可以了。

自定义

上述操作会导致远程无法连接,如果又想安全又想方便,可以通过限制ip的方式,首先我们创建一个用户,给该用户分配有限的权限,然后设置一个复杂的密码,最后加上ip限制就可以了,下面是详细做法。

  1. 新建用户
    使用root登录数据库后,进入到系统mysql表。假设我们创建zhangsan用户,密码是123456
$ create  user  zhangsan  identified  by  '123456';

如果创建成功,会默认创建一个%ip限制的用户,如果创建失败,先删除用户再创建即可。

  1. 分配权限
    创建完zhangsan用户后,我们还需要为其分配数据库,处于安全考虑,一般只分配部分数据库,比如把ABC数据库的全部权限都分配给zhangsan,执行如下:
$ grant all privileges on ABC.* to zhangsan@'%' identified by '123456';

ABC.*代表ABC数据库下的全部权限
%为默认不限制host。

此时zhangsan用户只能查看到ABC数据库下的
的内容。

  1. 限制ip
    上两步都提到,host还是默认的%,不加限制,我们当然需要添加ip限制,更新一下user即可。
$ update user set host = '你的ip' where user = 'zhangsan';

此时只允许指定ip通过。

  1. 刷新缓存
    既然修改了数据库配置,那就需要刷新使得配置生效。
$ flush privileges;

建议

针对此事项,建议做以下调整,以防范黑客攻击:

1、服务器的管理员密码具备一定复杂度,建议使用字母、数字、字符组合的密码。

2、服务器关闭远程访问(或关闭外网的远程访问),调整远程访问默认的端口号。

3、mysql的root用户密码具备一定复杂度,建议使用字母、数字、字符组合的密码。

4、mysql不允许任意远程端连接,建议仅对协同系统所在的IP地址放开连接。

5、mysql不使用默认的3306端口,建议修改为其他端口。(mysql的配置文件:Windows为my.ini、Linux为my.cnf,修改其端口号)

6、mysql设置定时备份,并将数据备份包备份在异机(或异地)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,648评论 5 116
  • MySQL安全配置 数据库作为数据管理的平台,它的安全性首先由系统的内部安全和网络安全两部分来决定。对于系统管理员...
    这是什么娃哈哈阅读 1,477评论 0 6
  • mysqladmin -u root -p oldpass password newpass mysqladmin...
    不排版阅读 2,079评论 0 3
  • 一、MySQL安装 MySQL可以在redhat环境下进行RPM安装和debian下apt安装,但是最新的包一般都...
    零一间阅读 3,649评论 0 4
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,391评论 2 57