一.mysql数据库
1.身份鉴别
用户名、口令复杂度、定期更换
#登录
mysql -uroot -p
#版本查看
select veriosn();
#用户和口令查看
select user,host from mysql.user;
select user,host,authentication_string from mysql.user;
#口令复杂度查看
show variables like 'validate_password%';
#口令有效期查看
show variables like '%password_lifetime%';
#整改
#安装密码插件,口令复杂度
install plugin validate_password soname 'validate_password.so';
#口令有效期整改 一般不改
set global default_password_lifetime=180;
登录失败控制和连接超时
#登录失败次数,默认失败3次,锁定时间逐渐增加
show variables like '%failed_conn%';
#非交互超时断开时间,默认28800s=8h
show variables like 'wait_timeout';
#交互超时断开时间,默认28800s=8h
show variables like 'interactive_timeout';
#整改 登录失败控制插件
install plugin connection_control soname 'connection_control.so';
install plugin connection_control_failed_login_attempts soname 'connection_control.so';
#超时时间,180s=3min
set global wait_timeout=180;
set global interactive_timeout=180;
远程管理开启ssl
#是否开启
show variables like 'have_ssl';
#数据库用户是否启用ssl
select user,host,plugin,ssl_type from mysql.user;
#整改
#对用户启用ssl
alter user 'alibaby@'%' require ssl;
#登录方式
mysql -ualibaby -p -h 192.168.77.181
2.访问控制
账号和权限查看
#查看用户
select user,host from mysql.user;
#查看用户权限,以'alibaby'@'%'用户为例
show grants for 'alibaby'@'%'\G;
#查看锁定账户和口令过期账户
select user,host,account_locked,password_expired from mysql.user;
3.安全审计
#审计状态查看
show global variables like 'general_log%';
#整改 审计状态打开
set global general_log=ON;
4.入侵防范
登录地址限制和版本
#登录地址限制
select user,host from mysql.user;
#版本和补丁版本查看
show variables like 'version%';
二.oracle数据库
用户名、口令复杂度、定期更换
#登录
sqlplus / as sysdba
#版本查看
lsnrctl -v #登录前
select * from v$version; #登录后
#用户和状态
select user,account_status from dba_users;
#口令复杂度、有效期、登录失败次数、失败超时查看
select * from dba_profiles where profile='DEFAULT' and resource_type='PASSWORD';
#查看下面两个参数
PASSWORD_LIFE_TIME:密码有效期 默认180天
PASSWORD_VERIFY_FUNCTION:密码复杂度校验,默认NULL
登录失败控制和连接超时
#登录失败次数,锁定时间
select * from dba_profiles where profile='DEFAULT' and resource_type='PASSWORD';
#查看下面两个参数
FAILED_LOGIN_ATTEMPTS:最大登录次数,默认10次
PASSWORD_LOCK_TIME:超过最大登录次数,账户锁定天数,默认1分钟
#登录连接超时,UNLIMITTED未限制
select * from dba_profiles where profile='DEFAULT' and resource_name='IDLE_TIME';
#整改
#对所有用户生效
#设置用户登录失败次数为3次
alter profile default limit FAILED_LOGIN_ATTEMPTS 3;
#锁定5天
alter profile default limit PASSWORD_LOCK_TIME 5;
#连接超时 30分钟
alter profile default limit IDLE_TIME 30;
#自定义模版和添加用户
#创建profile
create profile limit_login_profile limit
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME 5
IDLE_TIME 30;
#添加用户到模板
alter user username profile limit_login_profile;
远程管理开启加密
#查看
cat $ORACLE_HOME/network/admin/sqlnet.ora
#整改,AES加密
cat $ORACLE_HOME/network/admin/sqlnet.ora
SQLNET.ENCRYPTION_SERVER = REQUESTED
SQLNET.ENCRYPTION_TYPES_SERVER= (AES)
2.访问控制
账号和权限查看
#用户查看
select user,account_status from dba_users;
#用户权限查看
select * from v$pwfile_users;
3.安全审计
#审计状态查看 DB默认开启,数据记录到sys.aud$
show parameter audit;
show parameter audit_trail;
#审计记录查看
select * from sys.aud$;
#SQL审计 FALSE 默认未开启
show parameter audit_sys_operations
4.入侵防范
登录地址限制和版本
#IP地址限制查看
cat $ORACLE_HOME/network/admin/sqlnet.ora
#整改
cat $ORACLE_HOME/network/admin/sqlnet.ora
#开启IP限制功能
tcp.validnode_checking=yes
#允许访问数据库IP地址列表
tcp.invited_nodes=(IP1,IP2,IP3)
#补丁版本查看
cd $ORACLE_HOME/OPatch/
./opatch lsinventory
三.postgresql数据库
1.身份鉴别
用户名、口令复杂度、定期更换
#登录
sudo -u postgres psql
#或
su - postgres
psql
#版本查看
#登录前
pg_ctl --version
#登录后
select version();
#用户和口令查看
\du
select * from pg_user;
select * from pg_shadow;
#口令复杂度 原生不支持 看是否启用passwordcheck模块
show shared_preload_libraries;
或
grep "passwordcheck" postgresql.conf
#口令有效期查看 默认不限制
select * from pg_user;
登录失败控制和连接超时
#登录失败次数,锁定时间 原生不支持 看有无使用session_exec插件
grep "session_exec" postgresql.conf
#会话连接超时 配置文件查看
grep "idle_in_transaction_session_timeout" postgresql.conf
#会话连接超时 命令查看
select * from pg_settings where name = 'idle_session_timeout';
#会话连接超时 pg14版本 命令查看
show idle_session_timeout;
远程管理开启加密
#ssl开启状态 配置文件查看 默认未开启
grep "ssl = " postgresql.conf
#ssl开启状态 命令查看
select * from pg_hba_file_rules;
2.访问控制
账号和权限查看
#用户和权限查看
\du
3.安全审计
#日志审计状态查看 默认on开启
show logging_collector;
#日志审计状态查看 默认on开启 配置文件查看
grep "logging_coll" postgresql.conf
#查看审计插件
select * from pg_extension;
#查看审计插件 配置文件查看
grep "audit" postgresql.conf
#审计记录查看 log_dir路径
grep "log_dir" postgresql.conf
4.入侵防范
登录地址限制和版本
#IP地址限制查看 默认127.0.0.1
select * from pg_hba_file_rules;
#IP地址限制查看 默认127.0.0.1 配置文件查看
grep "listen_add" postgresql.conf
#补丁版本
select version();
四.redis数据库
1.身份鉴别
用户名、口令复杂度、定期更换
#登录
redis-cli
auth
#版本查看
#登录前
redis-server -v
#登录后
info
#用户和口令查看
acl list
#口令查看和复杂度 复杂度原生不支持 可以看密码设置
grep "pass" redis.conf
#口令有效期查看 原生不支持
#整改
#未授权认证 命令行
config set requirepass "passwd"
#未授权认证 配置文件
sed -i '/requirepass/i requirepass "passwd"' redis.conf
登录失败控制和连接超时
#登录失败次数,锁定时间 原生不支持
#登录连接超时 默认0不限制
config get timeout
#整改 180
config set timeout 180
远程管理开启加密
#ssl查看 默认未加密
config get tls-auth
2.访问控制
账号和权限查看
#用户和权限查看 所有权限示例 ~* &* +@all @后面跟权限
acl list
3.安全审计
#审计状态查看
config get logfile
#审计记录查看,根据logfile看日志路径后查看
grep "logfile" redis.conf
4.入侵防范
登录地址限制和版本
#IP地址限制查看 默认127.0.0.1
config get bind
#补丁版本查看
info