SCO UNIX系統(tǒng)網(wǎng)絡(luò)風(fēng)險防范
SCO Unix操作系統(tǒng)因其運行穩(wěn)定,對硬件配置的要求不高,目前正被廣泛應(yīng)用于銀行、電信、保險、證券、鐵路等行業(yè),但這些行業(yè)一般都不是單機應(yīng)用,而是使用內(nèi)部網(wǎng)絡(luò)進行數(shù)據(jù)處理,對系統(tǒng)安全性的要求又相當(dāng)高。SCO Unix支持網(wǎng)絡(luò)功能,但網(wǎng)絡(luò)安全要靠系統(tǒng)管理員手工限定。 筆者單位用裝有SCO OpenServer5.0.5版本操作系統(tǒng)的IBM Netfinity系列服務(wù)器作為應(yīng)用系統(tǒng)的前置機,后臺主機用RS/6000小型機,考慮到應(yīng)用的實際情況,租用電信的DDN線路來連接各前置機和主機。整個網(wǎng)絡(luò)除本單位內(nèi)部各主機可以互通外,還與人行和其他中間業(yè)務(wù)單位的主機互通。雖然在路由器上進行了一定的安全設(shè)置,但網(wǎng)絡(luò)上主機互通給系統(tǒng)帶來了極大的不安全因素。筆者根據(jù)多年的系統(tǒng)維護和開發(fā)經(jīng)驗,對單位的所有前置機進行了一定的安全限制,最大限度地保障了應(yīng)用需要和系統(tǒng)安全,以下步驟均在SCO OpenServer5.0.5操作系統(tǒng)上應(yīng)用通過。 1.為所有前置機建立信任關(guān)系 中心機房備有一臺和前置機相同配置的服務(wù)器,專門用來管理前置機,也用此機對前臺進行應(yīng)用程序的上傳更新。通過下面的方法建立信任關(guān)系,如管理機的主機名為sqls,地址為130.30.1.200,則在前置機的/etc/hosts文件中加入一行130.30.1.200 sqls,然后在前置機的超級用戶根目錄下創(chuàng)建文件.rhosts,文件寫入sqls后保存。SCO Unix操作系統(tǒng)安裝時并沒有.rhosts文件,需要建立信任關(guān)系時,必須手工建立此文件。建立好信任關(guān)系后,管理機就可以直接用rlogin、rcp等遠程命令來管理和控制前置機了,所有這些r 開頭的命令都不需要輸入密碼。而前置機則不允許直接rlogin 到管理機上,所以信任關(guān)系的建立是單向的。我們要求下級信用社的系統(tǒng)管理員自己掌握超級用戶和一般用戶的密碼,并定期更換。建立信任關(guān)系后,日常管理和維護就方便了。 2.修改Telnet、Ftp端口參數(shù) 我們知道,無論是Windows還是Unix操作系統(tǒng),都有端口號這個概念,計算機之間的通訊,是通過對應(yīng)的端口號實現(xiàn)的。一般系統(tǒng)都用缺省的端口號,比如Ftp的端口號為21,Telnet的端口號為23,Http的端口號為80 等,當(dāng)我們使用Telnet登錄到其它計算機上時,系統(tǒng)就使用默認端口號23,這是很不安全的。筆者對轄內(nèi)的前置機和管理機進行了Telnet和Ftp端口號的更改,具體為編輯/etc/services文件,找到想要修改的Telnet和Ftp行,修改端口號,比如把Telnet的23/tcp改成6364/tcp,但不要用/etc/services文件中已存在的端口號。這樣使用Telnet命令登錄到該主機時,必須給出端口號,即用Telnet xxx.xxx.xxx.xxx 6364 才能進行登錄,否則會被系統(tǒng)拒絕。通過修改端口號可以使不知道相應(yīng)端口號的遠程用戶不能登錄,進一步提高了系統(tǒng)的安全性。 3.禁止對前置機使用Ftp傳輸文件 如果系統(tǒng)對用戶的Ftp權(quán)限不做限制,那么用戶不僅可以通過Ftp來獲得操作系統(tǒng)的重要文件(如/etc/passwd、/etc/hosts等),還可以進一步得到其他重要的數(shù)據(jù)文件,造成數(shù)據(jù)的泄露。筆者單位的前置機上因裝有多個應(yīng)用系統(tǒng),建立的用戶也比較多,所以應(yīng)對大部分用戶的Ftp權(quán)限進行限制。具體做法是,創(chuàng)建編輯/etc/ftpusers文件,把不允許使用Ftp功能的用戶寫到該文件中,每個用戶占一行,保存后即時生效,這些用戶就不能使用Ftp命令進行連接了。 4.禁止外來主機遠程登錄到前置機 筆者單位以前曾經(jīng)發(fā)生過這樣的事情,某個信用社的系統(tǒng)管理員利用其他途徑獲得了另外一個信用社前置機的用戶密碼,于是他就通過自己的主機遠程登錄到另外那個信用社的計算機上,進行一些非法操作。雖然沒造成嚴(yán)重的后果,但這件事給筆者敲響了警鐘,必須嚴(yán)格限制非法登錄。筆者首先在/etc/profile文件中case '$0' in -sh | -rsh | -ksh | -rksh)下添加限制非授權(quán)主機遠程登錄代碼: remote_ip=who -mx|awk ‘{print $6}' PTTY=who -mx|awk ‘{ printf“%.4sn”, $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.log130.30.1.201) echo “成功 $remote $LOGNAME” >> /usr/adm/telnet.logsqls) echo “成功 $remote $LOGNAME”>> /usr/adm/telnet.log*) echo “被殺 $remote” >> /usr/adm/telnet.log echo “ntt哈哈哈!你被我抓到了!你的地址($remote_ip)” echo “ ” exit esac fi fi 以上代碼用來記錄遠程登錄到本機的歷史,筆者創(chuàng)建的日志文件為/usr/adm/telnet.log,該文件會記錄遠程用戶登錄時的用戶名、時間、終端號以及IP地址,可以隨時查看此文件。然后在所有用戶的.profile文件里加入trap''0 1 2 3 14 15,屏蔽鍵盤中斷,防止允許遠程登錄的主機用鍵盤中斷進入操作系統(tǒng)的命令行提示符。 5.清除SCO Unix系統(tǒng)中的大漏洞 完成上面的幾步后,應(yīng)該說已經(jīng)比較安全了,但還是存在不安全因素,因為SCO Unix 有一個大BUG——任何普通用戶都可以成為超級用戶,筆者相信知道這個漏洞的人不會很多,但作為一個金融計算機工作者,有必要向國內(nèi)所有同行提個醒,及早消除安全隱患。可進行如下操作: ①用普通用戶登錄到系統(tǒng),然后進入一個可以寫的目錄; ②ln /etc/shadow debug.log; ③/etc/sysadm.d/bin/userOsa >>ttt。 則/etc/shadow文件被覆蓋,任何人可以用/etc/passwd中存在的任何用戶登錄而無需密碼。若第二步改為ln /etc/passwd debug.log 則/etc/passwd被覆蓋,誰也登錄不上來了!之所以會出現(xiàn)這樣的現(xiàn)象,主要是因為SCO Unix 中/etc/sysadm.d/bin/us- erOsa 程序在運行時會生成一個名叫debug.log的文件,這個文件用戶屬于root 組,而且此程序有BUG,不會檢查用戶權(quán)限,因此可以覆蓋任何文件,包括passwd和shadow。你在一個可寫目錄中建立連接將某個文件指向debug.log文件,運行userOsa將出錯信息寫入debug.log文件時,實際上就覆蓋了那個你想破壞的文件!奇怪的是,這個漏洞好像跟機器有關(guān)系,筆者單位有20%的計算機存在此漏洞,而其余的計算機做第二步連接時就報錯。要清除此漏洞,可用超級用戶登錄,進到/etc/sysadm.d/bin下,執(zhí)行chmod o-x userOsa即可。
