当前位置:   article > 正文

数据库安全检查与加固学习笔记

数据库安全检查与加固

数据库安全检查与加固

1.mysql数据库安全管理

  1. 禁止MySQL已管理元的身份账号权限运行

    用普通账户运行mysqld
    
    加固方法:
    	MySQL  my.cnf配置文件中配置user=mysql
    
    • 1
    • 2
    • 3
    • 4
  2. 设置root用户名口令并修改登录名,且不存在空密码账号

    1.ccess MySQL控制台: mysql -u root -p
    在控制台中执行:
    	set password for 'root'@'localhost' = password('new_password')
    
    为了改进root的安全性,可以改名
        use mysql;
        update user set user="another_username" where user="root";
        flush privileges;
    然后就可以用新用户名访问
    	mysql -u another_username -p 
    	
    2.对于空密码账号
        set password for <user>@'<host>' = password('<clear password>')
        select * from mysql.user where user ="";
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  3. 配置合适的密码强度,最常使用期限小于90天

    密码特征,长度,大小写,长度,字符集
    添加配置到全局配置
    	plugin-load=validate_password.so
    	validate_password_length=14
    	validate_password_mixed_case_count=1
    	validate_password_number_count=1
    	validate_password_special_char_count=1
    	validate_passwordpolicy=MEDIUM
    使用期限小于等于90天
    	配置rdbms:
    	set global default_password_lifetime=90
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  4. 降低用户的数据库特权,只有管理员有完整的数据库访问权限

    mysql.user和mysql.db表
    使用revoke语句来删除权限
    MySQL.user中权限:
    	file_priv:表示是否运行用户读取数据库所在主机的本地文件;
    	Process:表示是否运行用户查询所有用户的命令执行信息;
    	Super_priv:表示用户是否有设置全局变量、管理员调试等高级权限;
    	Shutdown_priv:表示用户是否可以关闭数据库;
    	Create_user_priv:表示用户是否可以创建或者删除其他用户;
    	Grant_priv:表示用户是否可以修改其他用户权限;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  5. 禁止或限制远程访问,确保特定主机才有访问特权

    打开主句对数据库的访问:
    	grant all on *.* to 'root'@'% ';
    这是完全开放了对root 的访问,需要对特定主机ip进行限制
        grant all on *.* to 'root'@'localhost';
        grant all on *.* to 'root'@'myip.athome';
        flush privileges;
    有限许可访问:
    	grant select,insert on mydb.* to 'someuser'@'somehost';
    	someuser换成用户名,somehost换成主机
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  6. 配置MYSQL日志便于审计

    日志默认会用主机名+.err命名的文件
    配置
    log_error=/mydata/data/mysql.test.com.err 指定错误日志信息,默认在数据库目录下,该位置必须有写的权限
    log_warning ={0|1}#默认开启,服务器运行中的警告日志也在其中
    
    查询日志
    log={ON|OFF} 是否开启查询日志,在MySQL5.6已经废弃
    general_log ={ON|OFF} 启动或关闭查询日志,默认关闭
    general_log_file = /mydata/data/mysql.log 指定查询日志的位置
    log_output = {TABLE|FILE|NONE}指定存放日志位置的位置,文件或者表
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  7. 删除测试安装的test数据库

    DROP DATABASE "test"
    
    
    • 1
    • 2
  8. Mysqld启动禁用“–skip-grant-tables

    skip-grant-tables导致不适用权限系统的情况下启动,不启动grant-tables授权表,忘记管理员密码可以用到
    配置文件中skip-grant-tables设置为FALSE,并且启动参数不包含--skip-grant-tables
    
    • 1
    • 2
  9. 数据库位于非系统区

    系统分区:通常用于主句系统、应用程序操作
    非系统分区:用于存储数据
    MySQL数据库的挂在点不应该为:root('/'),var,/usr
    
    为MySQL选择非系统分区的新位置
    	停止mysqld:	service mysql stop
    	执行命令复制数据:	cp-rp <datadir> <新位置>
    	启动	service mysql start
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

2.Oracle管理用户安全性

