数据库加固

MySql加固

部署MySql

1.安装MySql
yum install mariadb mariadb-server -y


2.启动MySql服务
systemctl start mariadb.service


3.启动MySql,默认为空密码
mysql -uroot -p

# 修改root密码
update mysql.user set password=password('123123') where user='root';

# 刷新密码
flush privileges;


4.重新用密码登录mysql
mysql -uroot -p123123

忘记root密码

1.修改配置文件
vim /etc/my.cnf
# 在 [mysqld] 中加入如下参数,就可以免密登录了
skip-grant-tables

2.重启mysql
systemctl restart mariadb.service

3.登录MySQL,修改root密码,空密码
mysql -uroot -p
update mysql.user set password=password('123123') where user='root';

4.删除配置文件的skip-grant-tables参数

5.重启mysql
systemctl restart mariadb.service

删除无用数据库和用户

1.删除测试库
show databases;
drop database test;


2.删除非root用户
delete from mysql.user where not (user='root');


3.删除密码为空的root用户
delete from mysql.user where user='root' and password='';
flush privileges;

变更DBA用户名

使用update更新mysql库中的user表中的信息

update mysql.user set user="luobo" where user="root";
flush privileges;

在账户管理时使用加密算法

添加账户时,密码进行加密处理

1.创建测试文件
create database test default charset utf8;
create table test.t1(id int(10),name varchar(20),pass varchar(20));


2.!!!创建加密密码
insert into test.t1 values (1,'test',password(1111111));

更改Mysql启动用户

1.修改my.cnf文件
vim /etc/my.cnf

# 加入如下内容
[mysqld]
user=mysql

2.重启mysql
systemctl restart mariadb.service

限制远程连接数

1.修改my.cnf文件,去掉注释符号
vim /etc/my.cnf

# 加入如下内容
[mysqld]
max_connections=5
max_user_connections=2


2.重启mysql
systemctl restart mariadb.service

关闭远程管理数据库

这样,其他用户就不能通过 -h 参数连接数据库了

1.修改my.cnf文件,添加或去掉注释符号
vim /etc/my.cnf

# 添加如下内容
[mysqld]
skip-networking


2.重启mysql
systemctl restart mariadb.service

清理MySql命令历史

1.注意清理家目录中的.mysql_history
ln -s /dev/null /root/.mysql_history

2.禁止使用明文模式登录mysql
mysql -uroot -p123123

3.应使用隐藏密码方式
mysql -uroot -p

禁止MYSql读取本地文件

1.修改my.cnf文件,加入关闭信息
vim /etc/my.cnf

# 添加如下内容
[mysqld]
local_infile=0



或者secure_file_priv=
为空时不能查看
如果secure_file_priv的值为NULL,那么就不能将文件写进数据库中
secure_file_priv为某一目录
只能操作特定目录的文件,其余不能


2.重启mysql
systemctl restart mariadb.service



或者添加启动选项
用脚本开启mysql的禁止读取本地文件功能
mysqld_safe --local_infile=0 --user=mysql

load_file()
可以直接查看
select load_file(“E:/Desktop/2.txt”);

禁止将表导出到文件

1.在mysql中修改用户的文件权限
update mysql.user set File_priv='N' where user='root';

2.刷新权限
flush privileges;


3.检查配置文件是否存在不合理信息
grep secure_file_priv /etc/my.cnf
secure_file_priv=xxx路径

日常备份数据库

1.添加配置文件
vim my.cnf
[mysqld]
# 开启binlog功能
log-bin=mysql-bin


2.手动备份数据库可以防止密码铭文储存
mysqldump -p123123 --user=root --all-databases --flush-privileges --lock-all-tables --master-data=1 --flush-logs --triggers --routines --events --hex-blob > /opt/$(date +%F).sql


3.删除测试数据库
drop database test;


4.还原数据库
mysql -u用户名 -p密码  数据库名 < 备份的文件名
mysql -uroot -p123123  < /opt/2023-06-05.sql 

redis加固

部署redis

1.安装编译安装需要的gcc环境
yum install gcc gcc-c++ -y

2.解压redis
tar fx redis-5.0.7.tar.gz 

3.移动redis到 /usr/local目录下
cp -r redis-5.0.7 /usr/local/redis

