UNIX系统安全基础 |
| 来源:goodwell@263.net (2001-05-01 16:06:14) |
|
这篇文章主要针对一些对网络安全感兴趣、同时是针对那些还不怎么熟悉unix 朋友而写的一篇基础文章。我们是一个安全站点!文中将不涉及任何带有恶意攻击误导的言词。
作为安全文章的开篇我选用了UNIX系统的用户帐号和口令系统来循序渐进的把大家带入UNIX的世界,文中我可能省去了一些简单命令的使用说明,如您有任何疑问请致信goodwell@263.net或到我们的BBS、IRC寻找isbase的工作人员的帮助。
UNIX系统的用户管理
每一个使用UNIX计算机系统的人都有一个帐号,他包括两个部分!习惯上我们把他称为用户名和密码,用户名是一个标识,它告诉计算机你是谁。而口令就是一个确认证据。你用密码向计算机证明你就是你向操作系统声明的那位,就用户名和密码本身没有等级的区分,他们只是在形式上区分了每一个登陆者。(有些用户名可能是系统默认的)标准的unix 系统不允许有两个同名的用户,但是可以让两个用户使用同一个用户帐号登陆
如果我在公司的机器上有个帐号。我的密码用户名是goodwell密码是icando()下当我要登陆公司的机器上去操作时,我必须在键入goodwell用户名后根据提示在键入我的密码icando()
telnet XXX.XXX.XXX.XXX 23
sun os 6.5
login:goodwell
Passwd:******(实际上这里的输入将不在终端显示)
作为系统安全的文章不得不重声,设定口令密码请务必选择教难破解的口令密码,同时更改一切系统默认用户的口令。
UNIX的口令文件
/ect/passwd
/etc/shadow
/etc/group
UNIX使用/etc/passwd文件记录系统上每一个用户的帐号,他包含每一个用户的各种信息,同样在passwd文件的设置里给不同的用户划分了不同的等级及工作组!下面是一个没shadow的passwd文件!
root:iKjDBNKWOUkVo:0:1:Super-User:/:/bin/sh
adm:.iZekGR8y33mI:4:4:Admin:/var/adm:/bin/sh
lp::71:8:Line Printer 60001:
Anonymous FTP:/export/ftp:/bin/false
liu:jZHdYPxKKUWBw:30001:4::/home/liu:/bin/sh
wais:VzvX3WPjxo:30002:1::/export/home/wais:/bin/ksh
test:9TO3RMd6:304:1::/home/test:/bin/sh
zxj:KDn3SdWpMmBFQ:304:3::/home/zxj:/bin/sh
lxm01:BVTVu541O:1063:3:liuxiaoming:/export/home/lxm01:/bin/csh
分析说明如下
root:iKjDBNKWOUkVo:0:1:Super-User:/:/bin/sh
| | | | | | |_________用户登陆shell
| | | | | |_______________________用户主目录
| | | | |______________用户真实姓名或更多关于用户的信息
| | | |__________________________GID
| | |_________________________________UID
| |_______________________________________________经过加密的口令
|______________________________________________________________ 用户名
不同的信息段用:来区分
好了我们来对上面这个passwd文件分析一下,第一个字段的root是该用户登陆时的用户名,而第二个字段是经过加密后的用户口令,然后我们看到root用户的UID是0这在UNIX系统中很关键,我将在后面对UID作更详细的说明,现在你仅仅只要知道UID=0意味着他有至高无上的权利,我们从他的Super-User信息一栏里也可以看出这点,GID=1这说明了root的用户组!然后我们注意Super-user:/:的那个/这是用户登录后的主目录,也就是当你进去之后/(在UNIX里表示最上一级的根目录)将是你的当前目录。下面我们在看/bin/sh 是用户登录后的shell,(对于shell 我不能再细说啦!要是硬要我说明的话,我只能说他有点象dos里的command)
UID被规定为无符号的16位整数,0-9用来标识系统的函数。分配给一般用户的通常从20开始,当两个具有相同UID的用户系统将视为一个用户,其权限等级完全相同,双方可以自由的读取删除对方的文件以及kill对方的进程。所以在上面一个passwd文件中,其实用户test和用户zxj虽然用不同的帐号登陆系统,但是系统视其为一个人,他们的等级相同,test用户的文件zxj全部能够读取和删除,同样zxj的文件对test来说也一样,说到这大家还记得刚才一句话吗? UID=0意味着他有至高无上的权利,如果有一个用户也有root一样的uid 的话!那他就是最高权限的管理员级别。所以给两个不同的用户分配相同的UID是一个不太明智的做法,除非你必须这么做。(呵呵!老板说不这样做就抄你鱿鱼或你的uucp 希望这样。也可能你是高顶尖级的网管,想跟踪那些具有相同权限但又要看他们登陆日志的顶尖级网管。)
在看仔细我们发现lp用户的第二个字段为空,这意味着lp将不需要密码口令的认证,实在是想不出有什么理由为这种可能辩解的啦,但是这样的网管的确不少,很多是对系统的不了解,可能是疏忽忘了(IRIX)的一些默认用户的口令为空。
下面我们继续说下去,用户的主目录,用户主目录既为用户登陆后的当前目录,我们看到root的主目录为/(UNIX习惯上把最上一级的目录称为主目录),然后我们看到的主目录在/export/ftp而liu, wais,test,zxj,lxm01用户都在不同的归属home下的目录,至于他们是否能跳出自己的主目录,那要看网管对其它目录权限的设置情况。
大家继续看下去的话,可以看到每个用户都有一个登陆后的shell,我们可以看到用户 lxm01的shell是 /bin/csh 而其他的用户都是/bin/sh,值得我们注意的是匿名登陆用户Anonymous FTP 的shell在 /bin/false 为什么是/bin/false呢,其实很简单,在/bin/目录下根本没有这个shell的文件,那也就是说他根本就不能登陆取得shell,有些网络为了安全,网管定制了自己的shell,在这我将不再做进一步的分析。
以上是一个没有shadow的passwd文件!而实际上很多网络采用shadow的方法来做到更进一步的安全防范,这无疑是值得学习的!下面我列出如果对上一个文件shadow后的文件。
passwd文件中的口令加密后的段将被*号取代
root:*:0:1:Super-User:/:/bin/sh
adm:*:4:4:Admin:/var/adm:/bin/sh
lp:*:71:8:Line Printer 60001:
Anonymous FTP:/export/ftp:/bin/false
liu:*:30001:4::/home/liu:/bin/sh
wais:*:30002:1::/export/home/wais:/bin/ksh
test:*:304:1::/home/test:/bin/sh
zxj:*:304:3::/home/zxj:/bin/sh
lxm01:*:1063:3:liuxiaoming:/export/home/lxm01:/bin/csh
shadow文件
root:iKjDBNKWOUkVo:::::
adm:.iZekGR8y33mI:::::
lp:NP:::::
Anonymous FTP:::::
liu:jZHdYPxKKUWBw:::::
wais:VzvX3WPjxo:::::
test:9TO3RMd6:::::
zxj:KDn3SdWpMmBFQ:::::
lxm01:BVTVu541O:::::
(http://www.fanqiang.com)
|
|