论Unix环境下程序和业务数据安全性探析
一、业务操作的安全对策
采用控制Unix系统提示符的进入,设立一个封闭的应用系统环境的方法。在正式的生产环境中,各种应用系统的直接用户,如业务终端用户和业务管理用户对计算机知识一般不是很了解,他们的工作职责是在程序的控制下,用合法的系统用户和口令字注册并受限于程序画面,执行规定的业务操作,而不能让其接触到Shell提示符,从而对生产环境中的程序和业务数据形成第一级保护屏障。具体做法是:编制Shell语言程序.safe文件,并在系统注册用户的.profile文件最后加入一行exec .safe。
.safe的源程序范例清单如下:
cond=true
while [ $cond ]
do
clear
echo “”
echo “业务处理系统菜单”
echo “”
echo “ ( $HOST )”
echo “”
echo “ 1)…… ”
echo “ 2)…… ”
echo “ q)…… ”
echo “”
echo “请选择:/c ”
read choice
case $choice in
1) echo “请输入口令:”
stty -echo
read passwd
stty echo
if test $passwd = one
then
…
fi
;;
2) echo “请输入口令:”
stty -echo
read passwd
stty echo
if test $passwd = two
then
…
fi
;;
q) exit
;;
esac
done
.safe文件放在系统用户的注册目录下,.profile和.safe文件权限建议设置为500,并在系统管理员的监控之下。该Shell程序可封锁进入提示符的任何企图,把用户与文件系统、数据库隔离开来;另外,在实际应用中为减少数据库用户线索数等应用开销,同一应用系统常被分为不同模块供不同权限的操作员使用。该Shell程序可以实现对一个系统注册用户提供多个操作分支,且每个操作分支都能设置自己的安全口令,同时还可将相关的应用列在同一个Shell菜单中,提供一个系统注册名供用户选择使用,以减少增加注册用户的系统开销。
二、程序维护的风险防范
采用归档在提示符下操作的方法,形成有力的监督机制。因为工作需要,一般在生产环境中单独为程序维护人员建立一个系统帐户,由于工作性质特殊,程序维护人员仍难免要直接到提示符下操作,如何如实记录程序维护人员在提示符下的操作轨迹,以供事后稽核和备查,是程序和业务数据安全性方面第二层需要考虑的问题。
在Unix系统中,每个注册用户都有一个记录其Shell轨迹的.sh_history文件,但却不能区分是何时从局域网上哪台机器用何身份发出的Shell命令,因而缺乏针对性起不到监督作用。在局域网中,程序维护人员一般每人配有一台PC机,每台PC机的IP地址确定了用机人的身份。对某一台业务主机来讲,可以生成一个文件.ipcode,该文件包含了局域网中每个IP地址与该业务主机每个系统注册用户的组合和局域网中每台其它主机与该业务主机每个系统注册用户的组合。通过环境变量Histfile对.ipcode文件中每个组合设置各自相应的Shell轨迹文件,为每个具体的用机者建立一份详详细细的Shell档案,使在Shell提示符下发生的每笔操作行为有证可查。具体做法是,在每个系统注册用户的.profile文件中加入如下Shell语句段:
NETTERM=‘ttycut -c 6-’
NETIP=‘fingergrep $NETTERM “ ”cut -c 60-’
NETTTY=‘cat /var/adm/shhist/.ipcode grep $LOGNAME“”$NETIPcut -f1 -d “” ’
HISTFILE=/var/adm/shhist/.shhist.$NETTTY
export HISTFILE
ksh -o vi
相应地,在类似上述.safe的文件中增加一个菜单选项,提供程序维护人员进入系统提示符的口令:
echo “请输入口令:”
stty -echo
read passwd
stty echo
if test $passwd = shell
then
sh
fi
;;
.ipcode文件每行用管道线“”作域间分隔符,格式为:
序号注册名IP地址(或主机名)
初次启动该机制时,一次性地在/var/adm/shhist目录下建立.ipcode文件以及与其相对应的.shhist.1、.shhist.2等空Shell归档文件(/var/adm/shhist只是本文推荐目录)。
在每天主机开启时用Unix系统命令at运行/var/adm/shhist/.timer文件,给所有的Shell轨迹归档文件每隔一段时间加上时间标签。本文中该程序设置为每晚11时前不间断运行,.timer程序清单如下:
time= “‘datecut -c 12-13’”
cond = true
if test $time -le 23
then
while [ $cond ]
do
for i in ‘ls /var/adm/shhist/.shhist’
do
echo ‘date’>>$i
done
sleep 60
done
fi
三、进库处理的稽核审计
审计是要跟踪重要的数据库活动事件,防范进库操作风险。在日常实际应用中,由于应用系统的不尽完善,特别是对一些特殊的业务处理无法一一编制相应的程序而仍不得不进库操作。把原始的业务生产库表数据直接暴露给程序维护人员,其数据的风险是极其巨大的,对数据有意的破坏或无意的维护处理不当,都
Tags:
作者:佚名评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论