4.切换到 /usr/local/redis/
cd /usr/local/redis/

5.编译安装
make && make install

6.启动redis服务
/usr/local/redis/src/redis-server &


7.测试客户端连接
/usr/local/redis/src/redis-cli 
# 验证密码 
auth 123123


!!! 重启redis服务,读取配置文件
/usr/local/redis/src/redis-server /usr/local/redis/redis.conf  &

禁止网络访问Redis服务

更改配置文件,使服务监听本地回环地址

修改redis的配置文件

vim /usr/local/redis/redis.conf 
# 确保开启仅本地绑定连接
bind 127.0.0.1

设置防火墙过滤流量

设置iptables防火墙,确保访问源安全

# 设置iptables防火墙,确保访问源安全
iptables -A INPUT -s 10.0.1.110 -p tcp --dport 6379 -j ACCEPT

禁用高危命令

1.编辑配置文件
# 在配置文件中,更名为空白或者改为自定义命令
vim /usr/local/redis/redis.conf 
rename-command CONFIG ""
rename-command flushall ""
rename-command flushdb ""
rename-command shutdown "shutdown_test"

2.重启redis服务,读取配置文件
/usr/local/redis/src/redis-server /usr/local/redis/redis.conf  &

开启密码验证

在配置文件中设置一个执行口令

1.编辑配置文件
vim /usr/local/redis/redis.conf 
# 开启密码验证
# requirepass foobared
requirepass 123123


2.重启redis,读取配置文件
/usr/local/redis/src/redis-server /usr/local/redis/redis.conf  &

3.密码验证
/usr/local/redis/src/redis-cli
auth 123123

以最小权限用户运行主程序

创建普通账户,使用普通账户运行程序

1.创建普通用户
useradd -s /sbin/nologin redis

2.切换到普通用户,运行redis
su -m redis -c /usr/local/redis/src/redis-server /usr/local/redis/redis.conf

3.查看运行进程属于哪个用户
[root@bogon ~]# lsof -i:6379
COMMAND     PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 53719 redis    6u  IPv6  94757      0t0  TCP *:6379 (LISTEN)
redis-ser 53719 redis    7u  IPv4  94758      0t0  TCP *:6379 (LISTEN)

备份和还原

!!!备份数据
1.备份数据库
127.0.0.1:6379> bgsave

# 获取备份数据的安装目录
127.0.0.1:6379> config get dir
1) "dir"
2) "/root"


2.查看备份数据
[root@bogon src]# ls /root/ |grep dump
dump.rdb



!!!还原数据
将备份好的文件放到安装目录,重启服务器即可

mongodb加固

部署

1.解压mongodb
tar fx mongodb-linux-x86_64-rhel70-4.2.3.tgz

2.移动并重命名
cp -r mongodb-linux-x86_64-rhel70-4.2.3 /usr/local/mongodb

3.切换到/usr/local/mongodb/
cd /usr/local/mongodb/

4.创建目录
mkdir -p data/db logs etc

5.创建并写入配置文件
vim /usr/local/mongodb/etc/mongodb.conf
dbpath=/usr/local/mongodb/data/db
logpath=/usr/local/mongodb/logs/mongodb.log
fork=true
journal=false


6.启动mongodb
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/etc/mongodb.conf

6.5关闭mongodb
/usr/local/mongodb/bin/mongod --shutdown -f /usr/local/mongodb/etc/mongodb.conf


7.查看端口
lsof -i:27017


8.连接mongodb
/usr/local/mongodb/bin/mongo

# 查看数据库
show dbs;

# 切换到数据库admin
use admin

制定日志与数据库存放位置

在配置文件中设置指向目录位置

1.创建并添加配置文件
vim /usr/local/mongodb/etc/mongodb.conf 

# 数据存放路径
dbpath=/usr/local/mongodb/data/db
# 日志存放路径
logpath=/usr/local/mongodb/logs/mongodb.log


2.重启mongodb,使配置生效
# 关闭mongodb
/usr/local/mongodb/bin/mongod --shutdown -f /usr/local/mongodb/etc/mongodb.conf

# 启动mongodb
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/etc/mongodb.conf

更改默认端口

1.修改配置文件
vim /usr/local/mongodb/etc/mongodb.conf
# 更改默认端口
port=28888


