mysql开启安全审计功能。

mysql开启安全审计功能。,第1张

mysql服务器自身没有提供审计功能,但是我们可以使用init-connect + binlog的方法进行mysql的操作审计。由于mysql binlog记录了所有对数据库长生实际修改的sql语句,及其执行时间,和connection_id但是却没有记录connection_id对应的详细用户信息。在后期审计进行行为追踪时,根据binlog记录的行为及对应的connection-id 结合 之前连接日志记录 进行分析,得出最后的结论。

1. 设置init-connect

1.1 创建用于存放连接日志的数据库和表

create database accesslog

CREATE TABLE accesslog.accesslog (`id` int(11) primary key auto_increment, `time` timestamp, `localname` varchar(30), `matchname` varchar(30))

1.2 创建用户权限

可用现成的root用户用于信息的读取

grant select on accesslog.* to root

如果存在具有to *.* 权限的用户需要进行限制。

这里还需要注意用户必须对accesslog表具有insert权限

grant select on accesslog.* to user@’%’

1.3 设置init-connect

在[mysqld]下添加以下设置:

init-connect=’insertinto accesslog.accesslog(id, time, localname, matchname)

values(connection_id(),now(),user(),current_user())’

------注意user()和current_user()的区别

log-bin=xxx

这里必须开启binlog

1.4 重启数据库生效

shell>/etc/init.d/mysql restart

2. 记录追踪

2.1 thread_id确认

可以用以下语句定位语句执行人

Tencent:~ # mysqlbinlog --start-datetime='2011-01-26 16:00:00'

--stop-datetime='2011-01-26 17:00:00' /var/lib/mysql/mysql-bin.000010

| grep -B 5 'wsj'

COMMIT/*!*/

# at 767

#110126 16:16:43 server id 1 end_log_pos 872 Query thread_id=19exec_time=0 error_code=0

use test/*!*/

SET TIMESTAMP=1296029803/*!*/

create table wsj(id int unsigned not null)

--

BEGIN

/*!*/

# at 940

#110126 16:16:57 server id 1 end_log_pos 1033 Query thread_id=19exec_time=0 error_code=0

SET TIMESTAMP=1296029817/*!*/

insert into wsj(id) values (1)

--

BEGIN

/*!*/

# at 1128

#110126 16:16:58 server id 1 end_log_pos 1221 Query thread_id=19exec_time=0 error_code=0

SET TIMESTAMP=1296029818/*!*/

insert into wsj(id) values (2)

2.2 用户确认

thread_id 确认以后,找到元凶就只是一条sql语句的问题了。

mysql>select * from accesslog where id=19

+----+---------------------+---------------------+-----------+

| id | time| localname | matchname |

+----+---------------------+---------------------+-----------+

| 19 | 2011-01-26 16:15:54 | test@10.163.164.216 | test@%|

+----+---------------------+---------------------+-----------+

1 row in set (0.00 sec)

数据库安全审计主要用于监视并记录对数据库服务器的各类操作行为,通过对网络数据的分析,实时地、智能地解析对数据库服务器的各种操作,并记入审计数据库中以便日后进行查询、分析、过滤,实现对目标数据库系统的用户操作的监控和审计。它可以监控和审计用户对数据库中的数据库表 、视图、序列、包、存储过程、函数、库、索引、同义词、快照、触发器等的创建、修改和删除等,分析的内容可以精确到SQL操作语句一级。它还可以根据设置的规则,智能的判断出违规操作数据库的行为,并对违规行为进行记录、报警。由于数据库安全审计系统是以网络旁路的方式工作于数据库主机所在的网络,因此它可以在根本不改变数据库系统的任何设置的情况下对数据库的操作实现跟踪记录、定位,实现数据库的在线监控,在不影响数据库系统自身性能的前提下,实现对数据库的在线监控和保护,及时地发现网络上针对数据库的违规操作行为并进行记录、报警和实时阻断,有效地弥补现有应用业务系统在数据库安全使用上的不足,为数据库系统的安全运行提供了有力保障。

一、数据库安全审计主要功能包括:

· 实时监测并智能地分析、还原各种数据库操作。

· 根据规则设定及时阻断违规操作,保护重要的数据库表和视图。

· 实现对数据库系统漏洞、登录帐号、登录工具和数据操作过程的跟踪,发现对数据库系统的异常使用。

· 支持对登录用户、数据库表名、字段名及关键字等内容进行多种条件组合的规则设定,形成灵活的审计策略。

· 提供包括记录、报警、中断和向网管系统报警等多种响应措施。

· 具备强大的查询统计功能,可生成专业化的报表。

二、数据库安全审计主要特点

· 采用旁路技术,不影响被保护数据库的性能。

· 使用简单,不需要对被保护数据库进行任何设置。

· 支持SQL-92标准,适用面广,可以支持Oracle、MS SQL Server、Sybase、Informix等多类数据库。

· 审计精细度高,可审计并还原SQL操作语句。

· 采用分布式监控与集中式管理的结构,易于扩展。

· 完备的"三权分立"管理体系,适应对敏感内容审计的管理要求。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/425927.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-26
下一篇2023-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存