Username: Password:

SCO UNIX系统网络风险防范
来源:作者: 发布时间:2007-12-05 06:21:48

SCO Unix操作系统因其运行稳定,对硬件配置的需要不高,现在正被广泛应用于银行、电信、保险、证券、铁路等行业,但这些行业一般都不是单机应用,而是使用内部网络进行数据处理,对系统安全性的需要又相当高。SCO Unix支持网络功能,但网络安全要靠系统管理员手工限定。
笔者单位用装有SCO OpenServer5.0.5版本操作系统的IBM Netfinity系列服务器作为应用系统的前置机,后台主机用RS/6000小型机,考虑到应用的实际情况,租用电信的DDN线路来连接各前置机和主机。整个网络除本单位内部各主机能够互通外,还和人行和其他中间业务单位的主机互通。虽然在路由器上进行了一定的安全配置,但网络上主机互通给系统带来了极大的不安全因素。笔者根据多年的系统维护和研发经验,对单位的任何前置机进行了一定的安全限制,最大限度地保障了应用需要和系统安全,以下步骤均在SCO OpenServer5.0.5操作系统上应用通过。
1.为任何前置机建立信任关系
中央机房备有一台和前置机相同配置的服务器,专门用来管理前置机,也用此机对前台进行应用程式的上传更新。通过下面的方法建立信任关系,如管理机的主机名为sqls,地址为130.30.1.200,则在前置机的/etc/hosts文档中加入一行130.30.1.200 sqls,然后在前置机的终极用户根目录下创建文档.rhosts,文档写入sqls后保存。SCO Unix操作系统安装时并没有.rhosts文档,需要建立信任关系时,必须手工建立此文档。建立好信任关系后,管理机就能够直接用rlogin、rcp等远程命令来管理和控制前置机了,任何这些r 开头的命令都无需输入密码。而前置机则不允许直接rlogin 到管理机上,所以信任关系的建立是单向的。我们需要下级信用社的系统管理员自己掌控终极用户和一般用户的密码,并定期更换。建立信任关系后,日常管理和维护就方便了。
2.修改Telnet、Ftp端口参数
我们知道,无论是Windows还是Unix操作系统,都有端口号这个概念,电脑之间的通讯,是通过对应的端口号实现的。一般系统都用缺省的端口号,比如Ftp的端口号为21,Telnet的端口号为23,Http的端口号为80 等,当我们使用Telnet登录到其他电脑上时,系统就使用默认端口号23,这是很不安全的。笔者对辖内的前置机和管理机进行了Telnet和Ftp端口号的更改,具体为编辑/etc/services文档,找到想要修改的Telnet和Ftp行,修改端口号,比如把Telnet的23/tcp改成6364/tcp,但不要用/etc/services文档中已存在的端口号。这样使用Telnet命令登录到该主机时,必须给出端口号,即用Telnet xxx.xxx.xxx.xxx 6364 才能进行登录,否则会被系统拒绝。通过修改端口号能够使不知道相应端口号的远程用户不能登录,进一步提高了系统的安全性。
3.禁止对前置机使用Ftp传输文档
假如系统对用户的Ftp权限不做限制,那么用户不但能够通过Ftp来获得操作系统的重要文档(如/etc/passwd、/etc/hosts等),还能够进一步得到其他重要的数据文档,造成数据的泄露。笔者单位的前置机上因装有多个应用系统,建立的用户也比较多,所以应对大部分用户的Ftp权限进行限制。具体做法是,创建编辑/etc/ftpusers文档,把不允许使用Ftp功能的用户写到该文档中,每个用户占一行,保存后实时生效,这些用户就不能使用Ftp命令进行连接了。
4.禁止外来主机远程登录到前置机
笔者单位以前曾发生过这样的事情,某个信用社的系统管理员利用其他途径获得了另外一个信用社前置机的用户密码,于是他就通过自己的主机远程登录到另外那个信用社的电脑上,进行一些非法操作。虽然没造成严重的后果,但这件事给笔者敲响了警钟,必须严格限制非法登录。笔者首先在/etc/profile文档中case "$0" in -sh | -rsh | -ksh | -rksh)下添加限制非授权主机远程登录代码:
remote_ip=who -mx|awk ‘{print $6}’
PTTY=who -mx|awk ‘{ printf“%.4s\n”, $2; }’
if [ “$PTTY” =“ttyp” ]
then
remote=who -mx
if [ -n “remote_ip” -a “x$remote_ip” != “x” ]
then
case $remote_ip in
130.30.1.100) echo “成功 $remote $LOGNAME” >> /usr/adm/telnet.log;;
130.30.1.201) echo “成功 $remote $LOGNAME” >> /usr/adm/telnet.log;;
sqls) echo “成功 $remote $LOGNAME”>> /usr/adm/telnet.log;;
*)
echo “被杀 $remote” >> /usr/adm/telnet.log
echo “\n\t\t哈哈哈!您被我抓到了!您的地址($remote_ip)”
echo “ ”
exit
esac
fi
fi
以上代码用来记录远程登录到本机的历史,笔者创建的日志文档为/usr/adm/telnet.log,该文档会记录远程用户登录时的用户名、时间、终端号连同IP地址,能够随时查看此文档。然后在任何用户的.profile文档里加入trap’’0 1 2 3 14 15,屏蔽键盘中断,防止允许远程登录的主机用键盘中断进入操作系统的命令行提示符。
5.清除SCO Unix系统中的大漏洞
完成上面的几步后,应该说已比较安全了,但还是存在不安全因素,因为SCO Unix 有一个大BUG??任何普通用户都能够成为终极用户,笔者相信知道这个漏洞的人不会很多,但作为一个金融电脑工作者,有必要向国内任何同行提个醒,及早消除安全隐患。可进行如下操作:
①用普通用户登录到系统,然后进入一个能够写的目录;
②ln /etc/shadow debug.log;
③/etc/sysadm.d/bin/userOsa >>ttt。
则/etc/shadow文档被覆盖,任何人能够用/etc/passwd中存在的任何用户登录而无需密码。若第二步改为ln /etc/passwd debug.log 则/etc/passwd被覆盖,谁也登录不上来了!之所以会出现这样的现象,主要是因为SCO Unix 中/etc/sysadm.d/bin/us-
erOsa 程式在运行时会生成一个名叫debug.log的文档,这个文档用户属于root 组,而且此程式有BUG,不会检查用户权限,因此能够覆盖任何文档,包括passwd和shadow。您在一个可写目录中建立连接将某个文档指向debug.log文档,运行userOsa将出错信息写入debug.log文档时,实际上就覆盖了那个您想破坏的文档!奇怪的是,这个漏洞似乎跟机器有关系,笔者单位有20%的电脑存在此漏洞,而其余的电脑做第二步连接时就报错。要清除此漏洞,可用终极用户登录,进到/etc/sysadm.d/bin下,执行chmod o-x userOsa即可。

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