UNIX系统管理-系统安全-设备访问安全
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
UNIX系统管理-系统安全-设备访问安全
UNIX系统与连在本系统上的各种设备之间的通讯是通过特别文件来实现,就程序而言,磁盘是文件,MODEM是文件,甚至内存也是文件。
所有连接到系统上的设备都在/dev目录中有一个文件与其对应。
当在这些文件上执行I/O操作时,由UNIX系统将I/O操作转换成实际设备的动作。
例如,文件/dev/mem是系统的内存,如果cat这个文件,实际上是在终端显示系统的内存。
为了安全起见,这个文件对普通用户是不可读的。
因为在任一给定时间,内存去可能含有用户登陆口令或者运行程序的口令;或者部分文件的编辑缓冲区,缓冲区可能含有用ed -x命令解密后的文本,以及用户不愿让其他人存取的种种信息。
在/dev中的文件通常被称为设备文件,用ls /dev命令可以看看系统中的一些设备。
因为设备特殊文件直接访问机器的硬件,需要小心对待设备特殊文件的权限,如果用户中有对UNIX系统比较熟悉的,管理员对这些文件设置不当,可能引起严重的安全问题。
要特别注意属于内存和磁盘驱动器的设备特殊文件。
这些文件名称如下:
/dev/hda /dev/hda1 /dev/hda2 .....
/dev/hdb /dev/hdb1 /dev/hdb2.....
/dev/sda /dev/sda1 ......
/dev/mem /dev/mem1....
所有这些文件必须是root拥有,它们的权限应该尽可能的缩小,最好是-rw_______.
在任何情况下,都不允许root外的其他用户拥有对这些文件的读写权限,例如一个普通用户掌握了磁盘或者磁盘分区的读、写权限,他就能够在磁盘或者磁盘分区上绕过所有的标准文件和目录的权限设置。
因为他可以不管系统在上面建立的目录结构,直接读写硬盘或者其他存储设备,这对系统安全构成了严重的危害,最严重可以导致系统完全崩溃并丢失所有的数据信息。
如果用户拥有内存特殊文件的读取权限,也会产生类似的问题,因为这些文件直接映射机器的内存。
在一些UNIX版本中,访问机器内存以及于每个经常结合的内存的另外一种方法是通过/proc目录的内容。
虽然可以使用ls /proc命令来列出它的内容,事实上/proc 目录和它里面的内容并不实际存在在硬盘上,这一目录和它的内容是由内核动态释放的。
很明显,如果用户可以任意修改当前进程的内存去,安全就成了问题。
当然,将设备处理成文件,使得UNIX程序独立于设备,即程序不必一定要了解正使用的设备的任何特性,存取设备也不需要记录长度,块大小,传输速度,网络协议等这样一些信息,所有细节由设备驱动程序去关心考虑,要存取设备,程序只需要打开设备文件,然后作为普通的UNIX文件来使用。
从安全的观点来看这样处理很好,因为任何设备上进行的I/O操作只经过了少量的渠道(即设备文件)。
用户不能直接存取设备。
所以如果正确地设置了磁盘分区的存取许可,用户就只能通过UNIX文件系统存取磁盘。
这样文件系统就有内部安全机制(文件许可)。
如果磁盘分区设置得不正确,任何用户都能够写一个程序读磁盘分区中的每个文件,做法很简单,读i节点,然后以磁盘地址表中块号出现的顺序,依次读这些块号指出的存有文件内容的块。
故除了root外,决不要使盘分区对任何人可写。
因为所有者和文件存取许可方式这样一些信息存放在i节点中,任何人只要具有已安装分区的写许可,就能设置任何文件的SUID许可,而不管文件的所有者是谁,也不必用chmod()命令,还可避过系统建立的安全检查。
以上所述对内存文件mem,kmem和对交换文件swap也是一样。
这些文件含有用户信息,一个“耐心”的程序可以将用户信息提取出来。
要避免磁盘分区的(以及其它设备)可读可写,应当在建立设备文件前先用umask命令设置文件建立屏蔽值。
一般情况下,UNIX系统上的终端对任何人都是可写的,从而使用户可以用write命令发送信息。
/dev目录应该是755存取权限,且应该是root所有。
不允许root外用户读写磁盘分区的原则有一个例外,即一些程序(通常是数据库系统)要求对磁盘分区直接存取(为了提高效率),解决这个问题的
经验是磁盘分区应当由这种程序专用(不安装文件系统),而文件安全保护将由数据库系统自己而不是UNIX文件系统完成。
传统的终端允许用户之间使用write命令传递简单的信息,而对于许多终端来说,可以对送入的简单转义字符和命令字符组进行编程,使它们完成简单的操作。
其中一种操作是将一些字符从终端返回主机,这个命令就像你自己执行一系列命令一样,假如你现在正在使用root登陆,就可以想象有什么后果了。
唯一防止这类攻击的方法是关闭呼叫器,mesg n。
遗憾的是,这同时也禁止了其他用户和你交流信息的请求,安全和使用方便总是不能兼顾的。