当前位置:首页 > 技术与方案 > Linux及应用

SCO Unix中如何限制root远程登录

(2012-09-26 15:48:23)

Unix操作系统由于其功能强大、技术成熟、可靠性好、网络及数据库功能强等特点,在计算机技术特别是操作系统技术的发展中具有重要的不可替代的地位和作用。Unix系统尽管受到了NT的严峻挑战,但它仍是目前唯一能在各个硬件平台上稳定运行的操作系统,并且它在技术成熟程度以及稳定性和可靠性等方面仍然领先于NT。作为Unix操作系统的一个重要分支,SCO Unix因其价格低廉、性能可靠、技术成熟、对各种硬件兼容性良好,因而被广泛地应用在金融、保险、邮电等行业的计算机系统当中。
但当前,计算机系统的安全形势是相当严峻的。在中国,针对金融领域的黑客犯罪案件总涉案金额已高达数亿元,针对其他行业的黑客犯罪案件也时有发生。对此我们应严加关注。我们知道,一个网络系统的安全程度,在很大程度上取决于管理者的素质,以及管理者所采取安全措施的力度。SCO Unix作为一个技术成熟的商用网络操作系统,具有良好的稳定性和安全性,但是,如果用户忽视对Unix操作系统的合理配置,就会给入侵者以可乘之机。无论是有意的攻击,还是无意的误操作,都将会给系统带来不可估量的损失。攻击者可以窃听网络上的信息,窃取用户的口令、数据库的信息;还可以篡改数据库内容,伪造用户身份,否认自己的签名。更有甚者,攻击者可以删除数据库内容,摧毁网络节点,释放计算机病毒等等。因而保证系统的安全,防止任何非法的访问就显得非常重要。
我们知道,在SCO Unix系统中,计算机系统的安全是建立在身份验证机制之上的,而其中最重要的一个用户就是root用户了。一旦被某些别有用心的人获取了root用户的密码并进行非法登录,并对数据、文件进行修改甚至删除的话,那造成的损失将是不可估量的。因此,如果我们能事先做好防范工作,制止任何人进行非法的root用户远程登录,就可以使系统的安全得到可靠的保证。本人在工作中总结了以下几种方法,现一一列出供大家参考。
第一种方法:
干脆关闭掉系统的telnet远程登录功能,我们只要把/etc/inetd.conf文件中telnet那行开头加“#”注释掉,之后重启机器就可以了。具体如下所示:
#telnet  stream  tcp     nowait  NOLUID  /etc/telnetd    telnetd
但是这种方法太过极端,此时任何用户都无法登录,故一般不会使用。
第二种方法:
在/etc/default/login 文件中,增加一行命令:
CONSOLE=/dev/tty01
经过这样设置后,用户就只能在主控制台的第一个窗口上进行root用户登录,而任何其他控制台和所有远程用户均无法用root登录,这种方法的安全性可以说是最高的。但这样会给系统管理员的日常维护工作带来诸多的不便,除非管理员只在机房工作,从不需要远程登陆系统,否则不建议使用这种方法。下面的方法则比较灵活,可以按照我们的意愿来控制允许哪些机器进行root用户的远程登录。
第三种方法:
我们首先要确定允许进行root用户远程登录的机器都有哪些,然后在/etc/hosts 文件中写入相应机器的IP 地址,并定义一个与之相对应的机器名。例如,我们允许10.1.5.70与10.1.5.108两台机器进行root用户的远程登录,那么在/etc/hosts 文件中我们就要加入以下两行:
10.1.5.70 client1
10.1.5.108 client2
注:client1与client2只是我们随意起的两个机器名,起任意名字都可以,只要不与其他机器名重复即可,这两个名字在下面的shell程序中将要用到。
完成以上定义后,我们就可以在root用户的.profile文件中加入以下的一段shell程
序(其中加粗倾斜字体的部分是我们写入的程序,其余部分是原本的程序)
# @(#) root.profile 68.1 98/01/20
#
#Copyright (C) 1989-1998 The Santa Cruz Operation, Inc.
#All Rights Reserved.
#The information in this file is provided for the exclusive use of
#the licensees of The Santa Cruz Operation, Inc.  Such users have the
#right to use, modify, and incorporate this code into other products
#for purposes authorized by the license agreement provided they include
#this notice and the associated copyright notice with any such product.
#The information in this file is provided "AS IS" without warranty.
#
TTY=`tty | cut -b 9-12` 
WH=`finger | cut -b 32-79 | grep "$TTY " | cut -b 29-39` 
TTYP=` tty | cut -b 6-9` 
if  test  "$TTYP" = "ttyp"
then 
WH=$WH 
else 
   WH="local" 
