UNIX系统通用安全标准配置手册.doc
- 文档编号:13523915
- 上传时间:2023-06-14
- 格式:DOC
- 页数:25
- 大小:101KB
UNIX系统通用安全标准配置手册.doc
《UNIX系统通用安全标准配置手册.doc》由会员分享,可在线阅读,更多相关《UNIX系统通用安全标准配置手册.doc(25页珍藏版)》请在冰点文库上搜索。
德信诚培训网
UNIX系统通用安全标准配置手册
UNIX是一种多用户、多任务的操作系统。
这类操作系统的一种基本功能就是防止使用同一台计算机的不同用户之间的相互干扰。
对于UNIX自身的安全机制,我们将从以下几个方面进行描叙。
4.1身分标识
在UNIX系统中一些系统管理命令只能由超级用户运行.超级用户拥有其它用户所没有的特权,超级用户不管文件存取许可方式如何,都可以读,写任何文件,运行任何程序。
系统管理员通常使用命令:
/bin/su或以root进入系统从而成为超级用户。
作为超级用户可以控制一切,包括:
用户帐号、文件和目录、网络资源。
用户登录到系统中,需输入用户名标识其身份。
内部实现时,系统管理员在创建用户帐号时,为其分配一个惟一的标识号(UID)。
4.1.1账户设定
UNIX系统中的/etc/passwd文件含有全部系统需要知道的关于每个用户的信息(加密后的口令也可能存于/etc/shadow文件中)。
超级用户则可以使用passwd命令更改所有用户的登录口令或规定用户的登录口令的属性。
Øpasswd[name]:
修改用户name的帐号口令
Øpasswd–s[-a]:
显示所有用户的口令信息,超级用户使用
Øpasswd–s[name]:
显示用户name的口令信息,超级用户使用
Øpasswd[-l|-d][-f][-nmin][-xmax][-wwarn]name:
-l:
锁住用户name的帐号,超级用户使用
-d:
删除某一用户的口令,超级用户使用
-f:
使用户name的口令失效,强迫用户下次登录时更改口令,超级用户使用
-nmin:
规定口令在min天后失效,超级用户使用
-xmax:
规定用户口令寿命的最长天数,超级用户使用
-wwarn:
设置在用户口令失效后的警告信息,超级用户使用
在UNIX中,用户组的引入是为了方便用户对文件和其它资源的共享,同时又保证系统的安全性。
所谓用户组是指共同在UNIX系统中开发同一项目,因此共享文件和其它系统资源的用户的集合。
Group文件:
定义了UNIX系统中所有的用户组,它位于系统的/etc目录下。
文件的每一行定义一个用户组,格式为:
group-name:
*:
gid:
additional-user,Group-name中包含组的名称(文本格式);“*”这一项是为了与老版本的UNIX兼容,没有实际意义。
Gid域是一个唯一标识组名的数字;additional-user域包含了属于该组的用户名单。
增加和删除用户组:
通过groupadd和groupdel命令超级用户可以直接增加和删除用户组。
这实际上是对/etc/group文件的操作。
Groupadd命令通过在group文件中增加一行来在系统中增加一个新的用户组,命令格式为:
groupadd[-ggid][-o]group-name
#groupadd–g200exam增=-08gid为200的用户组exam。
Groupdel命令将删除group文件中的一行来删除系统中的一个用户组,命令格式为:
groupdelgroup-name
作为超级用户,系统管理员可以直接对/ect/group文件进行编辑,实现用户组的增加和删除。
4.1.2用户属性
通过用户的权限的设置,可以实现以下重要的安全防范:
Ø防止未授权存取:
这是计算机安全最重要的问题:
未被使用系统的人进入系统.用户意识,良好的口令管理(由系统管理员和用户双方配合),登录活动记录和报告,用户和网络活动的周期检查,这些都是防止未授权存取的关键.
Ø防止泄密:
这也是计算机安全的一个重要问题,防止已授权或未授权的用户相互存取相互的重要信息.文件系统查帐,su登录和报告。
用户管理是防止泄密的重要措施。
Ø防止用户拒绝系统的管理:
这一方面的安全应由操作系统来完成,一个系统不应被一个有意试图使用过多资源的用户损害,UNIX上通过用PS命令,记帐程序df和du周期地检查系统,查出过多占用CUP的进程和大量占用磁盘的文件。
超级用户引起的问题root是UNIX系统安全方面的主要弱点,取得root之后可以对系统作任何想作的事情。
在大型的分布式系统中,为了统一对用户的管理,通常将每一台工作站上的口令文件存放在网络服务器上。
用户的.profile文件
由于用户的HOME目录下的.profile文件在用户登录时就被执行.若该文件对其它人是可写的则系统的任何用户都能修改此文件,使其按自己的要求工作.这样可能使得其它用户具有该用户相同的权限.
通过修改/etc/profile文件,从中增加一段程序,使之能与我们预先设定的有关用户、端口、工作时间等一些信息的文件进行比较,判断当前注册用户的登录端口、日期和时间是否在我们允许的范围内,否则不允许注册登录。
4.1.3停用无用的用户
“Guest”该帐户应该在系统上是不被允许的。
UNIX内含一些使用者ID,而其密码是无效的(password(*))。
若ID含有无效的密码(invalidpassword),其意谓者没有任可使用者可以藉此登入至系统。
这些ID是:
bin Ownerofthesystemexecutablefiles
sys Ownerofsystemdevices
adm Ownerofsystemaccountingutilities
uucp OwnerofUNIX-to-UNIXCopyProgram
nuucp ForUUCP
lpd Ownerofprinterspoolerutility
guest Guestaccount
nobody usedbyNFS
并不建议移除所有无用的帐户,如:
uucp,nuucp,lpd,guest,andnobody等。
此乃因有时候当安装更新程序时,安装程序会尝试使用这些系统定义的使用者,譬如,更改档案的所有权给自已。
假如该帐户不存在,则安装可能会失败,并造成更新程序在一个“未定义”或“broken”状态。
这样是非常困难去回复先前的错误。
因此除了guestuser,不要移除其它系统帐户信息。
4.2身分鉴别
4.2.1使用/etc/passwd文件
用户名是个标识,它告诉计算机该用户是谁,而口令是个确认证据。
当用户登录系统时,需要输入口令来鉴别用户身份。
/etc/passwd中存放的加密的口令用于用户登录时输入的口令经计算后相比较,符合则允许登录,否则拒绝用户登录。
该文件仅对root可写,用户可用passwd命令修改自己的口令,不能直接修改/etc/passwd中的口令部份。
文件中每行的一般格式为:
LOGNAME:
PASSWORD:
UID:
GID:
USERINFO:
HOME:
SHELL每行的头两项是登录名和加密后的口令,后面的两个数是UID和GID,接着的一项是系统管理员想写入的有关该用户的任何信息,最后两项是两个路径名:
一个是分配给用户的HOME目录,第二个是用户登录后将执行的shell(若为空格则缺省为/bin/sh)。
下面是一个没shadow的passwd文件的分析说明:
root:
iKjDBNKWOUkVo:
0:
1:
Super-User:
/:
/bin/sh
| | | | | | |_________用户登陆shell
| | | | | |_______________________用户主目录
| | | | |___________用户真实姓名或更多关于用户的信息
| | | |__________________________GID
| | |_________________________________UID
| |_____________________________________________经过加密的口令
|__________________________________________________________ 用户名
不同的信息段用“:
”来区分。
第一个字段的root是该用户登陆时的用户名,而第二个字段是经过加密后的用户口令,然后我们看到root用户的UID是0这在UNIX系统中很关键,Super-User信息是对用户属性描述,GID=1这说明了root的用户组!
Super-user:
/:
的那个/这是用户登录后的主目录,也就是当你进去之后/(在UNIX里表示最上一级的根目录)将是你的当前目录。
/bin/sh 是用户登录后的shell。
由于/etc/passwd文件对任何用户都可读,故常成为攻击的目标。
真正的用户口令可能存在其它文件中,如/etc/shadow,该文件对普通用户不可读。
用户的口令经加密后存放在/etc/shadow文件中,该文件对应/etc/passwd文件,每行用冒号分隔为四个域:
用户名、口令、最后一次修改时间、口令需修改的最小期限、口令最大有效期限。
/etc/shadow文件中第二个域被置为x。
当用户输入口令时,UNIX用相应的加密方法对口令进行加密。
当前SUNOS有两个鉴别系统:
UNIX和DES。
UNIX鉴别机制SUN早期的各种网络服务都建立在UNIX鉴别机制之上,证书部分包含站名,用户号,组号和同组存取序列,而核对器是空白。
这个系统存在两个问题:
首先,最突出的问题是核对器是空的,这就使得伪造一份证书是非常容易的。
另一个问题是UNIX鉴别系统只适用于UNIX系统,但需要在一个网络中所有的站都使用UNIX系统是不现实的。
DES鉴别系统的安全性建立在发送者对当前时间的编码能力上,它使接收者能解码并对照自己的时钟来进行检验.时钟标记也使用DES编码.这样的机制要工作有两件事是必须的:
发送者和接收者双方必须对什么是当前时间进行约定;发送者和接收者必须使用同样的编码关键字。
4.2.2设置密码规则
良好的密码是抵御未授权进入系统的第一道有效防线,它们是以下类型:
Ø大小写字母的混合
Ø字母、数字或标点符号的组合。
此外,它们可以包含特殊字符,如~!
@#$%^&*()-_=+[]{}|\;:
'",.<>?
/<空格>
Ø未写在任何地方
Ø如果使用/etc/security/passwd文件,那么长度最少为7个字符最大8个字符。
Ø不是在字典中可查到的真实单词
Ø不是键盘上字母的排列模式,例如qwerty
Ø不是真实单词或已知排列模式的反向拼写
Ø不包含任何与您自己、家庭或朋友有关的个人信息
Ø不与从前一个密码的模式相同
Ø可以较快输入,这样边上的人就不能确定您的密码
4.3访问控制
文件和目录许可
文件和目录属性决定了被访问权限,即谁能存取或执行该文件和目录。
我们知道UNIX是一个多用户的操作系统,那么,它是怎样来区分一个文件是属于谁的,这个文件是什么类型的文件的呢?
下面我们通过一个例子来说明这个问题。
我们现在使用ls命令列出当前目录下的文件:
#ls-la
#-rw-rw-rw- 1 root wheel 170 jan719:
46 mnk
#-rw-r----- 1 root wheel 18204 jan820:
34 nmap.tar.gz
#-rwxr-xr-- 1 candy user 1204 may2313:
00 mysh.sh
#drwx------ 2 netdemon user 512 may2314:
23 mydoc
|-----1------|--2--|----3-----|---4---|---5---|------6------|-----7-------|
在这里第一部分是文件属性,第二部分是文件数量,第三是所有者,第四是所属组,第五是文件大小,第六是文件修改时间,第七是文件名,第三部分表明了一个文件的拥有者是谁,就mnk这个文件来说,它的拥有者是root,是属于wheel这个组的,而mysh.sh的拥有者是candy,user组的,通常情况下,如果用户属于这个组,那么这个文件也就属于这个组,第二部分指出连接到此文件的连接的数量,我们都知道,在win系统上,我们可以创建快捷方式,比如在桌面上创建一个快捷方式,指向某个文件,UNIX的连接也大致是一样的概念,如果在系统尚有一个连接是指向mnk的,那么在这里它的1就会变成2
第一部分一共有10位数来表示,第一位表示文件类型,"-"表示这个一个文件,"d"表示这个一个目录,"l"表示这是一个连接,接下来的9位,我们把他们每3位分为一段来看,第一段对应于文件拥有者用u表示(user),第二段对应属组用g表示(group),第三段对应任何人用o表示(other),而每一段的第一位代表读权限(r),第二为代表写权限(w),第三位代表执行(x)(对文件而言)或可进入(对目录而言)权限,现在我们拿第二个文件nmap.tar.gz来作说名,第一位"-"表明这是一个文件,接下来的"rw-"表明root可以读写这个文件,但不能执行它,再接下来的"r--"表明了属于wheel这个组的人可以读这个文件,但不能修改(不可写)也不能执行这个文件,最后的"---"表明了其它的任何人都不能读、写、执行这个文件。
由此,我们现在可以知道,mnk这个文件是任何一个人都可以读写但不能执行的一个文件,因为它的每一部分都是"rw-",而第三个mysh.sh就是candy可读可写可执行,netdemon可以执行但不能修改或删除,为什么呢?
通过第4个mydoc,我们看出netdemon也是属于user组的一个用户,而mysh.sh的表示组权限的这一段是"r-x",所以netdemon有执行这个文件的权限,但是其它的人就只能看了,这是因为最后的"r--"说明的这个规则。
第四个mydoc,由第一位的"d",说明这是一个目录而不是一个文件,netdemon可以读写进入这个目录,但其它的人都不可以包括同一组的candy,因为他最后都是"---"。
UNIX把表示属性的9位数分为三段,user,group,other,各段的权限(rwx)换为二进制,再变为10进制的结果,有"r"或"w","x"权限的用1表示,没有的用0表示,即"---"为000,"rwx"为111,那么,"r-x"的二进制就表示为101,而101的十进制数为1*2e2+0*2e1+1*2e0=1*4+0*2+1*1=5,再把u,g,o各自的值串起来就成了755644等的这些表示法了,比如"rwxr-xr-x",因为u为rwx,二进制是111,十进制是7,g和o都为r-x,二进制是101,十进制是5,所以,"rwxr-xr-x"也可以用755表示,下面给出各种权限的二进制和十进制的值
权限 二进制 十进制
---------------------------------------
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
---------------------------------------
文件类型的表示符
---------------------------------------
d 目录
b 二进制特殊文件
c 文本特殊文件
l 符号连接
p Pipe
s Socket
- 普通文件
改变许可权限
如果一个文件或目录属于你所有,那么你可以改变它的许可权,用改变模式chmod命令实现这个目的。
告诉chmod命令欲更改许可权的文件或目录名,以及各用户的权限变化情况。
为了改变用户、小组和其它使用者对文件的许可权,常常利用字母加上符号来表示,由以下几个部分组成:
Ø修改对象:
用u表示用户,即文件的所有者,用g表示小组,用o表示其它用户。
Ø许可权允许表示:
”+”表示允许,”-”表示不允许。
Ø许可权的类型:
r表示读,w表示写,x表示执行。
例如,允许每个人都能读文件file,即所有的人都对文件file拥有读执行权时,输入命令为:
chmodugo+rfile
以上命令告诉系统:
所有者、小组以及其它用户可以读该文件。
又如,除用户所有者之外,任何人不具有修改文件的权限,应输入命令为:
chmodgo-wfile
当然chmod命令中也可以使用绝对许可权──即二进制数的形式来表示。
例如允许所有者和相关的小组具有读和修改文件权限时,输入命令为:
chmod660file
由上述命令行可知,将所有者和小组的许可权分别设置成6,对应的二进制数据为110,即说明它们分别具有读和写的权限,而其它用户的许可权设置成0,对应的二进制数据为000,即表明不能做任何事情。
可以用改变文件许可权同样方式来改变目录的许可权,例如,输入命令:
chmodgo-w/home/guest
该命令则表示guest目录中所有文件除所有者外其余用户都无写的权限。
改变文件或目录的所有者
当有人给你一个文件时,将它拷贝到你的主目录中来,但是在UNIX系统中,将文件拷贝给你的人仍然是文件的主人。
若要改变文件所有者,在Systemv中,可以用chown命令改变文件所有者(在BSD中,只有超级用户才能改变文件的所有者)。
改变所有者时,必须告诉命令chown文件新的所有者以及要改变的文件名,例如:
chownzhlifile
上述命令将file文件所有者改变为zhli。
改变文件所有者的另一种方式是建立文件的一个拷贝。
如果你拷贝了一个文件,那么你就可以成为该文件的所有者。
改变目录的所有者的命令与改变文件的所有者的命令类似,例如:
chownzhli/home/guest
上述命令将/home/guest目录所有者改变为zhli。
系统中的链接是一个已经存在的文件的另一个名字,它不复制文件的内容。
有两种链接方式,一种是硬链接(hardlink),另一种是符号链接(symboliclink),又称软链接。
硬链接和原有文件是存储在同一物理地址的两个不同的名字,因此硬链接是相互的;符号链接的内容只是一个所链接文件的文件名,在使用ls–l时,符号链接的第一项的第一位为“l”。
umask命令
umask设置用户文件和目录的文件创建缺省屏蔽值,若将此命令放入.profile文件,就可控制该用户后续所建文件的存取许可.umask命令与chmod命令的作用正好相反,它告诉系统在创建文件时不给予什么存取许可。
设置用户ID和同组用户ID许可
SUID表示“设置用户ID”,SGID表示“设置组ID”。
当用户执行一个SUID文件时,用户ID在程序运行过程中被置为文件拥有者的用户ID。
如果文件属于root,那用户就成为超级用户。
同样,当一个用户执行SGID文件时,用户的组被置为文件的组。
。
我们知道,在Unix系统中,是有用户控制系统的,对权限不同的用户有不同限制,包括对软件和硬件的使用,这种限制非常的严格,以至于有时候会与我们的实际需要产生矛盾,比如说,在*nix下一些硬件设备默认需要有root权限才可以得到使用,可是有时候又需要让非root用户使用它,这个时候怎么办呢?
我们不可能为此把这个用户升级成root吧。
suid就是针对这种情况的解决的办法,假设我是root,我可以chmod+sxxx(xxx是你想要setuid的设备或程序名),xxx将会以我即root的身份运行,即使你不是root,你现在也可以使用它了。
概括说来,就是用一些setuid的程序,setuid成为root,那么用户运行的时候这些程序就具有root权限。
例如普通用户允许改变口令,这就要求改变/etc/passwd文件的口令域。
然而系统管理员决不允许普通用户拥有直接改变这个文件的权利,运行passwd命令时,他能够修改/etc/passwd文件,尽管文件是属于root的。
这成为可能是因为passwd命令以root的SUID权限运行。
SUID程序代表了重要的安全漏洞,特别是SUID设为root的程序。
Unix系统安全的一种典型攻击就是创建一个SUID是root的shell拷贝,然后把他隐藏。
通过调用后门,攻击者就获得了root的权利。
因此,系统管理员应该定期察看系统中有哪些SUID和SGID文件。
用下面的命令可以实现:
find / -type f \( -perm –4000 –o –perm –2000 \) –ls
4.4安全事件审计
UNIX系统的审计机制监控系统中发生的事件,及时提供对系统异常报警提示,并提供事后查询功能。
丰富的日志为UNIX的安全运行提供了保障,常见的的日志文件包括:
Ø/usr/adm早期版本的Unix
Ø/var/adm较新版本的Unix
Ø/var/log用于Solaris、Linux、BSD等
Ø/etcUnixsystemV早期版本
在这些目录下,或其子目录下,你可以找到以下日志文件(也许是其中的一部分):
Ølastlog记录用户最后一次成功登录时间
Øloginlog不良的登陆尝试记录
Ømessages记录输出到系统主控台以及由syslog系统服务程序产生的消息
Øutmp记录当前登录的每个用户
Øutmpx扩展的utmp
Øwtmp记录每一次用户登录和注销的历史信息wtmpx扩展的wtmp
Øvold.log记录使用外部介质出现的错误
Øxferkig记录Ftp的存取情况sulog记录su命令的使用情况
Øacct记录每个用户使用过的命令
Øaculog拨出自动呼叫记
lastlog文件
Unix在lastlog日志文件中记录每一个用户注册进入系统的最后时间,在你每一次进入系统时,系统会显示出这个时间:
login:
blackeyes
password:
h3ll0
Lastlogin:
TueJul2709:
55:
50ontty01
lastlog告诉用户,要核对一下最后注册进入系统的时间是否正确,若系统显示的时间与你上次进入系统的时间不符,说明发生了非授权用户注册,若这种情况发生了,用户应该马上修改帐户口令,并通知管理员。
在每次注册时,lastlog新的内容冲掉老的内容。
标准版本的Unix没有提供服务程序可以阅读lastlog文件,有些程序可以提供这个服务,这里不做过多描述。
loginlog文件
UnixsystemV版本中,可以把不成功的登录行为记录在/var/adm/loginlog中。
要登记不成功的注册行为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UNIX 系统 通用 安全标准 配置 手册
![提示](https://static.bingdoc.com/images/bang_tan.gif)