一、Windows

1. 账户管理和认证授权

(1). 账户

a. 默认账户安全
  • 修改位置:控制面板 => 管理工具 => 计算机管理 => 系统工具 => 本地用户和组 => 用户

  • 禁用GUest账户

    禁用Guest用户

  • 禁用或删除其他无用账户

  • 按照业务要求,分配账户

b. 定期检查
  • 定期删除或锁定与设备运行、维护等与工作无关的账户
c. 不显示用户名
  • 控制面板 => 管理工具 => 本地安全策略 => 本地策略 => 安全选项 => 交互式登录:不显示最后的用户名

    不显示用户登录名

(2). 口令

  • 控制面板 => 管理工具 => 本地安全策略 => 账户策略
a. 密码复杂度
  • 启用本机组策略中密码必须符合复杂性要求的策略

  • 密码策略 => 密码必须符合复杂性要求

    启用密码复杂度

b. 密码最长留存期
  • 账户口令的留存期不应长于90天

  • 密码策略 => 密码最长使用期限

    密码最长留存期

c. 账户锁定策略
  • 用户连续认证失败次数超过10次后,锁定该账户
  • 账户策略 => 账户锁定策略 => 账户锁定阈值

账户锁定策略

(3). 授权

  • 控制面板 => 管理工具 => 本地安全策略 => 本地策略 => 用户权限分配
a. 远程关机
  • 权限只分配给Administrators组
  • => 从远端系统强制关机

远程关机

b. 本地关机
  • 权限只分配给Administrators组

  • => 关闭系统

本地关机

c. 用户权限指派
  • 权限只分配给Administrators组
  • => 取得文件或其他对象的所有权

用户权限指派

d. 授权账户登录
  • 只允许指定用户本地登录
  • => 允许本地登录

授权账户登录

e. 授权账户从网络访问
  • => 从网络访问此计算机

从网络访问计算机

2. 日志配置

  • 设备应配置日志功能
  • 控制面板 => 管理工具 => 本地安全策略 => 本地策略 => 审核策略

(1). 审核事件

审核事件

a. 审核登录
  • 对用户登录信息进行记录

  • => 审核登录事件

b. 审核策略
  • 对Windows系统的审核策略更改,成功 and 失败

  • => 审核策略更改

c. 审核对象访问
  • 对Windows系统的审核对象访问,成功 and 失败
  • => 审核对象访问
d. 审核目录访问
  • 对Windows系统的审核目录服务访问,only 失败
  • => 审核目录服务器访问
e. 审核特权使用
  • 对Windows系统的审核特权使用,成功 and 失败
  • => 审核特权使用
f. 审核系统事件
  • 对Windows系统的审核系统事件,成功 and 失败
  • => 审核系统事件
g. 审核账户管理
  • 对Windows系统的审核账户管理,成功 and 失败
  • => 审核账户管理
h. 审核过程追踪
  • 对Windows系统的盛和进程追踪,only 失败
  • => 审核进程追踪

(2). 日志大小

日志大小修改

  • 至少8192KB,按需要轮询记录日志
  • 控制面板 => 管理工具 => 事件查看器 ,进而修改3种日志大小

3. 其他安全配置

(1). 防病毒管理

  • 安装企业级防病毒软件
  • 并开启病毒库更新及实时防御功能

(2). 屏幕保护

  • 从屏保恢复时需要输入密码
  • 设置屏保自动开启时间为5分钟

(3). 远程登录空闲时间

  • 不活动时间超过15分钟自动断开连接
  • 控制面板 => 管理工具 => 本地安全策略 => 本地策略 => 安全选项 =>Microsoft网络服务器:暂停会话前所需的空闲时间数量

(4). 操作系统补丁

二、Linux

1. 账号和口令

(1). 禁用或删除无用账号

userdel [username]  #删除不必要账号
passwd -L [username]    #锁定账号
passwd -U [username]    #解锁账号

(2). 检查特殊账号

a. 空口令账号
①查看
#查看空口令账号
awk -F: '($2=="")' /etc/shadow

#查看UID=0的账号
awk -F: '($3==0)' /etc/passwd

查看空口令账号

查看root权限账号

②加固
#为空口令用户设置密码
passwd [username] 
b. root权限用户
#查看UID=0的账号
awk -F: '($3==0)' /etc/passwd

(3). 限制用户su

#修改配置文件,添加相应操作
vim /etc/pam.d/su

#添加一行内容,只允许test组用户su到root
auth required pam_wheel.so group=test