fi 
trap ' ' 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16
if  test  "$WH" = "local" -o "$WH" = "client1" -o "$WH" = "client2"
then 
echo "Welcome to SDB system!" 
else 
exit 
fi 
SHELL=/bin/sh
HOME=/
PATH=/bin:/etc:/usr/bin:/tcb/bin
# set terminal type
eval `tset -m scoansi:${TERM:-scoansi} -m :?${TERM:-scoansi} -e -r -s -Q`
export TERM PATH SHELL HOME
[ -x /bin/mesg ] && mesg n              # if mesg is installed...
 需要特别注意的是,在if语句中每个“=”的两边都有空格,千万不要写错,否则程序执行时会出错!
在这段程序中,前半部分是把变量WH赋值为登录用户的主机IP地址,如果在 /etc/hosts 文件中,已经定义了登录机器的IP 地址和机器名之间的对应关系,则 WH的值为用户登录的主机名。
中间部分的trap ' ' 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16命令保证程序不被任何中断信号中断掉,防止登录者按 Ctrl+Break 键强行中断这段shell程序,以便跳过这些控制,强行非法登录。
在这段程序的后半部分,则根据变量WH的值判断是否允许此机器进行root用户远程登录,从而实现限制root用户远程登录的目的。
第三种方法的补充部分:
经过以上处理后,是否就一定可以控制非授权的机器进行root用户远程登录了哪?很遗憾,我们只要兜一个小圈子就可以避过上面这段程序的控制。我们可以首先用任意一个普通用户进行登录,再使用su命令将自己的身份变成root用户。这样一来,我们就完全避开了以上程序的限制,实现了root用户的远程非授权登录。为了防止这种情况,我们就必须限制一般用户使用su命令。我们可以使用以下几条命令:
cd  /bin
chown  root  su
chmod  700  su
这样一来,除root用户外,其他任何用户都将无权使用su命令。
那么系统现在是否就绝对安全了哪?我不得不告诉你,现在还是有办法攻破你的重重防护。我先找一台未被修改过的正常机器,之后使用ftp命令将自己的su命令文件传送到你的机器上,代替被你修改过的su命令文件,之后我就有权使用su命令了。
对于这种情况,我们有两种处理办法:
1、 关闭掉系统的ftp功能。我们只要把/etc/inetd.conf文件中ftp那行开头加“#”注释掉,之后重启机器就可以了。具体如下所示:
#ftp     stream  tcp     nowait  root    /etc/ftpd       ftpd
2、 我们可以在路由器上设立防火墙,限制用户使用ftp协议,但这已经超出了SCO Unix的范围,故在此不再赘述。
以上方法都是在SCO Unix 5.05上使用并验证过的,效果还是非常好的,故现在将这些经验写出来供各位参考。
其实很多网络安全问题发生的原因不在于入侵者攻击手段的高明,而是由于系统管理员的粗心大意造成的,而合格的系统管理员能跟踪自己操作系统暴露出来的问题。工作中的任何不小心都可能给信息安全带来危险。说到底,注意保护root用户的口令不被其他人窃取才是最关键、最安全的。我们应该养成良好的习惯,定时修改并使用难以破解的root口令,保护系统免遭他人恶意攻击。以上方法则在他人获得root口令后,仍然设下了足够的防护措施对系统进行保护,这会使你的系统更加安全。

了解KERBEROS
协议
KERBEROS协议是80年代由MIT开发的一种协议。其命名是根据希腊神话中守卫冥王大门的长有三头的看门狗做的。定名是贴切的,因为KERBEROS是一个三路处理方法,根据称为密匙分配中心(KDC)的第三方服务来验证计算机相互的身份,并建立密匙以保证计算机间安全连接。KERBEROS协议基本上是可行的,因为每台计算机分享KDC一个秘密,KDC有两个部件:一个KEBEROS
认证服务器和一个授票服务器。如果KDC不知请求的目标服务器,则求助于另一个KDC完成认证交易。KERBEROS
是一种网络认证协议,允许一台计算机通过交换加密消息在整个非安全网络上与另一台计算机互相证明身份。一旦身份得到验证,KERBEROS协议给这两台计算机提供密匙,以进行安全通讯对话。KERBEROS 协议认证试图等录上网用户的身份,并通过使用密匙密码为用户间的通信加密。

1作者: 深圳发展用户电脑部 江勇

 

更多
关闭窗口 打印 
网站首页    -    联系我们    -   收藏本站    -    网站地图                                                               客户服务热线:0571-85023000
本网站所有网页信息已申请知识产权和著作权保护,版权归四海光纤公司所有,未经授权禁止任何人复制或镜像,违者必究。
公司主营:杭州光纤光缆视频会议系统,是专业的通信网络工程、视频会议系统建设专家

中华人民共和国备案号:浙ICP备10018243号