论Unix环境下程序和业务数据安全性探析
建立缺省和专用的audit mask,立足于对缺省的default_mask应尽可能多地设置审计事件,对缺乏维护经验的用户也应多设置一些审计事件,而且主要是对一些执行成功的事件进行审计跟踪。使用操作系统的ps命令,通过终端号tty值获得进程号pid和IP地址,以进程号pid值为关联,将审计事件与相应的IP地址挂起钩来,进行具体的定位,有关audit的设定和操作命令如下:
onaudit -l 1 (将审计机制置开状态)
onaudit -p /usr/informix/adt/log (创建audit审计文件存放目录)
onaudit -a -u _dml -e +DLRW,INRW,RDRW(创建审计跟踪DLRW,INRW,RDRW事件的用户模板_dml)
onaudit -a -u whyw -r _dml(将用户whyw的审计模式定义为模板_dml的)
onaudit -o (显示audit mask表sysmaster@sysaudit中的记录)
onaudit -l -u whyw (查看whyw用户的审计模式)
首先,应在每天主机开启时用Unix系统at命令执行下述的/usr/informix/adt/.trace文件,生成/usr/informix/adt/.stand文件,/usr/informix/adt/.stand文件每行格式为用户名进程号IP地址时间:
cond = true
while [ $cond ]
do
time= “‘datecut -c 12-13’”
if test $time -le 23
then
for i in ‘ps -efgrep dbaccessgrep -v “grep dbaccess”cut -c 34-40’
do
user=‘ps -efgrep dbaccessgrep -v “grep dbaccess”grep $icut -c -8’
ppid=‘ps -efgrep dbaccessgrep -v “grep dbaccess”grep $icut -c 10-14’
pid=‘echo $ppid’
ip=‘fingergrep $icut -c 60-’
date_time= “‘date’”
echo $user“”$pid“”$ip“”$date_time >> /usr/informix/adt/.temp
done
for i in ‘cat /usr/informix/adt/.temp’
do
no_time=‘echo $i cut -f1-3 -d “”’
for j in ‘grep $no_time /usr/informix/adt/.stand’
do
grep -v $j /usr/informix/adt/.temp > /usr/informix/adt/.mide
cp /usr/informix/adt/.mide /usr/informix/adt/.temp
done
done
cat /usr/informix/adt/.temp >> /usr/informix/adt/.stand
cat /dev/null > /usr/informix/adt/.temp
sleep 10
else
break
fi
done
其次,应根据具体情况,选择一些重要的、有针对性的事件进行审计跟踪,以下项目仅供参考:
ADCK(Add Chunk)、ALIX(Alter Index)、ALTB(Alter Table)、CRAM(Create Audit Mask)、CRDB(Create Database)、CRDS(Create Dbspace)、CRIX(Create Index)、CRRL(Create Role)、CRSP(Create Stored Procedure)、CRTB(Create Table)、CRTR(Create Trigger)、DLRW(Delete Row)、DRAM(Delete Audit Mask)、DRBS(Drop Blobspace)、DRCK(Drop Chunk)、DRDB(Drop Database)、DRDS(Drop Dbspace)、DRIX(Drop Index)、DRRL(Drop Role)、DRSP(Drop Stored Procedure)、DRTB(Drop Table)、DRTR(Drop Trigger)、DRVW(Drop View)、EXSP(Execute Stored Procedure)、GRDB(Grant Database Access)、GRTB(Grant Table Access)、INRW(Insert Row)、LGDB(Change Database Log Mode)、LKTB(Lock Table)、ONAU(Onaudit)、ONIN(Oninit)、ONMN(Onmonitor)、ONMO(Onmode)、ONPA(Onparamas)、ONSH(Onshowaudit)、ONSP(Onspaces)、ONST(Onstat)、ONTP(Ontape)、RNDB(Rename Database)、RNTC(Rename Table/Column)、SOSP(System Command Stored ProCedure)、STDP(Set Database Password)、STLM(Set Lock Mode)、USTB(Update Statistics Table)、USSP(Update Statistics Stored Procedure)。
成功执行的审计事件名相应地贯以字母S即可,如SADCK、SALIX等。
最后,为方便对审计记录进行保存、查询和分析,可专门建立一个名为auditlog的表存储审计记录,并定期地把Informix生成的审计文件的内容装载到该表中,该表具有与审计文件格式相对应的结构,具体如下:
create table auditlog (
adttag char(4),
date_time datetime year to fraction(3),
hostname char(18),
pid int,
server char(18),
username char(8),
errno int,
event char(4),
dbname char(18),
tabid int,
objname char(18),
extra_1 int,
partno int,
row_id int,
login char(8),
flags int,
extra_2 varchar(160,1))
同时,创建一个用户表user,用来存储用户名、进程号、IP地址和时间信息,并通过进程号pid与auditlog表相关联,user表结构如下:
create table user (
username char(8),
pid int,
ip char(15),
date_time datetime year to fraction(3))
假定auditlog表和user表在数据库zxdb中,可以考虑在每天日结时,将当天的审计信息和用户信息追加到auditlog表和user表中。对user表直接按上述生成的/usr/informix/adt/.stand文件格式内容进行load;对auditlog表则需先用Informix的onshowaudit命令进行格式整理,再用生成的audit.log文件进行load,整个处理可用Unix系统的at命令触发下面的/usr/informix/adt/.daily文件自动地定时完成(假设只对whyw用户设置了审计跟踪机制,多个用户审计跟踪情形可类似处理):
onaudit -l 1
cat /dev/null > /usr/informix/adt/audit.log
for i in ‘ls /usr/informix/adt/log’
do
onshowaudit -l -u whyw -f /usr/informix/adt/log/$igrep ONLN >> /usr/informix/adt/audit.log
rm /usr/informix/adt/log/$i
done
dbaccess zxdb << !
load from /usr/informix/adt/audit.log insert into auditlog;
load from /usr/informix/adt/.stand insert into user;
!
cat /dev/null > /usr/informix/adt/.stand
在Unix系统的/etc/rc2.d目录下创建一个文件S99log,每天主机开启时可定时触发运行本文涉及到的.timer、.trace和.daily文件。S99log文件内容如下:
at -m -f /var/adm/shhist/.timer 0630am tomorrow
at -m -f /usr/informix/adt/.trace 0630am tomorrow
at -m -f /usr/informix/adt/.daily 0600am tomorrow
四、结束语
以上针对程序和生产数据的安全性,提供了三种稽核防范措施,初步形成了程序和数据的一种安全机制,从客观上做到操作责任具有可追溯性,切实地防范风险。但技术措施仅仅是一种手段,更重要的是要不断加强业务操作人员和程序维护人员的安全意识教育,并建立严格的内控制度。诸如坚持开发环境和生产环境严格分开;控制主机间用户对等访问和数据库服务器间的连接访问;加强程序版本测试减少程序潜在安全漏洞等措施,从不同的角度共同培育安全生产的计算机应用环境。
上述程序及命令均在Fujitsu GP7000 Model 400 小型机的Solaris 2.6 和Informix Online 7.30.UC2系统平台上实现。
Tags:
作者:佚名评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论