📄 system-safety.html
字号:
<br> 不允许除root外的任何用户读或写盘分区的原则有一例外,即一些程序
<br> (通常是数据库系统)要求对磁盘分区直接存取,解决这个问题的经验的盘分区
<br> 应当由这种程序专用(不安装文件系统),而且应当告知使用这种程序的用户,
<br> 文件安全保护将由程序自己而不是UNIX文件系统完成.
<p> (5)find命令
<br> find命令用于搜索目录树,并对目录树上的所有文件执行某种操作,参数
<br> 是目录名表(指出从哪些起点开始搜索),还可给出一个或多个选项,规定对每
<br> 个文件执行什么操作.
<br> find . -print 将列出当前工作目录下的目录树的每一个文件.
<br> find / -user bob -print 将列出在系统中可找到的属于bob用户的所有
<br> 文件.
<br> find /usr/bob -perm 666 -print 将列出/usr/bob目录树下所有存取许
<br> 可为666的文件.若将666改为-666则将列出所有具有包含了666在内
<br> 的存取许可方式的文件(如777).
<br> find /usr/bob -type b -print 将列出/usr/bob目录树下所有块特别文
<br> 件(c为字符特别文件).
<br> find / -user root -perm -4000 -exec
ls -l {} \; 是一个较复杂一
<br> 点的命令,-exec
COMMAND \;允许对所找到的每个文件运行指定的
<br> 命令COMMAND.若COMMAND中含有{},则{}将由find所找到的文件名替
<br> 换.COMMAND必须以\;结束.
<br> 以上举例介绍find的用法,各选项可组合使用以达到更强的功能.
<p> (6)secure程序
<br> 系统管理员应当做一个程序以定期检查系统中的各个系统文件,包括检查
<br> 设备文件和SUID,SGID程序,尤其要注意检查SUID,SGID程序,检查/etc/passwd
<br> 和/etc/group文件,寻找久未登录的户头和校验各重要文件是否被修改.
<br> (源程序清单将在今后发表)
<p> (7)ncheck命令
<br> 用于检查文件系统,只用一个磁盘分区名作为参数,将列出i节点号及相应
<br> 的文件名.i节点相同的文件为建链文件.
<br> 注意:所列出的清单文件名与mount命令的第一个域相同的文件名前部分
<br> 将不会列出来.因为是做文件系统内部的检查,ncheck并不知道文件系统安装
<br> 点以上部分的目录.
<br> 也可用此命令来搜索文件系统中所有的SUID和SGID程序和设备文件,使用
<br> -s选项来完成此项功能.
<p> (8)安装和拆卸文件系统
<br> UNIX文件系统是可安装的,这意味着每个文件系统可以连接到整个目录树
<br> 的任意节点上(根目录总是被安装上的).安装文件系统的目录称为安装点.
<br> /etc/mount命令用于安装文件系统,用这条命令可将文件系统安装在现有
<br> 目录结构的任意处.
<br> 安装文件系统时,安装点的文件和目录都是不可存取的,因此未安装文件
<br> 系统时,不要将文件存入安装点目录.文件系统安装后,安装点的存取许可方式
<br> 和所有者将改变为所安装的文件根目录的许可方式和所有者.
<br> 安装文件系统时要小心:安装点的属性会改变!还要注意新建的文件,除非
<br> 新文件系统是由标准文件建立的,系统标准文件会设置适当的存取许可方式,
<br> 否则新文件系统的存取许可将是777!
<br> 可用-r选项将文件系统安装成只读文件系统.需要写保护的带驱动器和磁
<br> 盘应当以这种方式来安装.
<br> 不带任何参数的/etc/mount可获得系统中所安装的文件系统的有关信息.
<br> 包括:文件系统被安装的安装点目录,对应/dev中的哪个设备,只读或可读写,
<br> 安装时间和日期等.
<br> 从安全的观点来讲,可安装系统的危险来自用户可能请求系统管理员为其
<br> 安装用户自己的文件系统.如果安装了用户的文件系统,则应在允许用户存取
<br> 文件系统前,先扫描用户的文件系统,搜索SUID/SGID程序和设备文件.在除了
<br> root外任何人不能执行的目录中安装文件系统,用find命令或secure列出可疑
<br> 文件,删除不属用户所有的文件的SUID/SGID许可.
<br> 用户的文件系统用完后,可用umount命令卸下文件系统.并将安装点目录
<br> 的所有者改回root,存取许可改为755.
<p> (9)系统目录和文件
<br> UNIX系统中有许多文件不允许用户写,如:/bin,/usr/bin,/usr/lbin,
<br> /etc/passwd,/usr/lib/crontab,/unix,/etc/rc,/etc/inittab这样一些文件
<br> 和目录(大多数的系统目录),可写的目录允许移动文件,会引起安全问题.
<br> 系统管理员应经常检查系统文件和目录的许可权限和所有者.可做一个程
<br> 序根据系统提供的规则文件(在/etc/permlist文件中)所描述的文件所有者和
<br> 许可权规则检查各文件.
<br> (源程序清单将在今后发表)
<br> 注意:如果系统的安全管理不好,或系统是新安装的,其安全程序不够高,
<br> 可以用make方式在安全强的系统上运行上述程序,将许可规则文件拷贝到新系
<br> 统来,再以设置方式在新系统上运行上述程序,就可提高本系统的安全程序.但
<br> 要记住,两个系统必须运行相同的UNIX系统版本.
<p>4.作为root运行的程序
<br> 在UNIX系统中,有些程序由系统作为root进程运行.这些程序并不总是具有
<br>SUID许可,因为其不少程序仅由root运行,系统管理员需要清楚这些程序做什么,
<br>以及这些程序还将运行其它什么程序.
<p> (1)启动系统
<br> 当某些UNIX系统(如SCO UNIX/XENIX)启动时,是以被称为单用户的方式运
<br> 行,在这种方式中普通用户不能登录,唯有的进程是init,swapper,以及一些由
<br> 系统管理员从控制台运行的进程.UNIX系统的单用户方式启动,使系统管理员
<br> 能在允许普通用户登录以前,先检查系统操作,确保系统一切正常,当系统处于
<br> 单用户方式时,控制台作为超级用户,命令揭示是"#",有些UNIX系统不要确认
<br> 超级用户口令就认可控制台是root,给出#提示符.这就可能成为一个安全问题.
<p> (2)init进程
<br> UNIX系统总是以某种方式或称为某种级运行,系统有若干种运行级,这些
<br> 运行级由init进程控制.
<br> UNIX系统启动时以单用户方式运行,也叫1级或S级.
<br> 对于其他用户登录进入系统,UNIX有一种多用户运行方式,也叫2级.
<br> init进程控制系统运行级,它读入文件/etc/inittab,该文件详细地规定
<br> 了哪些进程在哪一级运行.当root敲入init n(数字),系统就进入n级.init读
<br> 该文件以确定终止哪些进程,启动哪些进程.
<br> 有效的运行级的数值是从0到6与s.
<br> 注意:由init建立的进程以UID为0运行(root)从/etc/inittab运行的程序
<br> 也作为root运行,所以系统管理员要确保自己知道/etc/inittab中的程序做什
<br> 么工作,确保这些程序以及这些程序所在的目录直到/和/etc/inittab除root
<br> 外无人可写.
<p> (3)进入多用户
<br> 当UNIX系统进入多用户方式时,将寝化一系列事件,接着开始执行gettys,
<br> 允许其他用户登录进入系统.如果再看看/etc/inittab文件,会看到gettys定
<br> 义在运行级2,至少三个shell程序/etc/brc,/etc/bcheckrc,/etc/rc*也定义
<br> 在运行级2.这些程序都在gettys启动前运行.
<br> 这些shell程序作为root运行,也不能仅对root可写还应当检查shell程序
<br> 运行的命令,因为这些命令也将作为root运行.
<p> (4)shutdown命令
<br> 用shutdown命令关系统,shutdown shell程序发送警告通知所有用户离开
<br> 系统,在"给定的期限时间"到了后,就终止进程,拆卸文件系统,进入单用户方
<br> 式或关机状态.一旦进入单用户方式,所有的gettys停止运行,用户再不能登录.
<br> 进入关机状态后可将系统关电.
<br> shutdown仅能由作为root登录的用户从系统控制台上运行.所以任何的
<br> shutdown运行的命令仅能对root可写.
<p> (5)系统V的cron程序
<br> cron在UNIX系统是多用户方式时运行,根据规定的时间安排执行指定的命
<br> 令,每隔一分钟检查一次文件/usr/lib/crontab,寻找是否有应当运行的程序?
<br> 如果找到要运行的程序,就运行该程序,否则睡眠等待一分钟.
<br> 实际的/usr/lib/crontab用于根据全天的规则时间表运行程序,也可在夜
<br> 晚运行白天不愿运行怕降低其他用户速度的程序.通常由cron运行的程序是如
<br> 记帐,存文件这样的程序.cron一般在系统进入多用户后由/etc/rc启动,当
<br> shutdown运行killall命令时便终止运行.由cron运行的程序作为root,所以应
<br> 当注意放什么程序在crontab中,还要确保/usr/lib/crontab和该表中列出的
<br> 任何程序对任何人不可写.
<br> 如果用户需要由cron执行一个程序,系统管理员可用su命令在crontab表
<br> 中建立一个入口,使用户的程序不能获得root的权限.
<p> (6)系统V版本2之后的cron程序
<br> 在系统V版本2中,cron被修改成允许用户建立自己的crontab入口,
<br> /usr/lib/crontab文件不再存在,由目录/usr/spool/cron/crontabs中的文件
<br> 代替.这些文件的格式与crontab相同,但每个文件与系统中的一个用户对应,
<br> 并以某用户的名义由cron运行.
<br> 如果想限制能建立crontab的用户,可在文件/usr/lib/cron/cron.allow
<br> 文件中列出允许运行crontab命令的用户.任何未列于该文件的用户不能运行
<br> crontab.反之,若更愿意列出不允许运行crontab命令的用户,则可将他们列入
<br> /usr/lib/cron/cron.deny文件中,未列于该文件的其他用户将被允许建立
<br> crontab.
<br> 注意:若两个文件都存在,系统将使用cron.allow,忽略cron.deny.如果两
<br> 个文件都不存在,则只有root可运行crontab.所以,若要允许系统中的所有用
<br> 户都可运行crontab命令,应当建立一个空的cron.deny文件,如果cron.allow
<br> 也存在,则删除该文件.
<br> 这个版本的cron命令的安全程度比前一个高,因为用户只能看自己的
<br> crontab,系统管理员也不必担心其他用户的程序是否会作为root运行,由于允
<br> 许每个系统登录用户有自己的crontab,也简化了对程序必须由cron运行,但不
<br> 必作为root运行的系统程序的处理.
<br> 必须确保root的crontab文件仅对root可写,并且该文件所在的目录及所
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -