技术开发 频道

保障MySQL数据库安全的14个非常好的方法

  10、移除和禁用.mysql_history文件

  在用户访问MySQL控制台时,所有的命令历史都被记录在~/.mysql_history中。如果攻击者访问这个文件,他就可以知道数据库的结构。

  $ cat ~/.mysql_history

  为了移除和禁用这个文件,应将日志发送到/dev/null。

  $export MYSQL_HISTFILE=/dev/null

  上述命令使所有的日志文件都定向到/dev/null,你应当从home文件夹移除.mysql_history:$ rm ~/.mysql_history,并创建一个到/dev/null的符号链接。

  11、安全补丁

  务必保持数据库为最新版本。因为攻击者可以利用上一个版本的已知漏洞来访问企业的数据库。

  12、启用日志

  如果你的数据库服务器并不执行任何查询,建议你启用跟踪记录,你可以通过在/etc/my.cnf文件的[Mysql]部分添加:log =/var/log/mylogfile。

  对于生产环境中任务繁重的MySQL数据库,因为这会引起服务器的高昂成本。

  此外,还要保证只有root和mysql可以访问这些日志文件。

  错误日志

  务必确保只有root和mysql可以访问hostname.err日志文件。该文件存放在mysql数据历史中。该文件包含着非常敏感的信息,如口令、地址、表名、存储过程名、代码等,它可被用于信息收集,并且在某些情况下,还可以向攻击者提供利用数据库漏洞的信息。攻击者还可以知道安装数据库的机器或内部的数据。

  MySQL日志

  确保只有root和mysql可以访问logfileXY日志文件,此文件存放在mysql的历史目录中。

  13、改变root目录

  Unix操作系统中的chroot可以改变当前正在运行的进程及其子进程的root目录。重新获得另一个目录root权限的程序无法访问或命名此目录之外的文件,此目录被称为“chroot监狱”。

  通过利用chroot环境,你可以限制MySQL进程及其子进程的写操作,增加服务器的安全性。

  你要保证chroot环境的一个专用目录,如/chroot/mysql。此外,为了方便利用数据库的管理工具,你可以在MySQL配置文件的[client]部分改变下面的参数:

  [client]

  socket
= /chroot/mysql/tmp/mysql.sock

  14、禁用LOCAL INFILE命令

  LOAD DATA LOCAL INFILE可以从文件系统中读取文件,并显示在屏幕中或保存在数据库中。如果攻击者能够从应用程序找到SQL注入漏洞,这个命令就相当危险了。下面的命令可以从MySQL控制台进行操作:

  > SELECT LOAD_FILE("/etc/passwd");

  该命令列示了所有的用户。解决此问题的非常好的方法是在MySQL配置中禁用它,在CentOS中找到/etc/my.cnf或在Ubuntu中找到/etc/mysql/my.cnf,在[mysqld]部分增加下面一行:set-variable=local-infile=0。搞定。

  当然,唇亡齿寒,保护服务器的安全对于保障MySQL数据库的安全也是至关重要的。服务器的安全对于数据库来说可谓生死攸关。

  原文链接:http://www.searchsecurity.com.cn/showcontent_78300.

  更多精彩尽在2014年4月10日-12日在北京五洲皇冠国际酒店举办的第五届中国数据库技术大会,12月31日之前订票可享受6.8折最低票价

Facebook专家:Hadoop不足以处理大数据
▲进入官网了解更多详情

0
相关文章