2.重启mongodb
# 关闭mongodb
/usr/local/mongodb/bin/mongod --shutdown -f /usr/local/mongodb/etc/mongodb.conf

# 启动mongodb
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/etc/mongodb.conf


3.连接mongo时使用密令加选项
/usr/local/mongodb/bin/mongo --port 28888

只监听业务流网卡

在配置文件中添加端口信息

1.修改配置文件
vim /usr/local/mongodb/etc/mongodb.conf 
# 加入网卡绑定信息
bind_ip=10.0.1.110


2.重启mongodb
# 关闭mongodb
/usr/local/mongodb/bin/mongod --shutdown -f /usr/local/mongodb/etc/mongodb.conf

# 启动mongodb
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/etc/mongodb.conf


3.登录时需输入
/usr/local/mongodb/bin/mongo 10.0.1.110:27017

开启认证功能

在配置文件中开启认证功能

1.无认证状态下对数据库操作
# 连接mongodb
/usr/local/mongodb/bin/mongo

# 切换到admin
use admin

# 创建认证用户
db.createUser({user:"test1",pwd:"123.com",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})


2.!!!自建配置文件,开启认证功能
vim /usr/local/mongodb/etc/mongodb.conf
# 加入如下参数
auth=true


3.重启服务
# 关闭mongodb
/usr/local/mongodb/bin/mongod --shutdown -f /usr/local/mongodb/etc/mongodb.conf

# 启动mongodb
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/etc/mongodb.conf


4.再次创建test2,发现失败,需要先认证用户名密码后再执行
# 连接mongodb
/usr/local/mongodb/bin/mongo

# 切换到admin
use admin

# 此时创建是不通过的,需要认证后才能创建
db.createUser({user:"test2",pwd:"123.com",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})


5.输入认证命令后,再次创建,成功创建
db.auth('test1','123.com')
# 再次创建,发现可以成功创建了
db.createUser({user:"test2",pwd:"123123",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})

备份与回复

由于开启了认证,需要创建专用账户

1.连接mongodb
/usr/local/mongodb/bin/mongo
# 切换admin
use admin
# 认证命令
db.auth('test1','123.com')


2.创建备专用份账户
db.createUser({user:"bkuser",pwd:"123123",roles:[{role:"backup",db:"admin"}]})


3.创建专用恢复账户
db.createUser({user:"reuser",pwd:"123123",roles:[{role:"restore",db:"admin"}]})


4.使用备份账户备份指定数据库
# 备份admin数据库到/tmp目录中
/usr/local/mongodb/bin/mongodump  --host 127.0.0.1 --port 27017 -d admin -o /tmp/ -u bkuser -p 123123 --authenticationDatabase admin


5.使用恢复账户恢复数据库
/usr/local/mongodb/bin/mongorestore  --host 127.0.0.1 --port 27017 -u reuser -p 123123 -d mytest /tmp/admin --authenticationDatabase admin


6.查看添加的mytest文件
# 连接mongodb
/usr/local/mongodb/bin/mongo
# 切换到admin
use admin
# 输入认证命令
db.auth('test1','123.com')
# 查看所有数据库,发现多了一个mytest
> show dbs;
admin   0.000GB
config  0.000GB
local   0.000GB
mytest  0.000GB   !!!

MSSql

MSSql=Sql_Server

修改管理员登录信息

SQL Server Management Studio修改

为sa账户更改登录名和密码

重命名

安全性→登录名→sa(右击:重命名)

在这里插入图片描述

改密码

安全性→登录名→sa(右击:属性)

在这里插入图片描述

在这里插入图片描述

操作权限最小化

安全性→登录名(右击:新建登录名)

在这里插入图片描述

在这里插入图片描述

每个服务器角色权限各不相同,根据实际需求选择
在这里插入图片描述

每个数据库角色权限各不相同,根据实际需求选择

在这里插入图片描述

服务器角色分类