创建用户 create user test1 identified by test1;
删除用户 drop user test1;
锁定用户 alter user test1 account lock;
	select username,account_status form dba_users where username ="";
修改用户密码
	alert user test1 identified by <新密码>;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

概要文件

用户限制数据库使用和实例资源的一组指定资源限制的条件,并管理账户状态和口令管理规则。

select username,account_status,profile from dba_users where rownum <= 1;


select profile,resource_name,limit from dba_profiles where rownum <= 1;

profile 配置
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XQaaxdhc-1648292687227)(E:\学习\picture\1.png)]

口令复杂验证

password_verify function 指定一个pl/sql函数,便于分配口令之前执行复杂度检查

utlpwdmg.sql脚本提供了模型口令验证函数
Unix和linux: $ORACLE_HOME/rdbms/admin
winows: %oracle_home%\rdbms\admin
  • 1
  • 2
  • 3
  • 4
  • 5

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rhPZgr7E-1648292687228)(E:\学习\picture\image-20220326104519877.png)]

取消概要文件的限制

取消密码管理
	alert profile DEFAULT limit unlimited;
	alert profile DEFAULT limit password_reuse_time unlimited;
停止密码校验函数
	alert profile DEFAULT limit password_verify_function null;
  • 1
  • 2
  • 3
  • 4
  • 5

自建概要文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zwo7oFEf-1648292687229)(E:\学习\picture\image-20220326104909487.png)]

3.Redis未授权访问漏洞

数据库持久,key-value ,list,set,zset,hash,数据备份

漏洞原理(18)

未开启认证或采用相关策略
	默认绑定在679,没有开启认证
ssh免密码登录
	ssh root@192.168.xxx.xxx
	自身提供的config命令,可进行写操作
	将攻击者的公钥写入目标服务器 /root/.ssh文件夹的authotrized_keys文件中,然后使用对应的私钥登录
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
ssh-keygen -t rsa 本地生成公私密钥
用户根目录 .ssh
authorized_keys存在远程免密登录的公钥,可记录多台
id_rsa:生成的私钥文件
id_rsa.pub:生成的公钥文件
know_hosts: 已知的主机公钥清单

希望公钥生效必须满足:
1. .ssh目录权限必须为700
2. .ssh/authorized_keys 文件必须为600

scp复制自己的公钥到对方的文件中
	scp -p ~/.ssh/id_rsa.pub root@<remote_ip>:/root/.ssh/authorized_keys
	
手工复制黏贴到远程服务器~/.ssh/authorized_keys


root@kail:		./redis-cli -h 192.xxx.xxx.xxx
192.xxx.xxx.xxx:6379> config get dir
192.xxx.xxx.xxx:6379> config get dir /root/.ssh
192.xxx.xxx.xxx:6379> config set dbfilename authorized_keys
192.xxx.xxx.xxx:6379> keys *
192.xxx.xxx.xxx:6379> get xxx "\n\n\nssh-rsa key_pub root@kail\n\n\n\n"
192.xxx.xxx.xxx:6379> save


ssh ip 登录
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

redis安全检测

1.ps -aux|grep redis 是否root运行
2.netstat -tunlp|grep redis 是否监听本地
3.是否设置相应的密码 
	redis-cli -h 192.xxxx
	keys *
	info
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

加固

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C8elbEfF-1648292687229)(E:\学习\picture\image-20220326113204628.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4MNo2tOM-1648292687230)(E:\学习\picture\image-20220326113258452.png)]

漏洞解决方法

升级程序,补丁
修改安全配置,停止服务
通过主机防火墙进行访问控制
通过系统边界防火墙进行访问控制
通过修改程序Banner进行欺骗
  • 1
  • 2
  • 3
  • 4
  • 5

is-cli -h 192.xxxx
keys *
info


### 加固

[外链图片转存中...(img-C8elbEfF-1648292687229)]

[外链图片转存中...(img-4MNo2tOM-1648292687230)]



### 漏洞解决方法

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

升级程序,补丁
修改安全配置,停止服务
通过主机防火墙进行访问控制
通过系统边界防火墙进行访问控制
通过修改程序Banner进行欺骗


  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/906742
推荐阅读
相关标签
  

闽ICP备14008679号