网络通信 频道

物理安全与文件系统

物理安全

 

Solaris的OpenBoot安全设置

通过OpenBoot,几乎可以从任何连接SCSI设备上引导。也可以修改OpenBoot变量,而这些影响到整个Unix的引导。

OpenBoot的三种安全级别

1.None: 可以执行任何命令。

2.Command:除boot和go之外的命令执行需要口令,可以从默认设备上引导。

3.Full:除go之外的命令执行需要口令。

注意在full模式下,如果遗忘了OpenBoot口令,只有用root登录后用eeprom才能修改口令。如果root口令也遗忘了,只能更换EPROM了。

推荐至少将OpenBoot设为Command模式。在严格限制安全条件时规定Full模式,但在这时需要牢记OpenBoot口令,否则会造成很大的麻烦。

 

文件系统安全

 

文件和目录的权限

Unix系统中的文件权限,是指对文件(或者目录)的访问权限,包括对文件和目录的读、写、执行。我们要注意这三种权限在文件与目录上的不同作用。

请检查自己的Solaris服务器的下列文件权限是否正确:

◆ /etc下的所有文件:/etc中的文件不需要可写,应设为只读,chmod g-w /etc/*。

◆ /etc/inetd.conf:所有者为root,访问权限是可读写。其他用户无任何权限。

◆ /etc/services:确保文件所有者是root,可读写。其他人可读。

对于root用户新创建的文件与目录,注意在没有必要的情况下,一定要使任何一个用户没有访问的权限。超级用户的权限最好设置为077。如果某些文件或者目录需要被别人访问,生成后再修改权限就行了。麻烦一点总比被攻击好。

SetUID与SetGID权限

在Solaris中,文件除了读、写、执行权限外,还有一些特殊权限,SetUID和SetGID是其中的一类。它与Solaris系统的安全关系紧密。 SetUID是指设置程序的有效的执行用户身份(UID)为该文件的主人,而不是调用该程序的进程的uid。SetGID与之类似。SetUID和SetGID存在于主人和属组的执行权限的位置上。

这种权限怎么用? 举个例子来说,假如某一命令(程序)的主人是root用户,并且该文件有SetUID属性,但是该文件的读、写、执行权限的属性表明普通用户user1可以执行该命令,那么就表示:当user1执行该命令时,他具有root的执行身份,并获得相应的权限。一旦该命令执行完成,root身份也随之消失。

有些文件是不能有SetUID权限的,比如cat、more、vi、tail等可以起显示和编辑作用的命令。如果有的话会产生什么效果?就会让普通用户看到他本不应该看到的文件,如/etc/shadow,这里存放着所有用户加密后的口令。一旦黑客得到root的口令加密串,然后利用一台性能好的计算机可以在几天时间内就把root口令算出来,从而非法提升权限。

如果/bin/ksh这样的外壳程序有SetUID权限就更不得了了,普通用户执行后就马上成为超级用户了。

 

查找特定权限的文件

在黑客攻击了系统之后,往往会修改一些文件与目录的属性,来达到留后门和其他的目的,我们可以通过下列的手段来找出这些文件,消除隐患。

在当前目录及其子目录查找所有的SetUID文件:

# find  /  -perm  -4000  -print

在当前目录及其子目录查找SetGID的文件:

# find  /  -perm  -2000  -print

在当前目录及其子目录查找所有用户都可写的文件:

# find  /  -perm  -o+w  -print

查找属于某个用户的文件,这在确定一个账户被非法使用后是很有用的:

# find  /  -user  xyd  -print

使用这个命令可以列出系统中所有属主是用户xyd的文件。

 

账号与密码

黑客要非法地访问一台计算机,最简单的办法是盗取一个合法的账号,这样就可以令人不易查觉地使用系统。在Solaris系统中默认有不少账号安装,也会建立新的个人用户账号,系统管理员应对所有的账号进行安全保护,而不能只防护那些重要的账号,如root。

无用和长期不用的账号对系统来说是一种负担,也容易为黑客提供入侵的途径。为了整体的安全,应关闭这些账号,直接在/etc/passwd和/etc/group中把相应的行注释掉就可以了。在默认设置下,系统中有这些用户与组需要关闭:

需要关闭的用户:

daemon、bin、sys、adm、lp、uucp、nuucp、listen、nobody、nobody4、noaccess。

需要关闭的组:

sysadmin(14)、sys(3)。        

在Solaris中可以使用/etc/default/passwd文件来保护账号的安全,下面给出了一些推荐值:

◆ MINWEEKS=1    # 最短改变口令时间为1周之后;

◆ MAXWEEKS=4    # 最长改变口令时间为4周之内;

◆ WARNWEEKS=3 # 3周的时间给出密码过时警告;

◆ PASSLENGTH=6  # 最短口令长度为6。

密码的设置应按照一定的规则。在Solaris系统中,为了强制用户使用合格的口令,用户修改口令时默认要求必须最少有6个字符,而且至少包括一个数字或者特殊字符。不过要注意在以root的身份进行密码修改时是不受这个限制的。

下面是在进行密码设置时推荐的一些注意事项:

◆ 密码至少应有6个字符。(在/etc/default/passwd中定义);

◆ 密码至少应该包含2个英文字母及一个数字或特殊符号;

◆ 密码应与用户名完全不同,且不能使用原有名称的变化(如反序、位移等,因为系统在做比较时忽略大小写);

◆ 新旧密码至少有3个字符不相同(因为系统在做比较时忽略大小写)。

 

用passwd命令设置账号

利用passwd命令,除了可以修改口令外,还可以进行一些口令方面的参数设置:

◆ -s : 列出口令的参数;

◆ -l : root锁定一个用户;

◆ -d : root删除一个用户的口令;

◆ -n : root设置一个用户的最短修改密码时间;

◆ -x : root设置一个用户的最长修改密码时间;

◆ -w : root设置一个用户的修改密码警告时间。

 

 设置账号组信息

在Solaris中,用户在/etc/passwd文件中规定的组是主组,他还可以同时属于其他组。这个属性在/etc/group中可以查到。下面是有关用户组的一些命令:

◆ newgrp:切换成新的用户组。

◆ groups:显示所属的用户组。

◆ id:显示用户的身份,包括UID、GID、用户组等信息。

 

su命令

切换用户的命令su可以使一个用户切换为另一个用户而不必退出。在使用时,系统会提示输入将要切换为的用户密码。按^D或exit返回。

可以使用/etc/default/su文件管理su的参数:

◆ SULOG=/var/adm/sulog #log文件记录;

◆ PATH=/usr/bin: #新用户默认PATH;

◆ SUPATH=/usr/sbin:/usr/bin ;

◆ SYSLOG=YES    #记录log。

如果可能的话,使用sudo代替su命令,这样可以减少特权命令被滥用的情况。

 

root账号的安全

root账号是黑客攻击的最终目标,有了root账号,黑客可以不受限制地访问系统中的所有文件和资源,也可以成为任何一个用户。

在/etc/default/login中添加Console=/dev/console即可限制root只能在控制台上直接登录。

 

cron安全

系统中,在很多时候需要不断重复一些命令,例如某公司每周一自动向员工报告上一周公司的活动情况,这时就需要使用cron命令来完成任务。cron常有的安全问题有:

◆ 没有充分屏蔽cron运行的程序

root用户的cron中运行的脚本和程序不应被其他用户读到,更不能被修改。

◆ cron的PATH不安全

存在不安全和不确定的PATH。在/etc/default/cron中和程序本身的PATH都不应该有不安全的PATH,这会导致黑客在这些PATH中添加自己的程序,与cron所要执行的命令名称相同;同样地,如果cron的PATH中存在着”~”“.”等不确定的PATH,也可以为类似的攻击手段留下可能。要检查crontab,不使其中留下这样的路径。

◆ 用户的crontab放在其他用户可以看到的目录

这会使其他用户查看并分析这些cron的条目,进行对相应漏洞的攻击。

◆ cron.allow与cron.deny

在进行cron设置的时候,应该使用root权限对/etc/cron.d/cron.allow和/etc/cron.d/cron.deny进行限制,允许和禁止相应的用户使用crontab命令。

 

文件与进程检查工具 fuser与lsof

fuser:这是系统中自带的命令,它可以查找出哪个进程在使用文件。它可以用来在删除或者重命名文件之前检查是否有某个进程打开了这个文件,并且在不能卸载一个文件系统的时候,作为查找故障的工具查看是哪些进程打开了这个文件。

fuser的模式:

c         进程的当前工作目录

r         进程的根目录(装入点目录)

o         打开的普通文件

m         内存映射文件

t         程序的代码

y         程序的控制终端

lsof

列出系统中所有打开的文件及其被那些进程所打开,由此查出被可疑进程打开的文件。

lsof可以列出Unix系统中的所有打开的文件,并且显示它们是被哪些进程打开的。这个工具可以用来帮助确定黑客或者他们的进程是否在读写他们本不应该访问的文件。使用“lsof”命令管理员可以查看进程、进程UID(包括sniffer、IRC、login shell)、网络连接和所有当前被打开的文件(如显示sniffer的log文件、工作目录等信息)。

 

安全检查工具COPS

COPS是一个安全性的软件包,它可以在系统上检查一些已知的缺陷,并且向系统管理员报告这些缺陷。COPS包含这样一些在系统中检查已知缺陷的工具包:

◆ dir.chk、file.chk:扫描所有用户可写的系统文件和目录。

◆ dev.chk:扫描系统设备目录。

◆ home.chk、user.chk:检查所有用户可写的用户主目录。

◆ root.chk:扫描所有用户可写的root的登录文件、路径、umask和hosts.equiv。

◆ suid.chk:扫描系统中的新的SetUID程序。

在使用COPS时,最好是定期运行它。至少一周运行一次,在重要的服务器和经常改变配置的服务器上最好每天都运行它,甚至每天运行两次。COPS可以检查到两次运行之间文件和目录权限发生的变化。了解到这些变化以后,系统管理员就可以有的放矢地找出漏洞。

 

安全检查工具Tiger

类似于COPS,Tiger也是一个系统安全性的检查工具。它可以检查系统内一些已经存在的漏洞并向系统管理员报告。它使用时比较简单,只要解压缩包后运行就可以了。

文章转载地址:http://www.365master.com/kt_article_show.php?article_id=632&categ_code=10041003

0
相关文章