Unix系统安全考虑
将设备处理成文件,使得unix程式独立于设备,即程式不必一定要了解正使用的设备的所有特性,存取设备也不必记录长度,块大小,传输速度,网络协议等这样一些信息,所有烦人的细节由设备驱动程式去关心考虑,要存取设备,程式只须打开设备文件,然后作为普通的unix文件来使用.
从安全的观点来看这样处理非常好,因为所有设备上进行的i/o操作只经过了少量的渠道(即设备文件).用户不能直接地存取设备.所以如果正确地设置了磁盘分区的存取许可,用户就只能通过unix文件系统存取磁盘.文件系统有内部安全机制(文件许可).不幸的是,如果磁盘分区设备得不正确,所有用户都能够写一个程式读磁盘分区中的每个文件,作法非常简单:读一i节点,然后以磁盘地址表中块号出现的顺序,依次读这些块号指出的存有文件内容的块.
故除了root以外,决不要使盘分区对所有人可写.因为所有者,文件存取许可方式这样一些信息存放于i节点中,所有人只要具有已安装分区的写许可,就能设置所有文件的suid许可,而不管文件的所有者是谁,也不必用chmod()命令,还可避过系统建立的安全检查.
以上所述对内存文件mem,kmem和对换文件swap也是相同的.这些文件含有用户信息,一个"耐心"的程式能将用户信息提取出来.要避免磁盘分区(及其他设备)可读可写,应当在建立设备文件前先用umask命令设置文件建立屏蔽值.
一般情况下,unix系统上的终端口对所有人都是可写的,从而使用户能用write命令发送信息.虽然write命令易引起安全方面的问题,但大多数用户觉得用write得到其他用户的信息非常方便,所以系统将终端设备的存取许可设置成对所有用户可写.
/dev目录应当是755存取许可方式,且属root所有.
不允许除root外的所有用户读或写盘分区的原则有一例外,即一些程式(通常是数据库系统)需求对磁盘分区直接存取,解决这个问题的经验的盘分区应当由这种程式专用(不安装文件系统),而且应当告知使用这种程式的用户,文件安全保护将由程式自己而不是unix文件系统完成.
Unix系统之find命令
find命令用于搜索目录树,并对目录树上的所有文件执行某种操作,参数是目录名表(指出从哪些起点开始搜索),还可给出一个或多个选项,规定对每个文件执行什么操作.
find . -print 将列出当前工作目录下的目录树的每一个文件.find / -user bob -print 将列出在系统中可找到的属于bob用户的所有文件.
find /usr/bob -perm 666 -print 将列出/usr/bob目录树下所有存取许可为666的文件.若将666改为-666则将列出所有具有包含了666在内的存取许可方式的文件(如777).
find /usr/bob -type b -print 将列出/usr/bob目录树下所有块特别文件(c为字符特别文件).
find / -user root -perm -4000 -exec ls -l {} ; 是个较复杂一点的命令,-exec command ;允许对所找到的每个文件运行指定的命令command.若command中含有{},则{}将由find所找到的文件名替换.command必须以;结束.
以上举例介绍find的用法,各选项可组合使用以达到更强的功能.
Unix系统之secure程式
系统管理员应当做一个程式以定期检查系统中的各个系统文件,包括检查设备文件和suid,sgid程式,尤其要注意检查suid,sgid程式,检查/etc/passwd和/etc/group文件,寻找久未登录的户头和校验各重要文件是否被修改.(源程式清单将在今后发表)
Unix系统之ncheck命令
用于检查文件系统,只用一个磁盘分区名作为参数,将列出i节点号及相应的文件名.i节点相同的文件为建链文件.注意:所列出的清单文件名和mount命令的***个域相同的文件名前部分将不会列出来.因为是做文件系统内部的检查,ncheck并不知道文件系统安装点以上部分的目录.也可用此命令来搜索文件系统中所有的suid和sgid程式和设备文件,使用-s选项来完成此项功能
Unix系统之安装和拆卸文件系统
unix文件系统是可安装的,这意味着每个文件系统能连接到整个目录树的任意节点上(根目录总是被安装上的).安装文件系统的目录称为安装点./etc/mount命令用于安装文件系统,用这条命令可将文件系统安装在现有目录结构的任意处.
安装文件系统时,安装点的文件和目录都是不可存取的,因此未安装文件系统时,不要将文件存入安装点目录.文件系统安装后,安装点的存取许可方式和所有者将改动为所安装的文件根目录的许可方式和所有者.
安装文件系统时要小心:安装点的属性会改动!还要注意新建的文件,除非新文件系统是由标准文件建立的,系统标准文件会设置适当的存取许可方式,否则新文件系统的存取许可将是777!
可用-r选项将文件系统安装成只读文件系统.需要写保护的带驱动器和磁盘应当以这种方式来安装.
不带所有参数的/etc/mount可获得系统中所安装的文件系统的有关信息.包括:文件系统被安装的安装点目录,对应/dev中的哪个设备,只读或可读写,安装时间和日期等.
从安全的观点来讲,可安装系统的危险来自用户可能请求系统管理员为其安装用户自己的文件系统.如果安装了用户的文件系统,则应在允许用户存取文件系统前,先扫描用户的文件系统,搜索suid/sgid程式和设备文件.在除了root外所有人不能执行的目录中安装文件系统,用find命令或secure列出可疑文件,删除不属用户所有的文件的suid/sgid许可.
用户的文件系统用完后,可用umount命令卸下文件系统.并将安装点目录的所有者改回root,存取许可改为755.
Unix系统之系统目录和文件
unix系统中有许多文件不允许用户写,如:/bin,/usr/bin,/usr/lbin,/etc/passwd,/usr/lib/crontab,/unix,/etc/rc,/etc/inittab这样一些文件和目录(大多数的系统目录),可写的目录允许移动文件,会引起安全问题.系统管理员应经常检查系统文件和目录的许可权限和所有者.可做一个程式根据系统提供的规则文件(在/etc/permlist文件中)所描述的文件所有者和许可权规则检查各文件.(源程式清单将在今后发表)。注意:如果系统的安全管理不好,或系统是新安装的,其安全程式不够高,能用make方式在安全强的系统上运行上述程式,将许可规则文件拷贝到新系 统来,再以设置方式在新系统上运行上述程式,就可提高本系统的安全程式.但要记住,两个系统必须运行相同的unix系统版本
【编辑推荐】