一.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;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

登录失败控制和连接超时

#登录失败次数,默认失败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;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

远程管理开启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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

2.访问控制

账号和权限查看

#查看用户
select user,host from mysql.user;
#查看用户权限,以'alibaby'@'%'用户为例
show grants for 'alibaby'@'%'\G;
#查看锁定账户和口令过期账户
select user,host,account_locked,password_expired from mysql.user;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

3.安全审计

#审计状态查看
show global variables like 'general_log%';
#整改  审计状态打开
set global general_log=ON;
  • 1.
  • 2.
  • 3.
  • 4.

4.入侵防范

登录地址限制和版本

#登录地址限制
select user,host from mysql.user;
#版本和补丁版本查看
show variables like 'version%';
  • 1.
  • 2.
  • 3.
  • 4.

二.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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

登录失败控制和连接超时

#登录失败次数,锁定时间
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;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.

远程管理开启加密

#查看
cat $ORACLE_HOME/network/admin/sqlnet.ora

#整改,AES加密
cat $ORACLE_HOME/network/admin/sqlnet.ora
SQLNET.ENCRYPTION_SERVER = REQUESTED
SQLNET.ENCRYPTION_TYPES_SERVER= (AES)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

2.访问控制

账号和权限查看

#用户查看
select user,account_status from dba_users;
#用户权限查看
select * from v$pwfile_users;
  • 1.
  • 2.
  • 3.
  • 4.

3.安全审计

#审计状态查看 DB默认开启,数据记录到sys.aud$
show parameter audit;
show parameter audit_trail;
#审计记录查看
select * from sys.aud$;
#SQL审计 FALSE 默认未开启
show parameter audit_sys_operations
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

三.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;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.

登录失败控制和连接超时

#登录失败次数,锁定时间 原生不支持 看有无使用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;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

远程管理开启加密

#ssl开启状态  配置文件查看  默认未开启
grep "ssl = " postgresql.conf
#ssl开启状态  命令查看
select * from pg_hba_file_rules;
  • 1.
  • 2.
  • 3.
  • 4.

2.访问控制

账号和权限查看

#用户和权限查看
\du
  • 1.
  • 2.

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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

4.入侵防范

登录地址限制和版本

#IP地址限制查看 默认127.0.0.1
select * from pg_hba_file_rules;
#IP地址限制查看 默认127.0.0.1 配置文件查看
grep "listen_add" postgresql.conf
#补丁版本
select version();
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

四.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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

登录失败控制和连接超时

#登录失败次数,锁定时间 原生不支持
#登录连接超时 默认0不限制
config get timeout

#整改 180
config set timeout 180
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

远程管理开启加密

#ssl查看  默认未加密
config get tls-auth
  • 1.
  • 2.

2.访问控制

账号和权限查看

#用户和权限查看 所有权限示例 ~* &* +@all    @后面跟权限
acl list
  • 1.
  • 2.

3.安全审计

#审计状态查看
config get logfile
#审计记录查看,根据logfile看日志路径后查看
grep "logfile" redis.conf
  • 1.
  • 2.
  • 3.
  • 4.

4.入侵防范

登录地址限制和版本

#IP地址限制查看 默认127.0.0.1
config get bind
#补丁版本查看
info
  • 1.
  • 2.
  • 3.
  • 4.