Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18670834
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: 网络与安全

2008-05-31 21:08:33

第三部分 常见Unix安全设置方案
  3.1 Solaris 系列
  3.1.1 PROM OpenBoot 和物理安全
  3.1.1.1 OpenBoot安全级别
  none :不需要任何口令。所有OpenBoot设置都可以修改,任何人只要物理接触到主控台,就
  可以完全控制。command:除了boot和go之外所有命令都需要口令。full:除了go命令之外所
  有命令都需要口令。
  3.1.1.2 改变OpenBoot安全级别
  首先使用eeprom security-password 命令设置OpenBoot口令,然后在root登入状态使用eep
  rom security-mode=command命令改变安全级别为command或在OK状态:ok setenv security
  -mode=command的密码保护来实现。
  3.1.2 文件系统的安全
  3.1.2.1 基础知识
  文件系统是unix系统安全的核心。在unix中,所有的事物都是文件。Unix中的基本文件类型
  有正规文件、目录、特殊文件、链接、Sockets等等。这些不同类型的文件以一个分层的树结
  构进行组织,以一个叫"root"的目录为起始位置("/")。整个就是一个文件系统。每个文件对
  应一个"i节点","i节点"包括UID(文件拥有者)、GID(文件所在组)、模式(文件的权限)、文
  件大小、文件类型、ctime("i节点"上次修改时间)、mtime(文件上次修改时间)、atime(文件
  上次访问时间)、nlink(链接数)。它表示了文件的基本属性。
  大家注意到,"/"下有很多的目录,那么这些目录是干什么的呢?下面简要介绍一下目录结构
  。如下:
  /bin 用户命令的可执行文件
  /dev 特殊设备文件
  /etc 系统执行文件、配置文件、管理文件,主要是配置文件
  /home 用户起始目录
  /lib 引导系统以及在root文件系统中运行命令所需的共享库文件
  /lost+found 与特定文件系统断开连结的丢失文件
  /mnt 临时安装的文件系统(如光驱、软驱)
  /proc 一个伪文件系统,用来作为到内核数据结构或正在运行的进程的接口(用于调试)
  /sbin 只有root使用的可执行文件和只需要引导或安装/usr的文件
  /tmp 临时文件
  /usr 为用户和系统命令使用的可执行文件、头文件、共享库、帮助文件、本地程序(在/usr
  /local中)
  /var 用于电子邮件、打印、cron等的文件,统计文件,日志文件
  文件系统有多种类型,unix内核支持如下文件系统:
  1) ext2 固定和可移动磁盘都支持的一种高性能文件系统,用于linux
  2) msdos 由MS-DOS和Windows使用
  3) umsdos Linux使用的一种扩充的DOS文件系统,支持长文件名、权限设置
  4) iso9660 遵从ISO9660标准的CD-ROM文件系统
  5) hpfs High Performance Filesystem,高性能文件系统,OS/2使用
  6) minix 在Minux OS中使用,最早的Linux文件系统
  7) nfs 用来访问远程计算机中磁盘的网络文件系统
  8) swap 用作交换的磁盘分区
  3.1.2.2 文件权限
  文件权限是unix文件系统安全的关键。Unix中的每个用户有一个唯一的用户名和UID(用户ID
  号),每个用户属于一个或多个组。基本分组成员在/etc/passwd中定义,附加的分组成员在
  /etc/group中定义。例如,用户tiger的UID为225,分组为11(students),此外,他还是分组
  185(postgraduates)的成员。每个文件和目录有三组权限,一组是文件的拥有者、一组是文
  件所属组的成员、一组是其他所有用户。"r"表示可读,"w"表示可写,"x"表示可执行。一共
  9位(每组3位),合起来称为模式位(mode bits)。
  模式位通常由一列10个字符来表示,每个字符表示一个模式设置,第一个指明文件类型,如
  (d表示目录,-表示普通文件,l表示链接文件等等)。例如,用ls -l 命令显示如下:
  drwxr-xr-x 2 root root 1024 Aug 13 09:22 backup/
  -rw-r--r-- 1 root root 1824 Apr 21 18:45 client.c
  -rw------- 1 root root 65536 Apr 22 17:56 core
  -rw-r----- 1 root root 2351 Apr 22 14:01 cry1.bak
  -rwxr-xr-x 1 root root 27492 Apr 21 18:47 crypt*
  -rw-r----- 1 tiger tiger 2450 Apr 22 15:16 cryption_server.c
  -rw-r----- 1 tiger tiger 1544 Apr 22 15:02 myinclude.h
  -rwxr-xr-x 1 root root 8280 May 3 10:35 test*
  例如最后一行以"-"开始,表示test使一个普通文件,文件拥有者可以读写执行、本组其他成
  员可以读执行、其他用户可以读执行。我们可以用chmod和umask命令来改变权限,这很简单
  ,察看相应的帮助就知道怎么修改权限。
  3.1.2.3 SUID/SGID
  为什么要单独把他们从文件权限中分出来讲呢?因为,这是网络入侵者非常爱用的入侵入口
  。SUID表示"设置用户ID",SGID表示"设置组ID"。当用户执行一个SUID文件时,用户ID在程
  序运行过程中被置为文件拥有者的用户ID。如果文件属于root,那用户就成为超级用户。同
  样,当一个用户执行SGID文件时,用户的组被置为文件的组。例如,PS命令以SUID root运行
  ,他从系统内存中读取,这是一般用户不能做的。SUID程序代表了重要的安全漏洞,特别是
  SUID设为root的程序。
  Unix实际上有两种类型的用户ID。"real user ID"是在登录过程中建立的用户ID。 "effect
  ive user ID"是在登录后的会话过程中通过SUID和SGID位来修改。当一个用户运行一条命令
  时,进程继承了用户登录Shell的权限,这时"real user ID"和"effective user ID"是相同
  的。当SUID位被设置时,进程继承了命令拥有者的权限。例如普通用户运行passwd命令时,
  他能够修改/etc/passwd文件,尽管文件是属于root的。这成为可能是因为passwd命令以roo
  t的SUID权限运行。那么如何识别SUID程序呢?我们检查文件的权限模式,在它的第四位如果
  不是"x",而是"s",就是一个SUID程序。例如,ls -l /bin/su命令显示:
  -rwsr-xr-x 1 root root 14888 Aug 15 1999 /bin/su*
  表明su是一个SUID程序。
  Unix系统安全的一种典型攻击就是创建一个SUID是root的shell拷贝,然后把他隐藏。通过调
  用后门,攻击者就获得了root的权利。例如,某个系统管理员忘了关闭某个root的Shell,一
  个坏人经过运行如下命令:
  
  cp /bin/bash /home/badman/.bash; chmod 4777 /home/badman/.bash
  badman现在就有了一个bash的SUID root拷贝任其处理。他就有完整的root权限了。因此,系
  统管理员应该定期察看系统中有哪些SUID和SGID文件。用下面的命令可以实现:find / -ty
  pe f \( -perm -4000 -o -perm -2000 \) -ls
  当然,攻击者可以通过修改find命令来逃避检测,所以要运行专门的检测软件(如Tripwire)
  来进行检查。
  3.1.2.4 加密与验证
  Tripwire工具提出了使用密码校验和来确定文件是否经过了未认证的修改,加密技术可以用
  来保护机密文件甚至整个文件系统。加密是通过密钥将明文转化为一堆乱码的密文,从而起
  到保护文件内容的作用。Unix常用的加密算法有crypt(最早的加密工具)、DES(目前最常用的
  )、IDEA(国际数据加密算法)、RC4、Blowfish(简单高效的DES)、RSA等等。具体的加密算法
  这里不再阐明,需要了解请阅读Bruce Schneier的《应用密码学》一书。注意单向hash函数
  ,他处理任意长度的信息并返回一个固定长度的hash值(128位)。常用的有MD5、SHA、HAVAL
  、Snefru等等。单向hash函数经常和公开密钥算法一起来创建数字签名,提供身份证明。与
  传统的签名相比,数字签名还可以指出文件是否被修改过。
  PGP是unix下用来保护信息特别是电子邮件的工具。他使用IDEA算法为数据加密,使用RSA算
  法来进行密钥管理和数字签名,使用MD5来作为一个单向hash函数。其特点在于安全:不仅内
  容被伪装,连发送者的签名也加密。PGP还可以用来加密本地文件。现在常用的Linux下的PG
  P工具为:pgpe(加密)、pgps(签名)、pgpv(确认/解密)、pgpk(管理密钥)。请参考相应的帮
  助来使用。
  "特洛伊木马"的故事不知道大家听说过没有。古希腊人久攻特洛伊城不下,于是假装求和,
  送了一个巨大的木马作为礼物,向城主Minerva表示和解。特洛伊人将木马拉入城内,到了夜
  晚,藏在木马中的希腊士兵钻出来,里应外合,攻破特洛伊城。在计算机安全领域,这种欺
  骗技巧成为攻击计算机安全的一种标准方式。他藏在你的计算机里,随时可能爆发,如果攻
  击者需要的话。因此,一旦一个系统被装了特洛伊木马,他就不能在信任了,必须从新安装
  。怎么避免呢,要养成良好的习惯,例如:限制下载,只从有声望的站点下载东西;检验下
  载的文件;避免运行已编译好的二进制代码,从源代码开始编译;不执行不信任的电子邮件
  发送的程序;不执行从非信任的Web站点得到的Java applets和Java Script。
  MD5校验和有时与软件一起发行,用户可以用他来检验一个软件包。用户可以运行Red Hat L
  inux中包含的md5sum工具,例如:md5sum cops.1.04.tar.gz
  结果:lfa416872934e5bee99068f9989cb8b0 cops.1.04.tar.gz
  和软件包自带的校验和文件比较,如果不符,则说明文件在传输过程中出了问题,最好从新
  下载,本文件不可靠。md5sum还可以用来检验系统文件,在第一次安装系统之后对重要的li
  lo系统二进制文件进行一下校验:md5sum lilo,其结果应该一直保持不变,除非升级。
  3.1.2.5 完整性检查
  完整性是安全系统的核心属性。用户需要知道
阅读(373) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~