mysql怎么开启审计 mysql 审计

监控/审计有哪些用户连接mysql数据库 init_connect注意点: 1.当拥有SUPER权限的用户连接时,init_connect设定的sql语句不会被执行 2.务必保证init_connect设定的sql语句没有任何错误 , 要不然连接会出错 。3.此参数可以让局部变量像全局变量那在配置文件设置属性: 全局、字符串、可动态修改 一.示例1 SET GLOBAL init_connect='SET AUTOCOMMIT=0'; 还可以在命令行或选项文件中设置该变量 。要想使用选项文件设置变量,应包括下述行: [mysqld] init_connect='SET AUTOCOMMIT=0' 请注意init_connect的内容并不为拥有SUPER权限的用户执行;实际是内容设置错误(包含错误查询,例如语法错误),这样使所有连接失败 。不为SUPER用户执行,使SUPER用户可以打开连接并固定init_connect 。二、示例2 此参数可以用于做登陆审计 。mysql TABLE `wsz` ( `i` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`i`) ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 mysql SET GLOBAL init_connect="SET AUTOCOMMIT=0;insert into test.wsz values ('');"; Query OK, 0 rows affected (0.00 sec) 退出后用普通用户登陆: [seezoo@dbaview.cn ~]$ /home/seezoo/mysql/mysql50134/bin/mysql -S /home/seezoo/mysql/mysql50134/mysql.sock Welcome to the MySQL monitor. Commands end with ; or /g. Your MySQL connection id is 25 Server version: 5.1.34 Source distribution Type 'help;' or '/h' for help. Type '/c' to clear the current input statement. mysql select @@autocommit;--------------| @@autocommit |--------------| 0 |--------------1 row in set (0.00 sec) mysql select * from test.wsz;---| i |---| 1 | | 2 | | 3 | | 4 | | 5 |---5 rows in set (0.00 sec) 用root用户登陆后发现相关值没修改: [seezoo@dbaview.cn ~]$ /home/seezoo/mysql/mysql50134/bin/mysql -uroot -S /home/seezoo/mysql/mysql50134/mysql.sock Welcome to the MySQL monitor. Commands end with ; or /g. Your MySQL connection id is 26 Server version: 5.1.34 Source distribution Type 'help;' or '/h' for help. Type '/c' to clear the current input statement. mysql select * from test.wsz;---| i |---| 1 | | 2 | | 3 | | 4 | | 5 |---5 rows in set (0.00 sec) mysql select @@autocommit;--------------| @@autocommit |--------------| 1 |--------------1 row in set (0.00 sec) [seezoo@dbaview.cn ~]$ /home/seezoo/mysql/mysql50134/bin/mysql -S /home/seezoo/mysql/mysql50134/mysql.sock Welcome to the MySQL monitor. Commands end with ; or /g. Your MySQL connection id is 27 Server version: 5.1.34 Source distribution Type 'help;' or '/h' for help. Type '/c' to clear the current input statement. mysql select @@autocommit;--------------| @@autocommit |--------------| 0 |--------------1 row in set (0.00 sec) mysql select * from test.wsz;---| i |---| 1 | | 2 | | 3 | | 4 | | 5 | | 6 |---6 rows in set (0.00 sec)
MySQL审计工具Audit插件使用一、介绍MySQL AUDIT
MySQL AUDIT Plugin是一个 MySQL安全审计插件,由McAfee提供,设计强调安全性和审计能力 。该插件可用作独立审计解决方案,或配置为数据传送给外部监测工具 。支持版本为MySQL (5.1, 5.5, 5.6, 5.7),MariaDB (5.5, 10.0, 10.1),Platform (32 or 64 bit) 。从Mariadb 10.0版本开始audit插件直接内嵌了,名称为server_audit.so,可以直接加载使用 。
二进制文件地址:
macfee的mysql audit插件虽然日志信息比较大,对性能影响大 , 但是如果想要开启审计,请斟酌 。
二、安装使用MySQL AUDIT
# unzip audit-plugin-mysql-5.6-1.1.5-774-linux-x86_64.zip
MySQL的插件目录为:
mysql show global variables like 'plugin_dir';
--------------- ------------------------
| Variable_name | Value|
--------------- ------------------------
| plugin_dir| /app/mysql/lib/plugin/ |
--------------- ------------------------
1 row in set (0.00 sec)
复制库文件到MySQL库目录下
# cp audit-plugin-mysql-5.6-1.1.2-694/lib/libaudit_plugin.so /app/mysql/lib/plugin/
# chmod a x /app/mysql/lib/plugin/libaudit_plugin.so
加载Audit插件
mysql INSTALL PLUGIN AUDIT SONAME 'libaudit_plugin.so';
查看版本
mysql show global status like '%audit%';
------------------------ -----------
| Variable_name| Value|
------------------------ -----------
| Audit_protocol_version | 1.0|
| Audit_version| 1.1.2-694 |
------------------------ -----------
2 rows in set (0.00 sec)
开启Audit功能
mysql SET GLOBAL audit_json_file=ON;
Query OK, 0 rows affected (0.00 sec)
执行任何语句(默认会记录任何语句),然后去mysql数据目录查看mysql-audit.json文件(默认为该文件) 。
当然,我们还可以通过命令查看audit相关的命令 。
mysql SHOW GLOBAL VARIABLES LIKE '%audit%';
其中我们需要关注的参数有:
1、audit_json_file
是否开启audit功能 。
2、audit_json_log_file
记录文件的路径和名称信息 。
3、audit_record_cmds
audit记录的命令,默认为记录所有命令 。可以设置为任意dml、dcl、ddl的组合 。如:audit_record_cmds=select,insert,delete,update 。还可以在线设置set global audit_record_cmds=NULL 。(表示记录所有命令)
4、 audit_record_objs
audit记录操作的对象 , 默认为记录所有对象 , 可以用SET GLOBAL audit_record_objs=NULL设置为默认 。也可以指定为下面的格式:audit_record_objs=,test.*,mysql.*,information_schema.* 。
5、audit_whitelist_users
用户白名单 。
三、查看审计数据
插入一些数据,查看一下mysql-audit.json文件信息(json格式),如下:
$ cat /app/mysql/data/mysql-audit.json
{"msg-type":"activity","date":"1517989674556","thread-id":"3","query-id":"39","user":"root","priv_user":"root","ip":"","host":"localhost","connect_attrs":{"_os":"Linux","_client_name":"libmysql","_pid":"1331209","_client_version":"5.6.27","_platform":"x86_64","program_name":"mysql"},"pid":"3472328296227680304","os_user":"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","appname":"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","rows":"10","cmd":"select","objects":[{"db":"sbtest","name":"sbtest1","obj_type":"TABLE"}],"query":"select * from sbtest1 limit 10"}
审计记录文件一般存放在mysql的数据目录下 。
怎么启动mysql服务1、首先,我们需要修改mysql的配置文件 , 一般文件存放在/etc下面,文件名为my.cnf 。
2、对于mysql服务的启动,我们通常使用命令service mysqld start,没问题的话就能启动mysql服务了 。
3、如何判断mysql服务有没有启动成功了,一个是通过查看进程的方式 , 我们使用命令ps -ef|grep mysqld,来查看 。
4、当然 , 更为稳妥的方法是使用命令mysql -uuser -p passwd 来进行连接,看看是否能接上 。
5、如何停止mysql的服务呢 。方法也很简单,使用命令:service mysqld stop命令即可 。
6、一般 , 如果mysql服务没有启动成功 , 可以通过查看错误日志的方式,日志默认路径/var/log/mysqld.log,
7、完成效果图 。
Linux系统上记录MYSQL操作的审计日志根据笔者上一篇文章—Linux系统上记录用户操作的审计日志。本文来利用相同的方法记录MYSQL操作的审计日志 。
使用用mysql工具连接MySQL server的所有操作会默认记录到~/.mysql_history文件中mysql怎么开启审计,这个文件会把所有操作记录下来mysql怎么开启审计,包括创建用户和修改用户的明文密码,这在生产系统上是不安全的 。如果不想保存,仅仅删除是不行的(文件不存在会再建立),要直接将其软连接到垃圾箱 。
ln-s/dev/null~/.mysql_history
利用上一篇文章相同的方法记录MYSQL操作的审计日志 , 是因为mysql工具本身就是有一个shell, 每次mysql连接退出后 , 都会把此次操作的信息记录到~/.mysql_history文件中 。那么可以重新定义MYSQL_HISTFILE环境变量来保存mysql日志 。
先看置于/etc/profile.d目录下的环境变量的脚本mysql_history.sh,和loginlog类似 。
在测试时,发现平时使用的普通用户在操作mysql后无法记录,而root用户(平时没有操作过mysql)可以记录成功 。后来在在~/.mysql_history文件找到mysql怎么开启审计了操作记录,估计是这个文件还存在的原因,删除后才记录到新的MYSQL_HISTFILE定义的路径 。
和loginlog一样,需要定期删除过期日志,以下脚本置于/etc/cron.weekly 目录下 。
delete_time=15
find /opt/mysqllog/-mtime$delete_time -name '*.log' -exec rm -r {} \;
但是相比于loginlog,mysqllog有两点暂时没有解决 。
1、定义最大的记录条数history.maxSize不知在哪定义,my.cnf?
2、每一条命令的时间记录添加 。
如何做好MySQL安全策略摘至网页链接
常见Mysql配置文件:linux系统下是my.conf,windows环境下是my.ini;
数据库整体安全需求:机密性、完整性、可用性;
下面以mysql 5.7版本为例 , 介绍mysql常见的安全策略、配置、加固方式等等,有些策略可能只针对Linux操作系统,更多策略可以参考CIS Mysql Benchmark相关文档:
1、操作系统级别安全配置
1.1不要将数据库放在系统分区
Windows系统:直接检查是否将数据库放置在C盘 。
Linux系统:
在终端连接上mysql数据库,执行如下命令:
show variables where variable_name = 'datadir';
然后返回shell命令行:
df -h datadir
其中datadir是上一条命令的返回值 。
上述命令的返回值不应是/、/var、/usr
1.2使用专用的最小权限账号运行mysql数据库进程
Windows系统:直接打开任务管理器,查看运行mysql进程的操作系统账号,不能为administrator账号 。
Linux系统:
Shell命令行运行如下命令:
ps -ef | grep mysql
查看mysql服务的运行账号是否为root或其他高权限账号,如果是的,则需要创建一个非管理员专用账号来运行mysql服务 。
1.3禁止使用mysql命令行历史记录
Linux系统:
执行如下命令:
find / -name ".mysql_history"
查看是否存在mysql的历史命令记录文件,如果存在,则需要进行如下加固:
(1)删除.mysql_history文件;
(2)设置环境变量MYSQL_HISTFILE为/dev/null,并添加到shell的初始化脚本中 , 创建mysql_history到/dev/null的链接:
ln -s /dev/null $HOME/.mysql_history
1.4 确保MYSQL_PWD环境变量未设置敏感信息
Windows系统下进入cmd命令行,使用如下命令:
Set
查看是否设置了环境变量MYSQL_PWD 。
Linux系统下使用如下命令:
grep MYSQL_PWD /proc/*/environ
查看MYSQL_PWD环境变量是否设置了敏感信息 。
确认那个配置文件或脚本设置了MYSQL_PWD环境变量 。
2、安装
2.1使用数据库专用服务器
使用专用的服务器安装mysql服务可以减少mysql服务的攻击面,尽量卸载或删除操作系统上的不必要的应用或服务,减少其他应用的安装可能给mysql的运行带来的安全风险 。
2.2 不要复用数据库账号
运行mysql服务的操作系统账号不要用来运行其他应用或服务,这样可以避免其他应用或服务器被攻击给mysql服务带来影响 。
2.3 历史命令行密码设置为不可见
使用如下命令:
mysql -u admin -p password
连接mysql数据库服务,退出后查看历史命令,确认password是否为明文 。
建议使用如下命令方式登录:
(1)先输入mysql -u admin -p
(2)根据命令行提示输入密码;
而不要在一整条命令中输入密码 。
另外要控制mysql配置文件访问权限 。
3、文件权限控制
3.1 控制数据目录的访问权限
数据目录是mysql数据库存放的位置,在mysql命令行界面下执行如下命令:
show variables where variable_name = 'datadir';
在终端命令行下执行如下命令:
ls -l datadir/.. | egrep "^d[r|w|x]{3}------\s*.\s*mysql\s*mysql\s*\d*.*mysql"
其中datadir是第一条命令的执行结果
如果存在问题,linux环境下在终端执行如下命令进行加固:
chmod 700 datadir
chown mysql:mysql datadir
3.2 控制二进制日志文件的权限
mysql的运行会产生很多日志,例如二进制日志、错误日志、慢查询日志等等,Mysql命令行下执行如下命令:
show variables like 'log_bin_basename';
在终端命令行执行如下命令:
ls log_bin_basename.*
对于发现的每一个文件,执行如下命令:
ls -l log_bin_basename.nnnnn | egrep "^-[r|w]{2}-[r|w]{2}----\s*.*$"
根据输出确认日志文件的权限设置是否存在问题 。
对于每个日志文件,修改其权限和属组如下:
chmod 660 log file
chown mysql:mysql log file
3.3 控制错误日志文件的权限
Mysql命令行下执行如下命令:
show variables like 'log_error';
在终端命令行执行如下命令:
ls log_error.*
对于发现的每一个文件,执行如下命令:
ls -l log_error | egrep "^-[r|w]{2}-[r|w]{2}----\s*.*$"
根据输出确认日志文件的权限设置是否存在问题 。
对于每个日志文件,修改其权限和属组如下:
chmod 660 log file
chown mysql:mysql log file
3.4控制慢查询日志文件的权限
Mysql命令行下执行如下命令:
show variables like 'slow_query_log_file';
在终端命令行执行如下命令:
ls slow_query_log_file.*
对于发现的每一个文件 , 执行如下命令:
ls -l slow_query_log_file | egrep "^-[r|w]{2}-[r|w]{2}----\s*.*$"
根据输出确认日志文件的权限设置是否存在问题 。
对于每个日志文件,修改其权限和属组如下:
chmod 660 log file
chown mysql:mysql log file
3.5控制通用日志文件的权限
Mysql命令行下执行如下命令:
show variables like 'general_log_file';
在终端命令行执行如下命令:
ls general_log_file.*
对于发现的每一个文件,执行如下命令:
ls -l general_log_file | egrep "^-[r|w]{2}-[r|w]{2}----\s*.*$"
根据输出确认日志文件的权限设置是否存在问题 。
对于每个日志文件 , 修改其权限和属组如下:
chmod 660 log file
chown mysql:mysql log file
3.6控制审计日志文件的权限
Mysql命令行下执行如下命令:
show global variables where variable_name ='audit_log_file';
在终端执行如下命令:
ls -l audit_log_file | egrep "^-rw[-x]rw[-x][-r][-w][-x][ \t]*[0-9][ \t]*mysql[
\t]*mysql.*$"
根据输出确认日志文件的权限设置是否存在问题 。
对于每个日志文件,修改其权限和属组如下:
chmod 660 audit_log_file
chown mysql:mysql audit_log_file
4、通用安全
4.1安装最新的补丁
在mysql命令行下查询MySQL的版本:
SHOW VARIABLES WHERE Variable_name LIKE "version";
确认是否由需要安装的补丁包,如果有请安装 。
4.2 删除test数据库
Mysql数据库默认安装好后,存在一个名为test的数据库,如果存在 , 请执行如下命令删除:
Drop database “test”
4.3 确保读取本地文件的参数设置为失效
Mysql命令行下,使用如下命令:
SHOW VARIABLES WHERE Variable_name = 'local_infile';
查看结果是否为OFF 。
如果该命令为ON,则数据库用户可以通过LOAD DATA INFILE 或者 SELECT local_file 读取到数据库所在操作系统本地的文件,在这种情况下 , 需要在mysql配置文件中新增一行:
Local-infile=0;
然后重启数据库服务 。
5、权限配置
5.1控制可以访问所有数据库的账号
Mysql数据库下的user表和db表中存放着可以授予数据库用户的权限,确保只有管理员账号才能访问所有数据库 。可以访问mysql数据库的用户或许可以查看密码哈希值、修改用户权限等等 。
使用如下sql语句:
SELECT user, host FROM mysql.user
WHERE (Select_priv = 'Y') OR (Insert_priv = 'Y') OR (Update_priv = 'Y')
OR (Delete_priv = 'Y')OR (Create_priv = 'Y')OR (Drop_priv = 'Y');
SELECT user, host FROM mysql.db WHERE db = 'mysql'
AND ((Select_priv = 'Y') OR (Insert_priv = 'Y') OR (Update_priv = 'Y')
OR (Delete_priv = 'Y') OR (Create_priv = 'Y') OR (Drop_priv = 'Y'));
确保返回结果只能是数据库管理员账号 。
5.2限制非管理员用户的权限
Mysql.user表中的权限列有:
file_priv:表示是否允许用户读取数据库所在主机的本地文件;
Process:表示是否允许用户查询所有用户的命令执行信息;
Super_priv:表示用户是否有设置全局变量、管理员调试等高级别权限;
Shutdown_priv:表示用户是否可以关闭数据库;
Create_user_priv:表示用户是否可以创建或删除其他用户;
Grant_priv:表示用户是否可以修改其他用户的权限;
应确保只有数据库管理员才有上述权限 , 使用如下sql语句查看拥有各个权限的数据库账号:
select user, host from mysql.user where File_priv = 'Y';
select user, host from mysql.user where Process_priv = 'Y';
select user, host from mysql.user where Process_priv = 'Y';
SELECT user, host FROM mysql.user WHERE Shutdown_priv = 'Y';
SELECT user, host FROM mysql.user WHERE Create_user_priv = 'Y';
SELECT user, host FROM mysql.user WHERE Grant_priv = 'Y';
SELECT user, host FROM mysql.db WHERE Grant_priv = 'Y';
确保查询结果中不存在非管理员用户 。
如果存在非管理员用户,使用如下命令进行权限回收:
REVOKE FILE ON *.* FROM 'user';
REVOKE PROCESS ON *.* FROM 'user';
REVOKE SUPER ON *.* FROM 'user';
REVOKE SHUTDOWN ON *.* FROM 'user';
REVOKE CREATE USER ON *.* FROM 'user';
REVOKE GRANT OPTION ON *.* FROM user;
其中user为上述查询到的非管理员用户 。
5.3合理控制DML/DDL操作授权
DML/DDL语句包括创建或修改数据库结构的权限,例如insert、update、delete、create、drop和alter语句,在任何数据库中都要控制用户的此类权限,确保只授权给有业务需求的非管理员用户 。Mysql命令行下执行如下命令:
SELECT User,Host,Db FROM mysql.db WHERE Select_priv='Y'
OR Insert_priv='Y' OR Update_priv='Y' OR Delete_priv='Y' OR Create_priv='Y'
OR Drop_priv='Y' OR Alter_priv='Y';
【mysql怎么开启审计 mysql 审计】上述查询到的用户只能对特地的数据库才有相关的权限,使用如下命令进行相关权限的回收:
REVOKE SELECT ON host.database FROM user;
REVOKE INSERT ON host.database FROM user;
REVOKE UPDATE ON host.database FROM user;
REVOKE DELETE ON host.database FROM user;
REVOKE CREATE ON host.database FROM user;
REVOKE DROP ON host.database FROM user;
REVOKE ALTER ON host.database FROM user;
其中user为查询到的未授权的用户 , host为相关主机 , database为相关数据库 。
6、审计和日志
6.1开启错误日志审计功能
错误日志包括数据库运行和停止过程中的一系列活动信息,有助于分析数据库运行过程中的一些异常活动,一般情况下需要开启错误日志记录功能,使用如下命令查询:
SHOW variables LIKE 'log_error';
确保返回结果为非空 , 如果为空,需要在mysql数据库配置文件中增加相关配置 。
6.2确保日志存放在非系统区域
日志文件随着数据库的运行会不断增加,如果存放在系统区域,则会影响系统的正常运行,使用如下命令进行查询:
SELECT @@global.log_bin_basename;
确保返回结果不是如下路径:/、/var、/usr
6.3关闭原始日志功能
原始日志选项会决定一些敏感信息是否会被明文写进日志中,例如查询日志、慢查询日志、二进制日志,确保数据库配置文件中存在如下配置项:
Log-raw = OFF
7、认证
7.1 Old_passwords环境变量设置
Old_passwords决定了使用PASSWORD()函数和IDENTIFIED BY 、CREATE USER 、GRANT 等语句是时的hash算法:
0 - authenticate with the mysql_native_password plugin
1 - authenticate with the mysql_old_password plugin
2 - authenticate with the sha256_password plugin
设置为mysql_old_password代表弱hash算法,可以快速通过密码字典进行暴力破解 。使用如下命令查询相关值:
SHOW VARIABLES WHERE Variable_name = 'old_passwords';
确保返回值不为1 。
7.2 secure_auth 选项设置
如果客户端采用Old_passwords发起连接请求,如果服务器端设置了secure_auth,则客户端会拒绝连接请求,可以根据安全需求在配置文件中做相应配置 。
7.3 密码保存
确保密码没有明文保存在全局配置文件中 。
7.4 确保所有用户都要求使用非空密码登录
执行如下语句查询是否有用户不需要密码即可登录:
SELECT User,host
FROM mysql.user
WHERE (plugin IN('mysql_native_password', 'mysql_old_password')
AND (LENGTH(Password) = 0
OR Password IS NULL))
OR (plugin='sha256_password' AND LENGTH(authentication_string) = 0);
7.5不存在空账号
使用如下命令查询是否存在空账号:
SELECT user,host FROM mysql.user WHERE user = '';
8、网络设置
如果mysql数据库服务器与应用是跨信任域部署的,则需要考虑在数据库服务器与应用服务器之间建立ssl通道进行数据传输,不过这种场景一般很少见,在此不详细描述 。
9、数据库备份
oracle 审计功能怎么配置oracle 审计功能怎么配置
审计是对选定的使用者动作的监控和记录,通常用于:
u 审查可疑的活动 。例如:资料被非授权使用者所删除 , 此时安全管理员可决定对该 资料库的所有连线进行审计,以及对资料库的所有表的成功地或不成功地删除进行审计 。
u 监视和收集关于指定资料库活动的资料 。例如:DBA可收集哪些被修改、执行了多少次逻辑的I/O等统计资料 。
ORACLE支援三种审计型别:
u 语句审计,对某种型别的SQL语句审计,不指定结构或物件 。
u 特权审计,对执行相应动作的系统特权的使用审计 。
u 物件审计,对一特殊模式物件上的指定语句的审计 。
ORACLE所允许的审计选择限于下列方面:
u 审计语句的成功执行、不成功执行,或者其两者 。
u 对每一使用者会话审计语句执行一次或者对语句每次执行审计一次 。
u 对全部使用者或指定使用者的活动的审计 。
当资料库的审计是使能的,在语句执行阶段产生审计记录 。审计记录包含有审计的操作、使用者执行的操作、操作的日期和时间等资讯 。审计记录可存在资料字典表(称为审计记录)或作业系统审计记录中 。资料库审计记录是在SYS模式的AUD$表中 。
设定ORACLE审计
下列步骤可以设定ORACLE的审计功能:
1. 修改引数档案(init.ora,如果使用伺服器引数档案使用alter system set = scope=spfile|both,详情参照1.1节中关于引数档案的介绍),设定 AUDIT_TRAIL引数 , 并且重启资料库 。AUDIT_TRAIL的取值如下:
l DB/TRUE:启动审计功能,并且把审计结果存放在资料库的 SYS.AUD$ 表中
l OS:启动审计功能,并把审计结果存放在作业系统的审计资讯中
l DB_EXTENDED:具有DB/TRUE的功能,另外填写AUD$的SQLBIND和SQLTEXT栏位
l NONE/FALSE:关闭审计功能
2.如果设定 AUDIT_TRAIL = OS, 还需要修改引数AUDIT_FILE_DEST 。
如果作业系统支援设定AUDIT_TRAIL=OS,档案会自动存放在AUDIT_FILE
_DEST所指定的目录下,并且档名包含程序的PID 。
比如:
AUDIT_FILE_DEST = $ORACLE_HOME/rdbms/audit
$ ls -l $ORACLE_HOME/rdbms/audit
-rw-rw---- 1 ora92 dba 881 Mar 17 09:57 ora_13264.aud
$ ps -ef|grep 13264
ora92 13264 13235 0 09:56:43 ? 0:00 oracleV92 (DESCRIPTION=(LOCAL=Y)
SQL select spid, program, username from v$process;
SPID PROGRAM USERNAME
------ -------------------------------------------- -------------
...
13264 oracle@frhp11 (TNS V1-V3) ora92
注意:WINDOWS NT不使用AUDIT_FILE_DEST引数,如果使用OS设定,那么审计资讯会存放在WINDOWS NT的事件日志里 。下面的章节会有专门的介绍 。
3. 确认审计相关的表是否已经安装
SQLPLUS connect / AS SYSDBA
SQLPLUS select * from sys.aud$; -- 没有记录返回
SQLPLUS select * from dba_audit_trail; -- 没有记录返回
如果做上述查询的时候发现表不存在,说明审计相关的表还没有安装,需要安装 。
SQLPLUS connect / as sysdba
SQLPLUS @$ORACLE_HOME/rdbms/admin/cataudit.sql
审计表安装在SYSTEM表空间 。所以要确保SYSTEM表空间又足够的空间存放审计资讯 。
4. 关闭并重启资料库
5. 设定所需要的审计资讯
下面是一个例子
SQL connect system/manager
SQL grant audit system to scott;
SQL connect scott/tiger
SQL audit session;
停止审计:
SQL noaudit session;
设定审计的例项:对试图尝试口令的访问的审计
本节讨论的是一个审计的例项,用于记录尝试通过野蛮尝试法破译ORACLE帐号口令的例子:
1. 修改审计相关引数(参照上一节介绍的方法)
2. 重启资料库
3. 设定审计资讯
SQLAUDIT ALL BY ACCESS WHENEVER NOT SUCCESSFUL
4. 查询AUD$
SQL select returncode, action#, userid, userhost, terminal,timestamp
from aud$
RETURNCODE ACTION# USERID USERHOST TERMINAL
---------- ---------- -------- -------------------- --------------------
1017 100 SCOTT WPRATA-BR
1017 100 SCOTT WPRATA-BR
1017 100 SCOTT WPRATA-BR
ORA-1017的含义为错误的使用者名称口令 。通过检视AUD$表可以清楚地看到WPRATA-BR尝试破译SCOTT的口令 。可以通过下面一个储存过程来分析AUD$表,找出可疑的资讯:
create or replace procedure AuditLogin(Since Varchar2,Times PLS_Integer)
is
USER_ID VARCHAR2(20);
cursor c1 is select userid,count(*) from sys.aud$ where returncode='1017' and timestamp#=to_date(Since,'yyyy-mm-dd')
group by userid;
cursor C2 IS Select userhost, terminal,TO_CHAR(timestamp#,'YYYY-MM-DD:HH24:MI:SS')
from sys.aud$ WHERE returncode='1017' and timestamp#=to_date(Since,'yyyy-mm-dd') AND USERID=USER_ID;
ct PLS_INTEGER;
V_USERHOST VARCHAR2(40);
V_TERMINAL VARCHAR(40);
V_DATE VARCHAR2(40);
BEGIN
OPEN C1;
dbms_output.enable(1024000);
LOOP
FETCH C1 INTO USER_ID,CT;
EXIT WHEN C1%NOTFOUND;
IF(CT=TIMES) THEN
DBMS_OUTPUT.PUT_LINE('USER BROKEN ALARM:'||USER_ID);
OPEN C2;
LOOP
FETCH C2 INTO V_USERhOST,V_TERMINAL,V_DATE;
DBMS_OUTPUT.PUT_LINE(CHR(9)||'HOST:'||V_USERHOST||',TERM:'||V_TERMINAL||',TIME:'||V_DATE);
EXIT WHEN C2%NOTFOUND;
END LOOP;
close c2;
END IF;
END LOOP;
close c1;
END;
/
一下是执行结果:
SQLset serveroutput on;
SQL execute auditlogin('2004-01-01',2);
USER BROKEN ALARM:SYS
HOST:,TERM:XUJI,TIME:2004-09-22:11:08:00
HOST:,TERM:XUJI,TIME:2004-09-22:11:08:01
HOST:,TERM:XUJI,TIME:2004-09-22:11:09:29
HOST:,TERM:XUJI,TIME:2004-09-22:11:09:29
PL/SQL 过程已成功完成 。
将审计相关的表移动到其他表空间
由于AUD$表等审计相关的表存放在SYSTEM表空间 , 因此为了不影响系统的效能,保护SYSTEM表空间,最好把AUD$移动到其他的表空间上 。可以使用下面的语句来进行移动:
sqlconnect / as sysdba;
sqlalter table aud$ move tablespace ;
sqlalter index I_aud1 rebuild online tablespace ;
SQL alter table audit$ move tablespace ;
SQL alter index i_audit rebuild online tablespace ;
SQL alter table audit_actions move tablespace ;
SQL alter index i_audit_actions rebuild online tablespace ;
分类: ORACLE
好文要顶 关注我 收藏该文
果然
关注 - 1
粉丝 - 0
加关注
? 上一篇:[转]oracle审计详解
? 下一篇:oracle中使用者删除不了,ORA-01940提示 “无法删除当前已连线使用者”
posted on 2015-07-31 10:37 果然 阅读(23) 评论(0) 编辑 收藏
重新整理评论重新整理页面返回顶部
注册使用者登入后才能发表评论,请 登入 或 注册,访问网站首页 。
【推荐】50万行VC原始码: 大型组态工控、电力模拟CAD与GIS原始码库
【福利】微软Azure给部落格园的你专属双重好礼
【推荐】融云释出 App 社交化白皮书 IM 提升活跃超 8 倍
【推荐】BPM免费下载
最新IT新闻:
· 新年正能量!他说iPad给予了他一次新生命
· 曝联通2016年终奖取消:集团亏损 只发基本工资
· 罗振宇跨年演讲完整版:2017年小心这5只黑天鹅
· 外媒评出2016年最差电子产品排行榜:三星Note7登顶
· 优必选机器人出新品、搭渠道 , 将完成20亿元融资
? 更多新闻...
最新知识库文章:
· 写给未来的程式媛
· 高质量的工程程式码为什么难写
· 循序渐进地程式码重构
· 技术的正宗与野路子
· 陈皓:什么是工程师文化?
? 更多知识库文章...
导航
部落格园
首页
联络
订阅
如何配置linux审计功能部署
java不用做任何改动就可以部署到linux系统,java编译成*.class档案只需要虚拟机器的支援,你只要在linux环境下装一个jdk就OK了,然后配置一下环境变数 。然后java的class档案或者打包好的*.jar档案考到linux目录下就可以用了.
怎么检视windows下的oracle是否开启审计功能
检视aud$表(或者dba_audit_trial检视)中是否有资料,如果有资料说明审计功能开启的
select * from aud$;
select * from dba_audit_trial;
检视系统开启了那些审计功能
select * from dba_priv_audit_opts;系统许可权审计
select * from dba_obj_audit_opts; 物件许可权审计
如何检视oracle是否开启了审计功能
1、语句审计(Statement Auditing) 。
对预先指定的某些SQL语句进行审计 。这里从SQL语句的角度出发,进行指定 。审计只关心执行的语句 。
例如,audit CREATE TABLE;命令 , 就表明对"create table"语句的执行进行记录 。不管这语句是否是针对某个物件的操作
2、许可权审计(Privilege Auditing)
对涉及某些许可权的操作进行审计 。这里强调“涉及许可权”
例如 , audit CREATE TABLE;命令,又可以表明对涉及“CREATE TABLE”许可权的操作进行审计 。
所以说,在这种命令的情况下 , 既产生一个语句审计,又产生了一个许可权审计 。
什么是资料库的审计功能,为什么要提供审计功能
资料库是任何商业和公共安全中最具有战略性的资产 , 通常都储存着重要的商业伙伴和客户资讯,这些资讯需要被保护起来,以防止竞争者和其他非法者获取 。网际网路的急速发展使得企业资料库资讯的价值及可访问性得到了提升,同时,也致使资料库资讯资产面临严峻的挑战,概括起来主要表现在以下三个层面:
1. 管理风险:主要表现为人员的职责、流程有待完善,内部员工的日常操作有待规范,第三方维护人员的操作监控失效等等,离职员工的后门,致使安全事件发生时,无法追溯并定位真实的操作者 。
2. 技术风险:Oracle, SQL Server是一个庞大而复杂的系统,安全漏洞如溢位,注入层出不穷,每一次的CPU(Critical Patch Update)都疲于奔命, 而企业和 *** 处于稳定性考虑,往往对补丁的跟进非常延后,更何况通过应用层的注入攻击使得资料库处于一个无辜受害的状态 。
3. 审计层面:现有的依赖于资料库日志档案的审计方法,存在诸多的弊端,比如:资料库审计功能的开启会影响资料库本身的效能、资料库日志档案本身存在被篡改的风险 , 难于体现审计资讯的有效性和公正性 。此外,对于海量资料的挖掘和迅速定位也是任何审计系统必须面对和解决的一个核心问题之一 。
伴随着资料库资讯价值以及可访问性提升,使得资料库面对来自内部和外部的安全风险大大增加,如违规越权操作、恶意入侵导致机密资讯窃取泄漏,但事后却无法有效追溯和审计 。
sangfor 流量审计功能在哪
恩 你说的是深信服的上网行为管理产品吧,深信服上网行为管理产品的主要功能有:
①识别(就是所有使用者和网站以及应用系统的识别,深信服可以自动识别网站和软体的功能性 比如是娱乐的,办公的还是游戏)
②流控:就是流量控制,既然知道了每个软体都在做什么,就可以对流量的控制,比如对P2P软体的控制,这样就可以保证我们办公的正常执行
③管理:我们可以针对网上的某一软体或网页进行限制或禁止 , 可以具体到某一软体的流量几K每秒 。
④安全:上网行为管理可以对我们的客户电脑进行安全维护就是防止网路病毒和提醒软体漏洞 。再就是防止泄密,比如一些QQ泄密和邮件泄密,防止公司的损失 。
⑤审计:就是对公司职工上网记录的保留 , 包括浏览 , 软体,邮件,聊天记录 , 等等一切网路行为的保留 , 以便以后的查取 。并且有深信服专利对于SSL的审计 。
配置审计包括物理审计 哪些属于功能审计的范畴
B 答案解析: 答案A不正确 , 事实证据是情况属性; 答案B正确,审计发现和建议要以4个属性为依据 。标准是在进行评价或核证时应用的标准、措施或期望值(应该存在什么);情况是内部审计师在检查过程中发现的事实证据(存在什么);原因是预期和实际情况之间存在差异的原因(为什么情况会存在)原因,它是预期和实际情况之间存在差异的原因(为什么情况会存在);效果是由于情况与标准不一致,机构和/或其他部门面临的风险(即差异的影响)效果,它是由于情况与标准不一致,机构和/或其他部门面临的风险(即差异的影响)(实务公告2410-1) 。原因提供了回答“为什么”的答案,并且应是纠正措施的依据 。答案C不正确,风险或暴露是效果属性; 答案D不正确,对审计发现和建议的效果的评价是内部审计师的结论 。
usg自带的审计功能,怎么才能看到被审计的内容
一、审计所的主要工作内容是:1、审计所的工作是审计资料作出证据蒐集及分析,以评估企业财务状况,然后就资料及一般公认准则之间的相关程度作出结论及报告 。2、检讨组织的运作程式及方法以评估其效率及效益;履行审计(遵行审计);评估组织是否遵守由更高权力机构所订的程式、守则或规条 。3、对财务报表审计:评估企业或团体的财务报表是否根据公认会计准则编制,一般由独立会计师进行 。评估企业或机构的资讯系统的安全性,完整性、系统可靠性及一致性 。二、审计所的职能:1、审计所是指由国家授权或接受委托的专职机构和人员成立的,依照国家法规、审计准则和会计理论,运用专门的方法,对被审计单位的财政、财务收支、经营管理活动及其相关资料的真实性、正确性、合规性、合法性、效益性进行审查和监督,评价经济责任,鉴证经济业务,用以维护财经法纪、改善经营管理、提高经济效益的一项独立性的经济监督活动 。2、对经济活动和经济现象的认定:经济活动和经济现象是审计的物件,也就是审计的内容 。经济活动和经济现象的认定代表着被审单位对本单位经济活动的合法合规性或有效性及经济现象(如会计资料)的真实公允性的一种看法 。3、收集和评估证据:证据是审计人员用来确定被审单位经济活动合法合规性或有效性及经济现象真实公允性的各种形式的凭据 。收集充分、有力的审计证据是审计工作的核心 。从一定意义上说 , 审计就是有目的、有计划地收集、鉴定、综合和利用审计证据的过程 。4、保持其客观性:客观性是指不偏不倚,实事求是,这是对审计人员的职业道德要求 。审计人员只有客观地收集和评估证据、作出审计结论、报告审计结果,才能达到审计目标,也才能使审计工作令审计意见的利害关系人信服 。5、为其制定审计的标准:所制定的标准是审计的依据,即判断被审单位的经济活动合法合规与否、经济效益如何、经济现象真实公允与否的尺度 , 如国家颁布的法律、规章和标准,职业团体制定的会计准则(如美国财务会计准则委员会FASB释出的《财务会计准则公告》),企业制定的各种消耗定额、计划、预算等 。6、为审计传递结果:向依赖和利用审计意见的组织和人员传递结果是通过编制审计报告进行的 。编制审计报告是审计工作的最后步骤 。审计报告的格式有些是标准化的,如年度会计报表审计报告;有些则是非标准化的,如职员舞弊专项审计报告 。在有些情况下,审计人员甚至还可以采取口头的非正式形式报告审计结果 。三、举例1、GE公司是美国最大的产业公司之一,也是世界上最大的电气公司 。该公司有12大类产品和服务专案 , 包括家用电器、广播装置、航空机械、科技新产品开发、销售服务等 。2、GE每年都会进行由审计所进行的外部审计,其工作过程是:(1)在审计工作开始之前,审计小组要做的工作是了解和研究情况,(2)在审计中,审计小组对整个审计工作负有全权 , 召开调查会、进行个别谈话、收集情况和资料等活动都由他们自主安排 。在这之后是分析情况、理清头绪,衡量各种问题间的相互影响 。为了实现审计目标,他们可以做他们认为需要做的任何工作,目的只有一个:找出问题的解决方案 。(3)即便找到了解决法,事情也远未结束 。实施方案的具体建议一般由审计小组提出,而且他们总是要把新方案变成一种日常工作 , 具体落实后才肯罢手,以便在他们离开后能够坚持下去 。在这一过程中,审计小组要与被审计部门的领导和业务人员打无数次交道 。(4)审计所根据审计目标和程式,出具审计报告 。
oracle 行级触发器可以用于审计功能吗
sqlplus "/ as sysdba"
show parameter audit
alter system set audit_sys_operations=TRUE scope=spfile;
alter system set audit_trail=DB scope=spfile;
shutdown immediate;
startup force;
Oracle 11g起audit是自动开启的 。我很烦这个审计开启,审计日志半个月10G,烦烦烦 。我一把都关闭Oracle的审计功能,提高Oracle的空闲率 。
查询SQL审计功能是否开启
mysql伺服器自身没有提供审计功能,但是我们可以使用init-connect binlog的方法进行mysql的操作审计 。由于mysqlbinlog记录了所有对资料库长生实际修改的sql语句,及其执行时间,和connection_id但是却没有记录connection_id对应的详细使用者资讯 。在后期审计进行行为追踪时,根据binlog记录的行为及对应的connection-id结合之前连线日志记录进行分析,得出最后的结论 。1.设定init-connect1.1建立用于存放连线日志的资料库和表createdatabaseaesslog;CREATETABLEaesslog.aesslog(`id`int(11)primarykeyauto_increment,`time`timestamp,`localname`varchar(30),`matchname`varchar(30))1.2建立使用者许可权可用现成的root使用者用于资讯的读取grantselectonaesslog.*toroot;如果存在具有to*.*许可权的使用者需要进行限制 。这里还需要注意使用者必须对aesslog表具有insert许可权grantselectonaesslog.*touser@’%’;1.3设定init-connect在[mysqld]下新增以下设定:init-connect=’insertintoaesslog.aesslog(id,time,localname,matchname)values(connection_id(),now(),user(),current_user());’------注意user()和current_user()的区别log-bin=xxx这里必须开启binlog1.4重启资料库生效shell/etc/init.d/mysqlrestart2.记录追踪2.1thread_id确认可以用以下语句定位语句执行人Tencent:~#mysqlbinlog--start-datetime='2011-01-2616:00:00'--s-datetime='2011-01-2617:00:00'/var/lib/mysql/mysql-bin.000010|grep-B5'wsj'COMMIT/*!*/;#at767#11012616:16:43serverid1end_log_pos872Querythread_id=19exec_time=0error_code=0usetest/*!*/;SETTIMESTAMP=1296029803/*!*/;createtablewsj(idintunsignednotnull)--BEGIN/*!*/;#at940#11012616:16:57serverid1end_log_pos1033Querythread_id=19exec_time=0error_code=0SETTIMESTAMP=1296029817/*!*/;insertintowsj(id)values(1)--BEGIN/*!*/;#at1128#11012616:16:58serverid1end_log_pos1221Querythread_id=19exec_time=0error_code=0SETTIMESTAMP=1296029818/*!*/;insertintowsj(id)values(2)2.2使用者确认thread_id确认以后,找到元凶就只是一条sql语句的问题了 。mysqlselect*fromaesslogwhereid=19; ---- --------------------- --------------------- ----------- |id|time|localname|matchname| ---- --------------------- --------------------- ----------- |19|2011-01-2616:15:54|test@10.163.164.216|test@%| ---- --------------------- --------------------- ----------- 1rowinset(0.00sec)
关于mysql怎么开启审计和mysql 审计的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读