sysadmin:固定服务器角色的成员可以在服务器中执行任何活动
serveradmin:固定服务器角色的成员可以更改服务器范围内的配置选项并关闭服务器
securityadmin:固定服务器角色的成员管理登录名及其属性。他们可以GRANT、DENY和REVOKE 服务器级权限。他们还可以GRANT、DENY和REVOKE 数据库级权限(如果他们具有数据库的访问权限)。此外,他们还可以重置 SQL Server 登录名的密码。
processadmin:固定服务器角色的成员可以终止在SQLServer 实例中运行的进程
setupadmin:固定服务器角色的成员可以添加和删除链接服务器
bulkadmin:固定服务器角色的成员可以运行BULKINSERT语
diskadmin:固定服务器角色用于管理磁盘文件
dbcreator:固定服务器角色的成员可以创建、更改、删除和还原任何数据库
public:每个SQLServer 登录名均属于 public 服务器角色

数据库角色分类

db_owner:固定数据库角色的成员可以执行数据的所有配置和维护活动,还可以删除数据库
db_securityadmin:固定数据库角色的成员可以修改色成员身份和管理权限。向角色中添加主体可能会导致意外的权限升级
db_accessadmin:周定数据库角色的成员可以为 Windows 登录名、Windows组和SQLServer 登录名添加或删除数据库访问权限
db_backupoperator:固定数据库角色的成员可以备份数据库
db_ddladmin:固定数据角色的成员可以在数据中运行任何数据定义语言(DDL)命令
db_datawriter:固定数据库角色的成员可以在所有用户表中添加删除或更改数据db_datareader:固定数据库角色的成员可以从所有用户表中读取所有数据
db_denydatawriter:固定数据库角色的成员不能添加、修改或删除数据库内用户表中的任何数据
db_denydatareader: 固定数据库角色的成员不能读取数据库内用户表中的任何数据

禁用系统管理员登录数据库

安全性→登录名→WINxxx\Administrator→属性→状态

在这里插入图片描述

对数据库启用更改跟踪

数据库→系统数据库→database→属性→更改跟踪

在这里插入图片描述

事务日志远程备份

数据库(右击:新建数据库)
在这里插入图片描述

数据库→test(右击:属性)→事务日志传送→备份设置

在这里插入图片描述

在这里插入图片描述

更改登录审核日志

连接实例(右击:属性)→安全性

在这里插入图片描述

禁止远程登录数据库

连接实例(右击:属性)→连接

在这里插入图片描述

删除有风险的存储过程

数据库→系统数据库→可编程性→扩展存储过程→系统扩展存储过程→根据实际情况删除不需要的存储过程

在这里插入图片描述

修改网卡监听地址

如果需要启动网络协议,建议修改TCP/IP配置

SQL_Server配置管理器修改

SQL Server网络配置(32位)→MSSQLSERVER的协议→TCP/IP(右击:属性)→IP地址

在这里插入图片描述

创建最小权限启动服务账户

在lusrmgr.msc中新建账户,从users组中清除,去除远程控制

在这里插入图片描述

删除users组

在这里插入图片描述

去掉远程控制

在这里插入图片描述

打开sqlserver配置管理器,修改服务属性

SQL Server服务→SQL Server(右击:属性)

在这里插入图片描述

账户更改为刚刚创建的test用户

在这里插入图片描述

此时Sql Server的登录身份为test了

在这里插入图片描述

如果需要启动网络协议,建议修改TCP/IP配置

SQL_Server配置管理器修改

SQL Server网络配置(32位)→MSSQLSERVER的协议→TCP/IP(右击:属性)→IP地址

[外链图片转存中…(img-JG0V6EkB-1686133995231)]

创建最小权限启动服务账户

在lusrmgr.msc中新建账户,从users组中清除,去除远程控制

新建账户test[外链图片转存中…(img-Ckc2kOrH-1686133995232)]

删除users组

[外链图片转存中…(img-J5IkKKGH-1686133995232)]

去掉远程控制

[外链图片转存中…(img-scDdhL5v-1686133995232)]

打开sqlserver配置管理器,修改服务属性

SQL Server服务→SQL Server(右击:属性)

[外链图片转存中…(img-aeRtU1Wt-1686133995233)]

账户更改为刚刚创建的test用户

[外链图片转存中…(img-2xddUNfV-1686133995233)]

此时Sql Server的登录身份为test了

[外链图片转存中…(img-12qjiBms-1686133995233)]

猜你喜欢

转载自blog.csdn.net/m0_51553670/article/details/131093775