限制用户su

(4). 禁止root用户直接登录

#修改配置文件
vi /etc/ssh/sshd_config
#修改为以下内容
PermitRootLogin no
#重启服务
service sshd restart

禁止root用户直接登录

2. 服务

(1). 关闭不必要的服务

#推荐使用
systemctl disable [服务名]
#老版本系统(Centoss6),不推荐使用
chkconfig --level <init级别> <服务名> off

(2). SSH服务安全

#编辑配置文件
vi /etc/ssh/sshd_config
#不允许root账户直接登录,修改or设置为以下值
PermitRootLogin no
#修改or设置SSH使用的协议版本
Protocol 2
#修改or设置允许密码错误次数(默认为6)
MaxAuthTries 3
#重启服务
service start sshd

编辑SSH相关

3. 日志

#默认系统日志
/var/log/messages

#syslog-ng日志
/etc/syslog-ng/syslog-ng.conf

系统日志内容

#默认cron日志
/var/log/cron

cron日志内容

#默认安全日志
/var/log/secure

默认安全日志

三、中间件

1. Apache服务

(1). 账号设置

  • 使用专门的账号和用户来运行Apache服务
a. 创建专用用户
#创建用户组
groupadd apache
#创建用户
useradd apache -g apache
#配置文件httpd.conf添加以下内容,修改Apache服务的运行用户
User apache
Group apache

创专用用户及用户组

httpd.conf配置文件内容

b. 检查运行用户
#检查httpd.conf配置文件中是否允许非专用账户运行Apache服务,Linux默认apache or nobody,Unix默认Daemon

(2). 授权设置

a. 目录修改权限
  • 非超级用户不能修改该目录中的内容,/etc/httpd/conf/httpd.conf

    #Apache配置文件httpd.conf,修改或添加以下内容
    ServerRoot /usr/local/apache
    

非超级用户不能修改

b. 避免未授权访问
  • 配置文件和日志文件默认权限均为644
