Mysql⽂件软连接symbolic-links
最近在做mysql数据库加固,主要根据CIS数据库加固规则来写脚本,其中有⼀个加固项是禁⽌mysql使⽤软连接,被同事提问使⽤软连接为什么不⾏,⼀时之间我也不知道该如何回答,所以专门写个⽂章来分析⼀下mysql软连接这个功能。
根据mysql官⽅⽂档,使⽤软连接的⽅法如下:
You can move databases or tables from the database directory to other locations and replace them with symbolic links to the new locations. You might want to do this, for example, to move a database to a file system with more free space or increase the speed of your system by spreading your tables to different disks.
把数据库或者表移动到其他位置,并使⽤软连接替换原来⽂件的位置。
⽐如你的data⽂件下有⼀个表⽂件,现在移动到其他磁盘并使⽤软连接替换,那再data⽂件下到这个表⽂件的时候,这个⽂件就会指向其他⽂件的路径,这样说来系统的其他位置存在数据库⽂件。
image
我先创建了数据库aaa,然后使⽤root账号进⼊data⽂件夹下把数据库⽂件移动到其他⽂件夹,并创建软连接,可以看到,软连接⽂件权限为777,属于root⽤户root组
mysql下载链接image
实际⽂件的权限仍为原来数据库的⽂件权限,所以即使使⽤软连接,实际⽂件仍能保留数据库初始⽂件属性。
⼀般在⽣产环境中,数据库data⽂件所在分区和系统分区是分开的,⽽使⽤软连接的情况下多数是保存在系统分区。⽽针对数据库加固的重要思想就是将系统分区和数据分区分开,防⽌数据库写⼊数据影响系统性能,也防⽌系统⽤户修改数据库数据。
当使⽤软连接,尤其是⽤root运⾏mysqld时,攻击者将可以通过数据库获得root权限,⼜由于数据同时存储在系统分区,将导致攻击者可以修改系统分区的任意⽂件;当使⽤mysql命令修改软连接对应的数据库,会修改存储在系统分区的实际⽂件,可能对系统内的其他⽂件进⾏删除和重命名。
同时,在数据库加固中会对整个data⽂件夹进⾏权限加固,使⽤软连接的数据库⽂件将不会被加固到。
Mysql8已经默认禁⽤Symbolic links
'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
⽬前只能搜集到这么多信息,欢迎指正,另外在⽹上搜到可以通过realpath漏洞对包含软连接的数据库进⾏攻击,这也是不能使⽤软连接的⼀个原因,但原理没搞清楚就没在这⾥写,希望有⼤神看到可以指点⼀下~

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。