本文共 3296 字,大约阅读时间需要 10 分钟。
1、数据目录安全性 show variables like 'datadir'; -------用专门的安全加固软件防止数据随意被拷贝
运行
mysql_secure_installation设置相关的安全访问属性
需要安装mysql-client,才可以。运行mysql_secure_installation会执行几个设置:
[root@localhost ~]# mysql_secure_installation
3、skip-networking bind-address=127.0.0.1
若不需要联网,可以开启这个选项
4、禁用LOCAL INFILE local-infile=0 (否则会带来sql注入问题) 导入外部数据用的命令 示例: 创建一数据库和一个表 然后倒入数据看看是否能够导入
mysql> set @@global.local_infile=0;
mysql> show variables like 'local_infile'
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
+---------------+-------+
mysql> load data local infile '/tmp/tt' into table tt;
ERROR 1148 (42000): The used command is not allowed with this MySQL version mysql>
set @@global.local_infile = 1; mysql> load data local infile '/tmp/tt' into table tt;
Query OK, 5 rows affected (0.04 sec)
Records: 5 Deleted: 0 Skipped: 0 Warnings: 0
select load_file("/etc/password")
MYSQL注入中,load_file()函数在获得web shell以及提权过程中起着十分重要的作用,常被用来读取各种配置文件.
5、数据库上面的历史操作命令都会被记录在根下面的.mysql_history上面 定时用脚本清空次文件 cat /dev/null > ~/.mysql_history
==========数据传输安全========== 一般在AB复制跨地域传输的时候开启
========== 用户相关 ========== 通过授权命令,限定允许登录的用户和主机
授权的时候,不要一下子就给了all的权限,而应该开放最小权限。
安全权限控制思想
权限最好是由小设置为大 不要先给最大权限最后才缩小
(1)、(重点)写库账号默认给select insert update delect 不要给创建修改表create alter权限 更不能给给all权限
(2)、读库账号默认select(配合mysql read-only --ROOT没限制的)
(3)、根据需要,最好专库专账号,不要一个账号管理多个库
(4) 、grant select,insert,update,delect on blog.* to 'blog'@'10.0.0%'indentified b '123456'; ---数据库连接密码最好采用: 数字+字母+特殊符号,而不要过于简单。
SHOW GRANTS FOR user_name@ip mysql> show grants for 'dbtest'@'192.168.56.%'\G;
*************************** 1. row ***************************
Grants for dbtest@192.168.56.%: GRANT
ALL PRIVILEGES ON *.* TO 'dbtest'@'192.168.56.%' IDENTIFIED BY PASSWORD '*767C46297043DBC2F444C7D28E4B226047DA5C38'
1 row in set (0.00 sec)
mysql> select user,host from mysql.user;
+--------+-----------------------+
+--------+-----------------------+
| dbtest | 192.168.56.% |
| root | localhost.localdomain |
+--------+-----------------------+
mysql> rename user root@127.0.0.1 to ccc@127.0.0.1;
mysql> show grants for admin@127.0.0.1;
mysql> select user,host,password from mysql.user;
+--------+-----------------------+---------------------------------------------------------+
| user | host | password |
+--------+-----------------------+---------------------------------------------------------+
| root | localhost | *767C46297043DBC2F444C7D28E4B226047DA5C38 |
| root | localhost.localdomain | |
| dbtest | 192.168.56.% | *767C46297043DBC2F444C7D28E4B226047DA5C38 |
+--------+-----------------------+----------------------------------------------------------+
mysql> delect from mysql.user where user='' or password='';
(7)定期去检查用户表里面的用户,看看里面的用户是否是你创建的,特别是 SQL
转载地址:http://kjjea.baihongyu.com/