chmod 600 /etc/httpd/conf/httpd.conf
chmod 644 /var/log/httpd/*.log

配置文件权限

日志文件权限

(3). 日志设置

  • 修改配置文件httpd.conf内容,设置日志记录文件、记录内容、记录格式
a. 错误日志
#修改日志级别,notice > warn(默认 )
LogLevel notice

#修改日志的保存位置和文件名
ErrorLog /../logs/error_log

#错误日志传给Syslog时
Errorlog syslog /../logs/error_log

错误日志级别

b. 访问日志
#设置日志格式
LogFormat %h %l %u %t \"%r\" %>s %b "%{Accept}i\"%{Referer}i\"\"%{User-Agent}i\""

Combined

#指定保存日志的具体位置、日志格式
CustomLog /../logs/access_log combined  #访问日志

访问日志格式

访问日志存储位置

(4). 禁止访问外部文件

  • 禁止Apache访问Web目录之外的任何文件

  • 修改httpd.conf配置文件

    Order Deny,Allow
    Deny from all
    
    <Directory />
       AllowOverride none
       Require all denied
    </Directory>
    

    禁止访问web目录之外文件

  • 设置可访问的目录

    Order Allow,Deny
    Allow from /var/www  #/web为网站根目录
    
    <Directory "/var/www">
       AllowOverride None
       Require all granted
    </Directory>
    

    设置可访问目录

  • 默认配置,根据业务调整

    Options FollowSysLinks
    AllowOverride None
    

默认配置

(5). 禁止目录列出

  • 避免在Apache列表中显示文件,导致文件泄露

  • 修改httpd.conf配置文件

    #Options Indexes FollowSymLinks #删除Indexes
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    
  • 重启Apache服务

    systemctl restart httpd
    

    禁止列出目录

(6). 错误页面重定向

  • 防止敏感信息泄露

  • 修改httpd.conf配置文件

    ErrorDocument 404 "Forbidden"        #自定义显示内容
    ErrorDocument 403 /custom404.html    #自定义错误页面
    

    错误页面重定向

  • 重启Apache服务

systemctl restart httpd

(7). 拒绝服务防范

  • 合理设置Session时间(涉及性能调整)

  • 修改httpd.conf配置文件

    Timeout 10 #客户端与服务端建立连接前的时间间隔
    KeepAlive On
    keepAliveTimeout 15 #每个session保持时间为15秒
    

    拒绝服务防范

  • 重启Apache服务

systemctl restart httpd

(8). 其他配置

  • 修改或添加httpd配置文件内容
a. 隐藏Apache版本号
ServerSignature Off ServerTokens Prod

隐藏版本号

隐藏版本号显示

b. 关闭TRACE功能
#apache版本高于2.0
TraceEnable Off
c. 禁用CGI
  1. 存在CGI

    直接禁用CGI
    
  2. 不存在CGI

    #注释掉cgi-bin目录的配置和模块
    
d. 绑定监听地址
  • 监听功能默认监听所有地址

  • 服务器有多个IP地址时,只监听提供服务的IP地址

#查看是否绑定IP地址
cat /etc/httpd/conf/httpd.conf | grep Listen

#修改监听地址
Listen x.x.x.x:80
e. 删除缺省安装文件
#删除缺省 HTML 文件:
 rm -rf /usr/local/apache2/htdocs/*
#删除缺省的 CGI 脚本:
 rm –rf /usr/local/apache2/cgi-bin/*
#删除 Apache 说明文件:
 rm –rf /usr/local/apache2/manual
#删除源代码文件:
 rm -rf /path/to/httpd-2.2.4*
#删除 CGI。
#可根据实际情况删除,一般情况下 /var/www/html /var/www/cgi-bin 默认就是空的
f. 禁用非法HTTP方法
  • 只允许GET、POST方法
<Location> 
<LimitExcept GET POST CONNECT OPTIONS> 
Order Allow,Deny 
Deny from all 
</LimitExcept> 
</Location>

2. Tomcat服务

(1). 管理后台

a. 不使用
1. 使用安全组防护墙功能对管理后台URL进行拦截
2. 删除Tomcat的webapps/manager、webapps/host-manager文件夹
3. 注释Tomcat的conf/tomcat-users.xml所有代码

管理后台文件删除

b. 使用
  • 配置强口令

配置强口令

(2). 开启访问日志

  1. 修改conf/server.xml文件,取消以下代码注释
<Value className="org.apache.catalina.valves.AccessLogValue" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false" />

开启访问日志

  1. 重启Tomcat服务
systemctl restart tomcat

(3). 默认账号安全

  1. 修改conf/tomcat-user.xml文件,重新设置复杂口令并保存文件
  2. 重启Tomcat服务

配置强口令

(4). 修改默认访问端口

  1. 修改conf/tomcat-user.xml文件,修改8080端口并保存文件
  2. 重启Tomcat服务

(5). 重定向错误

  1. 在webapps\manager目录中创建响应的错误页面文件

  2. 在conf/web.xml中添加如下代码

    <error-page>
       <error-code>403</error-code>
       <location>/403.html</location> 
    </error-page>
    <error-page>
       <error-code>404</error-code>
       <location>/404.html</location> 
    </error-page>
    <error-page>
       <error-code>500</error-code>
       <location>/500.html</location> 
    </error-page>
    
  3. 重启Tomcat服务

(6). 禁止列出目录

  • 修改web.xml文件内容

    <param-name>listings</param-name>
    <!--改为以下内容-->
    <param-name>false</param-name>
    

禁止列出目录

(7). 删除文档和示例程序

  • 删除webapps/docs、webapps/examples、webapps/manager、webapps/ROOT、webapps/host-manager文件夹

删除文档和示例程序

3. IIS环境

  • 管理工具 => IIS服务器 => 网站 => dvbbs => 右键 => 属性

(1). 修改默认日志路径

  • 可以设置为system读写,Administrator只读权限

  • c:\windows\system32\logfile => 其他路径

(2). 加固方法

  1. 修改日志属性
  2. 删除所有不必要的扩展名
  3. 不要向客户端发送详细信息
  4. 主目录= > 配置 => 选项(调试)
  5. IIS权限
  6. 不给写入和目录浏览
  7. 限制后台登录的IP地址
  8. 删除所有的自定义错误
  9. c:\windows\help\iishelp

4. PHP环境

配置文件/etc/php.ini

(1). 启用安全模式

  • 修改 or 添加配置文件php.ini内容
safe_mode = on

启用安全模式

a. 用户组安全
#关闭后,php脚本无法对文件进行访问,且相同用户组的用户也不能(Linux)
safe_mode_gid = off

关闭用户组安全

b. 执行程序主目录
  • 安全模式打开,却要执行某些程序,可指定要执行程序的主目录
#1.指定程序主目录
safe_mode_exec_dir = /usr/bin
#2.将程序拷贝到临时目录
safe_mode_exec_dir = /temp/cmd
#3.将执行目录指向网页目录(推荐)
safe_mode_exec_dir = /usr/www       

执行程序主目录

c. 包含文件
safe_mode_include_dir = /usr/www/include/ 

包含文件设置

d. 控制脚本访问目录
  • 使用open_basedir选项能够控制PHP脚本只能访问指定的目录,一定程度上限制了phpshell
open_basedir = /usr/www 

控制脚本访问

(2). 关闭危险函数

a. 禁用危险函数
disable_functions = system,passthru,exec,shll_exec,popen,phpinfo,escapeshellarg,escapeshellcnd,proc_close,proc_open,dll

关闭危险函数

b. 禁用文件操作
disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir,rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown

(3). 关闭PHP版本信息

expose_php = Off

关闭头信息泄露

(4). 关闭注册全局变量

  • POST、GET提交的变量会自动注册为全局变量,能直接访问
auto_globals_jit = On
register_globals = off

关闭注册全局变量

(5). SQL注入防护

  • 打开magic_quotes_gpc来防止SQL注入 ,默认关闭,5.4.0以后已被移除
magic_quotes_gpc = On 

(6). 错误控制信息

display_errors = Off 

错误控制信息

(7). 错误日志

log_errors = On 
error_log = /usr/local/apache2/logs/php_error.log 

开启错误日志

四、数据库

1. Mysql

  • 配置文件/etc/my.cnf

(1). 账号安全

a. 禁止管理员权限
[mysql.server]
user=mysql

禁止管理员权限

b. 避免共享账号
insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) values("localhost","test",password("test"),"","","");

添加账号

c. 删除无关账号
DROP USER test;

(2). 口令

  • 检查弱口令;密码修改时间
update user set password=password('123456') where user='test';
flush privileges;

修改用户密码

(3). 授权

a. 查看授权情况
use mysql;
select * from user;
seletc * from db;
seletc * from host;
seletc * from tbales_priv;
seletc * from columns_priv;
b. 查看某用户权限
#创建用户,不指定登录主机
create user 'test'@'%' identified by '123456';
#授予所有权限
grant all privileges on *.* to 'test'@'%' with grant option;
#授予指定数据库权限
grant all privileges on database_name.* to 'test'@'%';
#查看权限
show grants for test@'%'

查看某用户权限

c. revoke回收权限
①语法
help revoke
Name: 'REVOKE'
Description:
Syntax:
REVOKE
priv_type [(column_list)]
    [,priv_type[(column_list)]] ...
ON [object_type]
    {
            *
        |   *.*
        |   db_name.*
        |   db_name.tal_name
        |   tbl_name
        |   db_name.routine_name
    }
FROM user [,user]...
②实例
  revoke insert,update,delete,create,drop on *.* from test@'%'

移除用户权限

(4). 日志审计

a. 可选内容
#正常日志目录
log = /var/log/mariadb/mariadb/

#错误日志
log-error=C:/mysql_logs/mysql_error.log

log_errors = On
error_log = /var/log/php/php_error.log

#查询日志(可选)
general-log=1
general-log-file=c:/mysql_logs/mysql_query.log

#慢查询日志(可选)
slow-query-log=1
slow-query-log-file=C:/mysql_logs/mysql_slow queries.log

#更新日志2
log-update=c:/mysql_logs/mysql_update.log

#二进制日志
log-bin=C:/mysql_logs/mysql bin log
b. 开启日志功能
#编辑配置文件my.ini
vim etc/php.d/my.ini

log_errors = On
error_log = /var/log/php/php_error.log
c. 日志操作
#命令可査看所有的 log
show variables like 'log_%';
#命令可査看具体的 log
show variables like 'log_bin';

(5). 安装最新补丁

(6). 禁止远程访问

  • 在MYSQL服务器的启动参数中添加--skip-networking禁止远程TCP/IP连接

(7). 设置可信IP访问

GRANT ALL PRIVILEGES ON db.* TO 用户名@'IP子网/掩码';

(8). 连接数设置

  • 在配置文件my.cnf或my.ini中配置
[mysqld]
max_connections=1000

2. PhpMyadmin

(1). 网络访问控制

  • 限制访问人员配置PhpMyadmin
#进入PhpMyadmin目录,找到config.ini.php

#添加如下代码
$ip_prefix='192.168.0.1'
if(substr($_SERVER['REMOTE_ADDR'],0,strlen($ip_prefix))!=$ip_prefix) die('Access denied');

(2). 账号与口令

  • 设置复杂的口令

3. MongoDB

  • MongoDB服务默认没有权限验证
  • 配置文件/etc/mongod.conf
  • 连接指令 mongo --host [ip] --port [port]

(1). 排查方向

  1. 查看MongoDB的日志是否完整,并确认执行删除数据库的源IP地址和时间、行为。

  2. 检查MongoDB帐户,查看是否没有添加admin用户的密码

db.system.users.find()
  1. 检查GridFs,查看是否存储任何文件
db.fs.files.find()
  1. 检查日志文件,查看有哪些用户访问了MongoDB
show log global

检查日志

(2). 修改默认端口

vim /etc/mongo.conf

修改默认端口

(3). 隔绝外网

  • 使用安全组防火墙 or 本地操作系统防火墙进行控制

(4). –bind_ip选项

  • 启动mongodb使用--bind_ip 192.168.0.1表示启动ip绑定,数据库实例只监听192.168.0.1的请求

(5). 角色登录认证

  • 创建用户test,密码test1234

  • 在未开启认证的环境下,登录数据库

    mongo 127.0.0.1:27028
    mongo --host [ip] --port [port]
    
  • 切换到admin数据库

use admin
  1. 创建管理员帐号
#1. 创建账号
db.addUser("test","test1234")
or
db.createUser({user:"test",pwd:"test1234",roles:["root"]})

#2.查看连接
db.getCollectionNames()

创建管理员帐号

  1. 验证是否创建成功
db.getUsers()
or
db.system.users.find().toArray()

#验证是否具有该用户
db.auth("test","test1234")

验证是否成功

  1. 结束进程,重启MongoDB服务
service mongod restart

结束进程

  1. 开启认证模式
mongod -f /etc/mongod.conf --auth

(6). 禁用HTTP和REST端口

#1. 修改配置文件
nohttpinterface = false
#2. 启动MongoDB时使用参数
--nohttpinterface

禁用http和rest端口

(7). 开启日志

(8). 使用SSL加密

  • 防范man-in-the-middle攻击

(9). 备份与恢复

a. 本地备份
mongodump -h dbhost -d dbname -o dbdirectory

#-h mongdb所在服务器
#-d 需要备份的数据库实例
#-o 备份数据存放位置(前提是目录存在)
b. 数据恢复
mongorestore -h dbhost -d dbname --directoryper dbdirectory
c. Mongo dump

Mongo dump可选参数

4. Memcached

(1). 定期升级

(2). 配置访问控制

iptables -A INPUT -p tcp -s 192.1686.0.2 --dport 11211 -j ACCEPT

(3).绑定监听

memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid

(4). 权限最小化

(5). 启用认证功能

  • 从1.4.3版本开始,支持SASL认证

(6). 修改默认端口

  • 默认端口11222
memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11222 -c 1024 -P /tmp/memcached.pid

MemCached参数说明

(7). 备份数据

5. Redis

  • 未授权访问导致的弱口令写入SSH公钥

(1). 网络层加固

  • 配置文件redis.conf中指定Redis服务使用的网卡,默认监听127.0.0.1
#去掉下列语句的注释符号
bind 127.0.0.1
bind 192.168.1.100 10.0.0.1

(2). 设置防火墙

iptables -A INPUT -s x.x.x.x -p tcp --dport 6379 -j ACCEPT

(3). 账号与认证

  • 设置密码,打开配置文件redis.conf
#找到以下字段,去掉注释,补充密码
requirepass test1234

(4). 权限最小化

  • 较低权限账号运行Redis服务,并禁用该账号登录权限
useradd -M-s /sbin/nologin [username]

(5). 服务精细化授权

  • redis无权限分离,管理员帐号和普通账号无明显区别,因此隐藏以下重要指令
FLUSHDB,FLUSHALL,KEYS,PEXPIRE,DEL,CONFIG,SHUTDOWN,BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME,DEBUG, EVAL
```mysql
#进入redis后
rename-command CONFIG ""
rename-command flushdb ""
rename-command flushall ""  #隐藏指令

rename-command shutdown shotdown-test   #重命名指令

(6). 安全补丁

6. Oracle

(1). 检查远程登录

#将参数REMOTE LOGIN PASSWORDFILE设置为NONE;
show parameter REMOTE_LOGIN_PASSWORDFILE

#修改配置
alter system set remote_login_passwordfile=none scope=spfile;
shutdown immediate
startup

(2). 用户属性控制

#查询视图dba profiles和dba users来检查profile是否创建,存在default以外的profile即可
Select profile from dba_profiles;
Select profile from dba_users;

#设置
create profile maintenance limit PASSWORD_VERIFY_FUNCTION_F_PASSWORD_VERIFY
PASSWORD_REUSE_MAX 5
PASSWORD_GRACE TIME 60
FAILED_LOGIN_ATTEMPTS 6
PASSWORD_LIFE_TIME 90;

(3). 数据字典访问权限

#检查参数是否设置为False
show parameter 07_DICTIONARY_ACCESSIBILITY

#设置
alter system Set 07 DICTIONARY ACCESSIBILITY=FALSE scope=spfile;
shutdown immediate
startup

(4). 口令与认证

a. 账户口令的生存期
  • 减少时间
#检查参数值
select dba_profiles,profile,resource_name, limit
from dba_profiles, dba_users
where dba_profiles.profile = dba_users.profile
    and dba users.account status=OPE/?
    and resource_name='PASSWORD_GRACE_TIME';

#设置
alter profile default limit PASSWORD_GRACE_TIME 60;
b. 重复口令使用
#检查
select dba_profiles.profile,resource_name, limit
from dba_profiles,dba users
where dba_profiles.profile = dba_users.profile
    and dba_users.account status=OPEN'
    and resource_name= 'PASSWORD_REUSE_MAX;

#设置
alter profile default limit PASSWORD_REUSE_MAX 5;
c. 认证控制
#检查FAILED LOGIN ATTEMPTS是否等于6
select dba_profiles.profile,resource_name, limit
from dba_profiles,dba_users
where dba_profiles.profile = dba_users.profile
    and dba_users.account status= 'OPEN'
    and resource_name= 'FAILED_LOGIN_ATTEMPTS';

#设置
alter profile defauIt limit FAILED_LOGIN_ATTEMPTS 6;
d. 更改默认账户密码
#检查
sqlplus '/as sysdba'
conn system/system
conn system/manager
conn sys/sys
conn sys/cHAnge_on_install
conn scott/scott
conn scott/tiger
conn dbsnmp/dbsnmp
conn rman/rman
conn xdb/xdb
#以上均不能成功登录
e. 密码更改策略
#检查PASSWORD_LIFE_TIME是否小于等于90
select profile,limit from dba_profiles
where resource_name='PASSWORD LIFE TME'
    and profile in (select profile from dba_users where account_status= 'OPEN');
#设置
alter profile default limit PASSWORD_LIFE_TIME 90;
f. 密码复杂度策略

Oracle密码复杂度

(4). 数据库审计策略

#检查
1.使用参数设置,
show parameter audit_trail
#参数audit_trail不为NONE。
#检査dba_audit_trail视图中或$ORACLE_BASE/admin/adump目录下是否有数据。
2.查看审计表,检查是否有用户登录、操作记录
select * froM LOGON_AUDIT.LOGON_AUDIT;

#设置
alter system set audit trail=os scope=spfile;
shutdown immediate
startup

(5). 设置监听密码

#检查
检查$ORACLE_HOME/network/admin/listener.ora文件中是否设置参数PASSWORDS LISTENER.

#设置
$ ps -eflgrep tns
$ lsnrctl
set current_listener listener
change_password
save_config
set password
exit

(6). 使用角色管理

#检查应用用户是否授予dba角色
select * from dba role privs where granted role='DBA';
#设置
create role
grant 角色 to username;
revoke DBA from username;

(7). 连接超时设置

#检查sqlnet.ora文件,查看文件中设置参数SQLNET.EXPIRE_TIME=15
cat $ORACLE HOME/network/admin/sglnet.ora

#设置
$ vi sqlnet.ora
SOLNET.EXPIRE_TIME=10

(8). 安全补丁

#检查
1.oracle补丁是否为最新

#设置
2.升级为最新补丁,需要Oracle Metalink 帐号下载安全补丁

(9). 可信IP地址访问

#检查sqlnet.ora中是否设置
tcp.validnode_checking = yes,
tcp.invited_nodes :

$ cat $ORACLE_HOME/network/admin/sqlnet.ora

#设置
vim sqlnet.ora

tcp.validnode_checking = yes
tcp.invited_nodes =(ip1,ip2...)

(10). 资源控制

#检查空闲超时设置
select profile,limit from dba_profiles where profile='DEFAULT' and resource_name='DLE_TIME';

#设置
IDLE_TIME返回结果应大于0

(11). 重要资源敏感标记

Oracle重要资源设置敏感标记