《信息安全管理与评估》国赛MySQL安全加固题目及答案参考

这是自己总结并详细解释了一下,另一个答案在这,可以也看一下:MYSQL数据库攻防与加固,”神州数码杯”信息安全管理与评估

加固参考:http://www.it165.net/database/html/201210/3132.html

1.进入xserver-mysql, 加固MySQL服务器,使所有的访问能被审计,要求通过对mysqld 的启动项进行加固,对加固操作进行截屏。(4分)
参考链接:http://blog.csdn.net/waferleo/article/details/7236827
http://www.tuicool.com/articles/Bv2Ijiv

mysql的配置文件加载顺序为:

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

这里有多种操作方式。但是“官方“可能只认一种,请看这篇MYSQL数据库攻防与加固

还有这篇里的应该是标准答案:http://blog.izilong.net/2017/02/26/MySQL数据库安全加固/

第一种:

# vi /etc/my.cnf

《信息安全管理与评估》国赛MySQL安全加固题目及答案参考

my.cnf配置文件中,[mysqld]下加入log=[path],[path]替换为你的实际路径(注意这个日志文件的权限,没有权限还读写个毛线,你会发现log下面根本没有mysql文件夹也没有access.log文件,需要自己建并且更改属主为mysql)。

重启mysqld服务。这时候mysql>show (global) variables like ‘%log%’;中的general_log会变成ON

查看设置

查看mysql普通日志设置,如果之前你已经设好的话
mysql>show (global) variables like ‘%log%’;
没有开启的话mysql> set global general_log=on;《信息安全管理与评估》国赛MySQL安全加固题目及答案参考
可知mysql查询日志在/var/run/mysqld/mysqld.log

第三种:

启动的时候加参数:mysqld_safe –log=[path]来指定路径,但注意目录与文件mysql得有可写权限
需要先把service mysqld stop,然后再用mysqld_safe –log&启动开启查询日志(注意不是以service mysqld start +参数启动,service mysqld start +任何参数都不会报错并正常启动)

《信息安全管理与评估》国赛MySQL安全加固题目及答案参考
查看log:less /var/run/mysqld/mysqld.log
或者在mysql中mysql>system less /var/run/mysqld/mysqld.log 《信息安全管理与评估》国赛MySQL安全加固题目及答案参考

2.配置linux-mysql 防火墙,允许MySQL服务能够被访问,要求规则中只包含端口项,对防火墙规则列表进行截屏。(4分)
参考链接:http://www.cszhi.com/20120717/iptables-sample.html
http://blog.chinaunix.net/uid-26495963-id-3279216.html
《信息安全管理与评估》国赛MySQL安全加固题目及答案参考
保存防火墙规则要用service iptables save

(iptables-save需要手动指定路径及文件名,适用于多个规则文件情况

service iptables save则将规则保存到/etc/sysconfig/iptables,重启服务后默认加载)

3.进入xserver-mysql,查看所有用户及权限,找到可以从任何IP地址访问的用户,对操作过程进行截屏。(8分)《信息安全管理与评估》国赛MySQL安全加固题目及答案参考

4.对题号3中的漏洞进行加固,设定该用户只能从公司PC访问,用grants 命令进行管理,并将加固过程截屏。(8分)《信息安全管理与评估》国赛MySQL安全加固题目及答案参考

5.检查xserver-mysql中的是否存在匿名用户,如果存在匿名用户,则删除该用户,将发现的匿名用户信息以及删除过程进行截屏。(4分)

《信息安全管理与评估》国赛MySQL安全加固题目及答案参考《信息安全管理与评估》国赛MySQL安全加固题目及答案参考

flush privileges;

6.改变默认MySQL管理员的名称,将系统的默认管理员root 改为admin,防止被列举,将执行过程进行截屏。(4分)


《信息安全管理与评估》国赛MySQL安全加固题目及答案参考

7.禁止MySQL对本地文件进行存取,对mysqld 的启动项进行加固,将加固部分截屏。(4分)

mysqld_safe –local-infile=0 &

《信息安全管理与评估》国赛MySQL安全加固题目及答案参考

8.限制一般用户浏览其他用户数据库,对mysqld 的启动项进行加固,将加固部分截屏。(4分)

mysqld_safe –skip-show-database &

《信息安全管理与评估》国赛MySQL安全加固题目及答案参考

MYSQL加固补充

禁止远程连接数据库

[root@host ~]mysqld_safe –skip-networking &

&为在后台执行

 

–local-infile[={0|1}]

如果用–local-infile=0启动服务器,则客户端不能使用load data local infile 语句。

使用LOAD DATA到MySQL的时候,有2种情况:

(1)在远程客户端(需要添加选项:–local-infile=1)导入远程客户端文本到MySQL,需指定LOCAL(默认就是ignore),加ignore选项会放弃数据,加replace选项会更新数据,都不会出现唯一性约束问题。

[zhuxu@xentest9-vm1 tmp]$mysql -uzhuxu -pzhuxu test -h10.254.5.151 –local-infile=1–show-warnings -v -v -v \

> -e “LOAD DATA LOCAL INFILE ‘/tmp/2.txt’ INTO TABLE tmp_loaddata FIELDS TERMINATED BY ‘,'”;

(2)在本地服务器导入本地服务器文本到MySQL,不指定LOACL,出现唯一性约束冲突,会失败回滚,数据导入不进去,这个时候就需要加ignore或者replace来导入数据。

mysql>LOAD DATA INFILE ‘/home/zhuxu/1.txt’ INTO TABLE tmp_loaddata FIELDS TERMINATED BY ‘,’;

LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE ‘file_name.txt’ [REPLACE | IGNORE]

INTO TABLE tbl_name
[FIELDS
[TERMINATED BY ‘\t’]
[OPTIONALLY] ENCLOSED BY ”]
[ESCAPED BY ‘\\’ ]]
[LINES TERMINATED BY ‘\n’]
[IGNORE number LINES]
[(col_name,…)]

LOAD DATA INFILE语句从一个文本文件中以很高的速度读入一个表中。如果指定LOCAL关键词,从客户主机读文件。如果LOCAL没指定,文件必须位于服务器上。(LOCAL在MySQL3.22.6或以后版本中可用。)

 

–old-passwords

强制服务器为新密码生成短(pre-4.1)密码哈希。当服务器必须支持旧版本客户端程序时,为了保证兼容性这很有用。

(OBSOLETE) –safe-show-database

在以前版本的MySQL中,该选项使SHOW DATABASES语句只显示用户具有部分权限的数据库名。在MySQL 5.1中,该选项不再作为现在的默认行为使用,有一个SHOW DATABASES权限可以用来控制每个账户对数据库名的访问。

–safe-user-create

如果启用,用户不能用GRANT语句创建新用户,除非用户有mysql.user表的INSERT权限。如果你想让用户具有授权权限来创建新用户,你应给用户授予下面的权限:

mysql> GRANT INSERT(user) ON mysql.user TO ‘user_name’@’host_name’;

这样确保用户不能直接更改权限列,必须使用GRANT语句给其它用户授予该权限。

–secure-auth

不允许鉴定有旧(pre-4.1)密码的账户。

转载请注明原作者,如果你觉得文章对你有帮助或启发,也可以来请我喝咖啡

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注