赞
踩
(1)检查空密码语句:SELECT user, host FROM mysql.user WHERE password='';
该语句将会列出所有密码为空的账户和对应的主机地址。
(2)检查账户的有效期:SELECT user, host, account_locked FROM mysql.user WHERE DATE_SUB(NOW(), INTERVAL 180 DAY) > password_last_changed;
该语句将列出那些密码时间超过180天并且账户没有被锁定的账户以及对应的主机地址。可以根据实际情况修改时间间隔。如果account_locked的值为Y,则说明该账户已经被锁定。
确保数据库不存在弱口令,提高数据库安全性
检测方法:
mysql>use mysql
mysql> select user,password from mysql.user;
加固方法:
,执行以下命令修改密码(使用root 用户登录):
mysql>use mysql;
mysql>update user set password=password('复杂的新密码') where user='root';
mysql> flush privileges;
检测方法:检查匿名帐户是否存在
mysql>use mysql;
mysql> select user,password from mysql.user;
存在user 和password 字段均为空的行
加固方法:删除匿名帐户
mysql>use mysql;
mysql>delete from user where user='';
mysql>flush privileges;
如果与业务和数据库无关账号,应该删除该账号
检测方法:检查数据库中的帐号
mysql>use mysql
mysql> SELECT user, host FROM mysql.user;
加固方法:删除相关账号
mysql>use mysql
mysql>DROP USER 'username'@'host';
mysql>flush privileges;
其中,'username'和'host'分别是要删除的用户名和主机名。
(1)登录数据库安装两个插件即可
- install plugin CONNECTION_CONTROL soname ‘connection_control.so’;
- install plugin CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS soname ‘connection_control.so’;
(2)查看安装的两个插件:show plugins;
(3)修改配置文件增加如下两行配置:vim /etc/my.cnf
connection-control-failed-connections-threshold=5
登陆失败次数限制
connection-control-min-connection-delay=1800000
限制重试时间,此处为毫秒,注意按需求换算
(4)查看配置是否生效
show global variables like 'interactive_timeout';
show global variables like 'wait_timeout';
如非业务需要应该禁止远程登录或者禁止以root用户登录mysql。
查看可访问数据库的ip和账号
mysql> select user,host from mysql.user;
加固方法:
mysql>GRANT ALL PRIVILEGES ON *.* TO '可信任用户'@'可信任ip 地址' IDENTIFIED BY '可信用户密码' WITH GRANT OPTION;
回退方法:删除可信任ip
mysql> delete from user where host='ip 地址';
禁用local_infile选项会降低攻击者通过SQL注入漏洞读取敏感文件的能力(禁止mysql对本地文件存取)。执行如下SQL语句:
show variables like 'local_infile';
若返回结果不为OFF,则在/etc/my.cnf配置文件中修改:local_infile = 0
在/etc/my.cnf配置文件中修改:port = 3306
步骤操作如下:
(1)修改MySQL配置文件my.cnf,在[mysqld]节点下添加如下代码:
skip-networking
bind-address = 127.0.0.1
(2)重启MySQL服务,使配置文件生效。
(3)进入MySQL客户端,使用root用户登录:mysql -u root -p
(4)修改root用户的访问权限,使其只能在本地登录:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
(5)启用MySQL查询日志(可选),以便查看root用户的登录情况:
SET GLOBAL general_log = 'ON';
SET GLOBAL log_output = 'TABLE';
DROP DATABASE test;
合理设置数据库文件权限,防止否授权访问或篡改。确保重要的数据库文件没有任意可写权限或任意可读权限,检查是否有不恰当的授权文件。
检测方法:
ls -al .mysql_history .bash_history #应为600 权限
ls –al /etc/my.cnf #应为644 权限
find / -name .MYD |xargs ls –al #应为600 权限
find / -name .MYI |xargs ls –al #应为600 权限
find / -name .frm |xargs ls –al #应为600 权限
加固方法:保护数据库文件,授予恰当的权限:
(1)chmod 600 .mysql_history .bash_history
(2)chmod 600 *.MYD *.MYI *.frm
(3)chmod o-rw /etc/my.cnf
回退方法:使用chmod 命令,将文件权限改回加固前的设置。
Mysqld 服务以普通用户运行,防止数据库高权限被利用。
检测方法: 检查进程属主和运行参数是否包含–user=mysql 类似语句:
ps -ef|grep mysqld
grep -i user /etc/my.cnf
加固方法:vi 编辑/etc/my.cnf
,设置如下:
[mysql.server]
user=mysql
回退方法:vi 编辑/etc/my.cnf,将设置改为加固前
用root身份登入进入mysql库修改user表即可。
操作如下:
use mysql;
mysql>update user set user='newName' where user='root';
mysql>flushprivileges;
1、mysql默认是关闭通用日志的,可以用show variables like'%general%';
查看当前状态。
2、打开MySQL配置文件my.cnf,一般在/etc/mysql/my.cnf或/etc/my.cnf路径下。在[mysqld]下添加以下配置:
log=/var/log/mysql/mysql.log
general_log=1
general_log_file=/var/log/mysql/mysql-query.log
这里指定了两个日志文件,一个是默认的MySQL日志文件,一个是通用查询日志文件。开启通用日志,防止事件无法追溯。
查询日志文件/var/log/mysql/mysql-query.log,可以看到所有的查询语句记录。注意,该日志文件可能会很大,需要定期清理和压缩。
可以在 MySQL 的配置文件中设置最大连接数,配置文件通常位于 /etc/my.cnf 或 /etc/mysql/my.cnf
,具体位置根据系统和安装方式而定。在配置文件中找到 [mysqld] 或 [mysql] 段
,加入如下参数:
max_connections = 100
这里将最大连接数设置为 100,可以根据实际情况进行调整。
修改最大连接数都要考虑到服务器硬件资源和应用程序的实际情况,设置过高可能会导致服务器宕机或应用程序崩溃。
从时代发展的角度看,网络安全的知识是学不完的,而且以后要学的会更多,同学们要摆正心态,既然选择入门网络安全,就不能仅仅只是入门程度而已,能力越强机会才越多。
因为入门学习阶段知识点比较杂,所以我讲得比较笼统,大家如果有不懂的地方可以找我咨询,我保证知无不言言无不尽,需要相关资料也可以找我要,我的网盘里一大堆资料都在吃灰呢。
干货主要有:
①1000+CTF历届题库(主流和经典的应该都有了)
②CTF技术文档(最全中文版)
③项目源码(四五十个有趣且经典的练手项目及源码)
④ CTF大赛、web安全、渗透测试方面的视频(适合小白学习)
⑤ 网络安全学习路线图(告别不入流的学习)
⑥ CTF/渗透测试工具镜像文件大全
⑦ 2023密码学/隐身术/PWN技术手册大全
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。