unix系统安全管理.ppt 57页
Unix 安全管理-用户权限( 1 ) ? umask 命令umask 设置用户文件和目录的文件创 建缺省屏蔽值 , 若将此命令放入。 profile 文件 , 就可控制该用户后续所建文件的存取 许可。 umask 命令与 chmod 命令的作用正好 相反 , 它告诉系统在创建文件时不给予什么 存取许可。Unix 安全管理-用户权限( 2 ) ? 设置用户 ID 和同组用户 ID 许可户 ID 许可 (SUID) 设置和同组用户 ID 许可 (SGID) 可给予可执行的目 标文件 ( 只有可执行文件才有意义 ) 当一个进程执行时就被赋于 4 个 编号 , 以标识该进程隶属于谁 , 分别为实际和有效的 UID, 实际和有效的 GID. 有效的 UID 和 GID 一般和实际的 UID 和 GID 相同 , 有效的 UID 和 GID 用 于系统确定该进程对于文件的存取许可 . 而设置可执行文件的 SUID 许 可将改变上述情况 , 当设置了 SUID 时 , 进程的有效 UID 为该可执行文件 的所有者的有效 UID, 而不是执行该程序的用户的有效 UID, 因此 , 由该 程序创建的都有与该程序所有者相同的存取许可 . 这样 , 程序的所有 者将可通过程序的控制在有限的范围内向用户发表不允许被公众访问 的信息 . 同样 ,SGID 是设置有效 GID. 用 chmod u+s 文件名和 chmod u-s 文件名来设置和取消 SUID 设置 . 用 chmod g+s 文件名和 chmod g-s 文件名来设置和取消 SGID 设置当文件设置了 SUID 和 SGID 后 chown 和 chgrp 命令将全部取消这些许可 .Unix 安全管理-网络配置安全( 1 ) ? 关闭服务关闭系统上的一些服务,最常见的服务是 FTP 和 TELNET 。 FTP :用于文件传输,但是如果用户的系统只想从别的机 器上获取文件,就没有必要提供该项服务。可以从 /etc/inetd.conf 文件中将对应的项注释掉(在该行的行首 加上“ # ”符号即可)。TELNET :明显的安全威胁之一(建议用户使用 TCP_Wrapper 来限制访问权限,提高该项服务的安全性)。 要确保只有真正需要的服务才被允许外部访问。Unix 安全管理-网络配置安全( 2 ) ? r 命令r 命令是由 Berkley 开发的一系列命令软件。由 于这些命令都是以“ r ” 开头,因此统称为 r 命令(例 如 rlogin 和 rsh 等等)。这些服务充满了漏洞。尽量 少的使用这些命令,这可以减少系统的口令暴露在网 络监听程序之下的可能性。如必须执行 r 命令,建议 用户针对特定的需求使用更安全版本的 r 命令。 Wietse Venema 的 logdaemon 程序包含有更安全版本的 r 命令守护进程。建议使用 TCP_Wrapper 来提高系统的 安全性,并能对系统的被访问情况做更完善的记录。Unix 安全管理-网络配置安全( 3 ) ? /etc/hosts.equiv 文件 检查系统是否需要 /etc/hosts.equiv 文件。 这样的命令能从一个被信任的主机上不需口令 地访问系统。 如果不允许 r 命令服务或者不希望对其他系统 加以信任,则应该去掉该文件,即删除该文件 。如果该文件不存在,即使不小心允许了 r 命 令服务,也不会造成安全问题。Unix 安全管理-网络配置安全( 4 ) ? /etc/netgroup 文件 如果使用 NIS (也称 YP )或 NIS+ ,一定要在该 文件中的每个 netgroup 中设置成只包含 usernames 或只包含 hostnames 。所有的工具程 序都只分析该文件中的 hosts 或 usernames ,但 没有对这两个部分都做分析。使用独立的 netgroups 会使记忆每个 netgroup 的功能变得 简单。配置这些额外的 netgroups 所付出的时 间与使系统置于不安全的状态相比,这个付出 还是值得的。Unix 安全管理-网络配置安全( 5 ) ? $HOME/.rhosts 文件确保任何用户在他们的 $HOME 目录下都没有 .rhosts 文件存在。这些文件比 /etc/hosts.equiv 会造成更大的安全漏洞,因 为任何系统上的用户都可以创建该文件。 Unix 安全管理-网络配置安全( 6 ) ? NFSNFS 是最重要的也是最脆弱的网络服务,因为它提供 了完全的对文件和目录的访问,安全漏洞在于难维护性、 控制的非精确性,以及没有用户验证机制。任一台主机都可以做 NFS 服务器或者 NFS 客户,或者 二者兼而有之。用户最常犯的错误只是简单的 NFS 设置错误,设置有 错误的 NFS 主机到处都是。由于 NFS 对用户的认证非常简单,并且对 NFS 设置错 误的例子比比皆是。因此 NFS 对网络安全的危害是非常巨 大的。Unix 安全管理-网络配置安全( 7 )首先,对可以安装调出文件卷的主机没有限制,将使 得任何主机都可以安装,因此攻击者所在的主机也一样可 以安装它。即使没有其它权限,攻击者通过这一步便已看 到了系统的许多信息。其次,没有明确地设置调出文件卷为只读unix系统管理,则调出文 件卷在客户端缺省为可读、可写。这时候攻击者便可以增 加,修改,删除或替换 NFS 服务器上的文件。需要明确指 出的是,调出文件卷缺省为可写。Unix 安全管理-网络配置安全( 8 )第三,许多主机常常将 NFS 服务器上的系统信箱和用 户主目录所在的目录调出。 安装这些目录的用户 ( 攻击者 ) ,只要具有文件属主的 UID 和 GID ,便可以阅读这些文件 。这只要攻击者在本机是超级用户,那么他便可以用 su 命 令变成任何普通用户,或者诸如 bin 这类的特殊用户。第四,有一些系统甚至将 NFS 服务器上的根目录调出 ,这等于是将系统送到别人眼底,系统的一切秘密暴露无 疑。攻击者只需用命令“ su bin” 变成 bin 用户,或者与 root 同组的用户,便可以替换系统一些启动时的文件,或者在 /(root 用户的主目录 ) , /bin(bin 用户的主目录 ) 下增加一个 .rhosts 文件,系统已经为外来用户敞开了大门。Unix 安全管理-网络配置安全( 9 )对 NFS 的攻击总是从 showmount 命令开始的,通过这一命令,攻 击者可以查明目标主机是否存在配置上的漏洞。 NFS 是网络攻击最流 行的方法之一。 NFS 服务的攻击示意如下:A 机文件系统 B 机文件系统 bin usretcbin usretc File1file2file3 符号连接 Unix 安全管理-网络配置安全( 10 ) 设置 NFS 时要注意的一些安全事项: ? 限制可安装调出文件卷的客户机及可安装的目录。 ? 如果可能,将文件系统以只读方式调出去。 ? 对调出的文件及目录设置为 root 所有。 ? 不要将服务器的可执行文件调出。 ? 不要将用户目录调出。 ? 使用安全的 NFS 。 ? 最后一点,最好不要使用 NFS 。Unix 系统安全 管理内容简介 ? UNIX/LINUX 简介? Unix 安全问题分析? Unix 安全管理 Unix 发展过程 ? Unix 是在麻省理工学院 (MIT) 在 1965 年开发的分时操作系统 Multics 的基础上演变而来。 ? 1969 年,在 AT&T 贝尔实验室, Thompson 和 Ritchie 在其他的研究人员 协助下在 PDP-7 上开发了一个小的 16 位分时系统 ? 1971 年, UNIX 移植到 PDP-11 上,第一次得到实用。此时的系统全部用 汇编语言写成 ? 1973 年用 C 语言重写 UNIX 核心,系统变得极为便于理解、修改和移植 ? 1980 年贝尔实验室推出 UNIX32V , Berkeley 在此基础上推出了 BSD4.0 和 BSD4.1 版本 ,从此 Unix 分为 AT&T 和 Berkeley 两条道路 ? 1988 年成立了以 AT & T 和 Sun 等公司为代表的 UI(UNIX International) 和以 DEC 、 IBM 等公司为代表的 OSF(Open Software Foundation) 两个 Unix 标准化组织Unix 特点 ? 极强的可移植性 ? 可靠性强,可以每天 24 小时不间断运行 ? 一致的文件、设备和进程间的 I/O ? 可装卸的树型分层结构文件系统 ? 多用户的分时操作系统,即不同的用户分 别在不同的终端上,进行交互式地操作, 就好像各自单独占用主机一样。 Unix 结构 硬件 核心 用户 Unix 系统基本知识( 1 ) ? 超级用户在 Unix 系统中有一个名为 root 的用户,这个用户在系统上拥有最 大的权限,即不需授权就可以对其他用户的文件、目录以及系统文件 进行任意操作。$ su –然后输入 passwd 可以得到 # ? 文件属性为保护每个用户的私人文件不受他人非法修改,系统为每个文件 和目录都设定了属性,如下所示:-rw-r--r-- l root wheel 545 Apr 4 12:19 file1r 表示可读, w 表示可写, x 表示可执行。最前的 - 可以是 d ,表示 是子目录。这里可以读为 644 。可以用 chmod 命令改变文件属性。Unix 系统基本知识( 2 ) ? ShellShell 是用户和 Unix 系统内核之间的接口程序。在提示符下输入 的每个命令都由 Shell 先解释然后传给 Unix 内核。可以简单地认为 Shell 就是 Unix 的命令解释器,相当于 DOS 中的 COMMAND.COM 。? 输入 / 输出重定向重定向用于改变一个命令的输入 / 输出源。 “ < ”和“ > ”符号用 于把当前命令的输入 / 输出重走向为指定的文件。 如cat passwd > mypasswd ,相当 cp passwd mypasswd ? 管道管道可以把一系列命令连接起来。这意味着第一个命令的输出会 通过管道传给第二个命令而作为第二个命令的输入,第二个命令的输 出又会作为第三个命令的输入,以此类推。如 ls – al |more. Linux 发展过程 ? 1990 年,芬兰赫尔辛基大学学生 Linus Torvalds 用汇编语言在 80386 保护模式下写的 Unix 系统雏形 ,为 Linux 0.0.1 版本 ? 1991 年 10 月, Linux v.0.0.2 发布 ? 1993 年, Linux 1.0 诞生 ? Linux 加入 GNU 并遵循公共版权许可证 (GPL) ,大大 加强了 GNU 和 Linux ,出现了许多 Linux 发行版: Slackware 、 Redhat 、 Suse 、 TurboLinux 、 OpenLinux 等 Linux 特点( 1 ) ? 与 Unix 高度兼容Linux 是一种完全符合 POSIX.l 等国际标准的 操作系统,它和大部分商业 Unix 操作系统保持高 度的兼容性,几乎所有的 Unix 命令都可以在 Linux 下使用。 ? 高度的稳定性和可靠性Linux 是一种完全 32 位的操作系统,具备完 善的多任务机制。Linux 特点( 2 ) ? 完全开放源代码,价格低廉Linux 符合 GNU 通用公共版权协议,是自由软件,它的 源代码是完全开放的,可以免费得到,这对于系统安全人 员来说是非常重要的,因为阅读源代码是发现系统漏洞的 最主要方法。而且与各种商业操作系统相比, Linux 发行 版价格低廉,还可以免费获得其他版本的 Linux 。 ? 安全可靠,绝无后门由于源代码开放,用户不用担心 Linux 中会存在秘密 后门,而且任何错误都会被及时发现并修正,因此 Linux 可以提供极高的安全性。内容简介 ? UNIX/LINUX 简介? Unix 安全问题分析? Unix 安全管理 Unix 安全问题-环境变量( 1 )程序员在编写具有一些特殊用户权限的代 码(如超级用户权限)时要用到许多技术 。本质上 ,要确保用户不能控制程序执行 的环境,而且所有返回的错误状态都应给 予适当的处理。这些技术也不仅限于特权 代码的编写,它更是良好的编程习惯。这 些技术包括初始化操作环境、检查所有系 统调用的返回码以及内部分析检查所有的 参数。 Unix 安全问题-环境变量( 2 ) 输入域分隔符 IFS一种攻击的方法是通过输入域分隔符( IFS ) Shell 变 量得逞的。该变量用于决定传给 Shell 的字符串的分隔符 。例如一个程序调用函数 system() 或 popen() 来执行一个 命令,那么该命令首先由 Shell 来分析。如果执行的用户 可以控制 IFS 环境变量,这可能会导致不可预测的结果。典型的例子是:如果程序执行代码 system(\/bin/ls-l), 同时 IFS 变量被设置为包含“ / ”的 字符,而一个恶意的程序被命名为 bin 并放在用户的 PATH 内,则该命令会被解释成 bin ls-l, 它执行程序 bin 并带有 两个参数 ls 和 -l 。因此一个程序不该用 system(),popen(),execlp() 或 execvp() 函数来运行其他 程序。Unix 安全问题-环境变量( 3 ) HOME另外一个环境攻击的方法是通过使用 HOME 环 境变量。通常, csh 和 ksh 在路径名称中用字符 “ ~ ”代替该变量。 因此,如果一个入侵者能改 变该值,就能利用一个使用字符“ ~ ”作为 HOME 命 令的 Shell 文件业得逞。 例如,如果一个 Shell 文件用 ~/.rhosts 或 $HOME/.rhosts 指向用户指定的文件,就有可能通 过在执行命令前重置 HOME 来搞破坏活动。Unix 安全问题-环境变量( 4 ) PATH 用 PATH 的攻击方法特征是利用 PATH 环境变量文件路径的值和 顺序。不合理的路径顺序会导致意外的结果 —— 如果执行的 命令不是以绝对路径方式执行。例如下面的 PATH 指定方法:PATH=./:/usr/bin:/bin:/sbin 。如果有人在当前路径,它 就会比 /bin/ls 的执行优先级高。如果该文件包括以下内容 :#!/bin/sh(/bin/cp /bin/sh /tmp/.secret 2>/dev/nullrm -f $0exec /bin/ls $0该段代码会暗中创建一个 /bin/sh 的拷贝,它在执行时会以执行该 文件的用户的身份被执行。此外,它消除证据,使用户在执行该命令 时感觉不到是在执行另外一个程序。Unix 安全问题-环境变量( 5 ) umask 值umask (默认的文件保护掩码)的设 置经常是不正确的。许多程序没有检查 umask 的值,而且经常忘记指定新建文件 的保护掩码值。 即使该程序创建了一个文 件,也忘记改变其保护模式而使之安全。 入侵者可以利用这一点,更改可写的文件 。因此,在建立任何文件之前,要先建立 一个 umask 值。Unix 安全问题-程序代码漏洞( 1 )许多入侵者通过研究一些程序的源代 码而达到攻击目的。通常,这种源代码可 以免费下载得到,这使得许多人可以研究 它,并找到里面潜在的漏洞。这种攻击方 法在 6 年前还很少见,如今却非常普遍。从 某种意义上讲,这也是一种好事。因为它 促进一些软件错误的改正,也使一些软件 编程方法为人们所了解。Unix 安全问题-程序代码漏洞( 2 ) ? 缓冲区的溢出不好的编程习惯也会导致软件的安全漏洞。 一个典型的利用该漏洞的例子是 Morris 蠕虫。该 漏洞是系统调用 gets() 在执行时不检查参数的长 度,而 fgets() 系统调用没有这个问题。这使得 在用户的控制下缓冲区会溢出,因此程序会出现 不可预测的结果。另外还有几个系统调用也存在 同样的漏洞,它们是:scanf(),sscanf(),fscanf() 和 sprintf() Unix 安全问题-程序代码漏洞( 3 ) ? 状态返回值另一个经常存在的漏洞是不检查每个 系统调用的返回值。 这意味着入侵者如果 可以控制程序运行环境,就能调用一个失 败的系统,而调用在用户程序中却认为是 永远会正确招待的。这会使用户的程序出 现不确定的结果。 Unix 安全问题-程序代码漏洞( 4 ) ? 捕捉信号在很多情况下,程序员编写的程序不捕捉它 可以接收的信号,因此执行的结果会有异常情况 。这允许一个入侵者设置其 umask 为某个值,之后 向一个特权(具有特殊用户权限)程序发送一个 信号 —— 该信号使特权程序产生 core 文件(有的 系统不允许产生 core 文件)。此时该 core 文件的 所有者是执行该程序的 UID ,但是它的保护掩码是 由 umask 设置的。 Unix 安全问题-特洛伊木马特洛伊木马与一般用户想要执行的程序从外观上看 (如文件名)很相似,例如:编辑器、登录程序、或者游 戏程序。这种程序与一般用户想要执行的程序很相似,而 它实际上完成其他操作(例如删除文件、窃取口令和格式 化磁盘等)。等用户发现,却为时已晚。特洛伊木马可以出现在许多地方。它们可以出现在 被编译过程序中,也可以出现在由系统管理员执行的系统 命令文件中。其他的特洛伊木马包括作为消息(例如电子 邮件或发给终端的消息)的一部分发送。 一些邮件头 (mail header) 允许用户退到外壳 (shell) 并执行命令,该 特性能在邮件被阅读的时候被激活。给终端发送特定的消 息能在终端上存储一个命令序列,然后该命令被执行,就 好象从键盘上敲入一样。编辑器初始化文件(如, vi 对应 的 .exrc 文件)也是经常存放特洛伊木马的地方。Unix 安全问题-网络监听和数据截取计算机安全面临的一个威胁是计算机之间传输的数 据可以是很容易被截取到的。过去在大型主机时代,这不 是威胁,因为在这种系统上数据传输是处于系统控制之下 的。但由于异构系统互联,敏感数据的传输会处于系统的 控制之外。有许多现成的软件可以监视网络上传输的数据 。特别脆弱的是总线型网络(例如:以太网),这种网络 上发送给每个特定机器的数据可以被网络通路上的任何机 器截取到。这意味着任意数据可以被截取并用于不同的目的。 这里不仅仅包括敏感数据,还协议交换(例如登录顺序, 包括口令)。数据截取并不一定要从网络本身截取。通过 在网络软件上或应用程序上安装特洛伊木马,就能截取数 据并保存到磁盘上以备后用。 Unix 安全问题- 软件之间的相互作用和设置本质上,计算机安全受威胁的根本原因是计算机系 统和运行的软件越来越复杂。 任何一个人都不可能编写整 个系统,因此也无法预测系统内部每个部分之间的相互作 用。例如 :/bin/login 接收其他一些程序的非法参数的问 题。除了系统内软件相互作用的复杂性,程序员也为系 统管理员提供了多种选择。配置系统是如此复杂,以至于 简单的配置错误可能导致不易觉察的安全问题。目前有一 种趋势,即用电子方法来检测攻破系统的能力 —— 既从系 统外部又从系统内部检测。但是,这种方法只能检测已知 安全问题,而不能测出新的安全问题。 内容简介 ? UNIX/LINUX 简介? Unix 安全问题分析? Unix 安全管理 Unix 安全管理-综述( 1 ) ? Unix 系统的安全管理主要分为四个方面:( 1 )防止未授权存取:这是计算机安全最重要的问题, 即未被授权使用系统的人进入系统。用户意识、良好的口 令管理 ( 由系统管理员和用户双方配合 ) 、登录活动记录和 报告、用户和网络活动的周期检查、这些都是防止未授权 存取的关键。( 2 )防止泄密:这也是计算机安全的一个重要问题。防 止已授权或未授权的用户存取相互的重要信息。文件系统 查帐, su 登录和报告,用户意识,加密都是防止泄密的关 键。 Unix 安全管理-综述( 2 )( 3 )防止用户拒绝系统的管理:这一方面的安全应由操 作系统来完成。一个系统不应被一个有意试图使用过多资 源的用户损害。不幸的是, UNIX 不能很好地限制用户对资 源的使用,一个用户能够使用文件系统的整个磁盘空间, 而 UNIX 基本不能阻止用户这样做。系统管理员最好用 PS 命 令,记帐程序 df 和 du 周期地检查系统。查出过多占用 CPU 的进程和大量占用磁盘的文件。( 4 )防止丢失系统的完整性:这一安全方面与一个好系 统管理员的实际工作 ( 例如:周期地备份文件系统,系统 崩溃后运行 fsck 检查,修复文件系统,当有新用户时,检 测该用户是否可能使系统崩溃的软件 ) 和保持一个可靠的 操作系统有关 ( 即用户不能经常性地使系统崩溃 ) 。防范缓冲区溢出据统计,约 90% 的安全问题来自缓冲区溢出。攻击者通过写一个超过 缓冲区长度的字符串,然后植入到缓冲区,可能会出现两个结果,一 是过长的字符串覆盖了相邻的存储单元,引起程序运行失败,严重的 可导致系统崩溃;另有一个结果就是利用这种漏洞可以执行任意指令 ,甚至可以取得系统 root 特级权限。 一些版本的 Unix 系统(如 Solaris 2.6 和 Solaris 7 )具备把用户堆栈设成不可执行的功能,以使这 种攻击不能得逞。以下是让这个功能生效的步骤:1 )变成 root 2 )对 /etc/system 文件做个拷贝 cp /etc/system /etc/system.BACKUP 3 )用编辑器编辑 /etc/system 文件4 )到文件的最后,插入以下几行:set noexec_user_stack=1set noexec_user_stack_log=15 5 )保存文件,退出编辑器后,重启机器,以使这些改变生效。可能 有些合法使用可执行堆栈的程序在做如上改变后不能正常运行,不过 这样的程序并不多。Unix 安全管理-口令安全 ? 不要将口令写下来 . ? 不要将口令存于终端功能键或 MODEM 的字符 串存储器中 ? 不要选取显而易见的信息作口令 . ? 不要让别人知道 . ? 不要交替使用两个口令 . ? 不要在不同系统上使用同一口令 . ? 不要让人看见自己在输入口令 . Unix 安全管理-文件权限文件属性决定了文件的被访问权限 , 即谁能 存取或执行该文件。 文件许可权可用于防 止偶然性地重写或删除一个重要文件 ( 即使 是属主自己 ) 。改变文件的属主和组名可用 chown 和 chgrp, 但修改后原属主和组员就无 法修改回来了。Unix 安全管理-目录 ? 目录许可在 UNIX 系统中 , 目录也是一个文件 , 用 ls -l 列出时 , 目录文件的属性前面带一个 d, 目录许可也类似于文件许可 , 用 ls 列目录要有读许可 , 在目录中增删文件要有写许可 , 进入目录或将该目录作路径分量时要有执行许可 , 故要 使用任一个文件 , 必须有该文件及找到该文件的路径上所 有目录分量的相应许可 . 仅当要打开一个文件时 , 文件的 许可才开始起作用 , 而 rm,mv 只要有目录的搜索和写许可 , 不需文件的许可 , 这一点应注意。 (编辑:52站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |