490 likes | 709 Views
第 20 章 安全与用户管理. 内容概要. 用户和组的概念 , 解释如何以及何时这些应该被分配在系统上 描述 root 用户进入系统的验证方式 解释 SUID, SGID, 和 SVTX 扩展权限为的用途 管理员用户账号和组 明确用户和安全有关的文件. 用户账号. 每个用户都有唯一的 name, numeric ID, 和 password 文件的所有者由用户的 numeric ID 决定 一般文件的所有者就是创建文件的用户 , 但是所有权可以被传递给 root 用户 默认用户 : root 超级用户
E N D
内容概要 用户和组的概念,解释如何以及何时这些应该被分配在系统上 描述root用户进入系统的验证方式 解释SUID, SGID,和 SVTX 扩展权限为的用途 管理员用户账号和组 明确用户和安全有关的文件
用户账号 每个用户都有唯一的name, numeric ID, 和 password 文件的所有者由用户的numeric ID决定 一般文件的所有者就是创建文件的用户, 但是所有权可以被传递给root用户 默认用户: root超级用户 adm, sys, bin, ... 在系统文件中拥有用户ID但是 不能用来登录
组Group 组是用户集, 都需访问给定的文件集. 每一个用户最少属于一个组,但是也可以属于多个组. 用户可以访问一个文件如果用户的组集中的任何一个提供访问. 可以使用groups命令列出该用户所属组集. 用户的实际的组ID 被用在创建文件时的所有权. 修改用户实际的组ID, 可以使用newgrp命令. 系统中的默认组: 系统管理组: system 一般用户组:staff
组的层次结构 security system printq 有管理系统功能的权限 adm audit shutdown staff 一般用户
用户的层次结构 AIX 提供 admin users 和 admin groups用于保护来自security group的重要的用户和组 只有root可以增加,删除修改 admin user和admin group 任何用户都可被定义为管理员用户,无论其属于何组
root 账号的访问控制 限制访问特权登录 系统管理员应该经常不定期的更换root的密码 为不同的机器分配不同的root 密码 系统管理员应该以自己登录然后使用su切换到root 而不是直接以root登录. 这样便于追踪root的使用 不要将不安全的目录包含在root的 PATH路径中
安全日志 /var/adm/sulog su 活动的审计追踪 /var/adm/wtmp 成功登录的日志 /etc/utmp 列出当前登录的用户 /etc/security/failedlogin 登录失败的信息
文件和目录的权限 文件 目录 权限位 列出目录中的内容包括文件和目录 读权限 r 在目录中创建或者删除文件及目录 w 写权限 执行权即像命令一样使用文件名去执行 可以切换到该目录下 x 以所有者的有效的UID运行程序 SUID -------- 以所有者的有效的GID运行程序 该目录下创建的文件和目录继承该目录的组 SGID 只有文件所有者和root能删除该目录下的文件 …… SVTX
查看权限 # ls -ld /usr/bin/passwd /usr/bin/crontab /tmp -r-sr-xr-x root security ... /usr/bin/passwd -r-sr-sr-x root cron ... /usr/bin/crontab drwxrwxrwt bin bin ... /tmp
权限 owner group other x x r w r w r w x s t s S T S SUID SUID SGID SGID sticky sticky only + x only + x bit bit only + x
修改权限 2 4 1 SGID SUID SVTX group other owner r w x r w x r w x 4 2 1 4 2 1 4 2 1 $ chmod 7 7 7 file1 SUID 4 $ chmod 7 7 7 file1 SGID 2 $ chmod 7 7 7 dir1 SVTX 1 OR $ chmod u+s file1 SUID $ chmod g+s file1 SGID $ chmod +t dir1 SVTX
umask umask 控制新文件和目录的权限 系统默认 umask 值是022 推荐 umask 值是027 如果 umask 值设为022, 一般文件或是目录被创建时的权限如下: Ordinary file: rw-r--r-- Directory: rwxr-xr-x /etc/security/user 指定默认的和特定用户的 umask 值
修改所有权 ◆ 修改文件所有者 $ chown fred file1 ◆ 修改文件所属组 $ chgrp staff file1 ◆同时修改所有者和组: $ chown fred:staff file1 $ chown fred.staff file1
基于角色访问控制(RBAC) 细粒度的授权 角色被指派为用户或组的一个属性 遗留下来的RBAC (AIX V4.2+): User space implementation Role assignment alone was insufficient
基于角色访问控制(RBAC) 增强的RBAC (AIX 6.1): 包含用户和内核空间 有效地角色分配而不需要附加的设置 AIX 6.1 SP1 提供10个预定义角色 用户可以根据需要激活或者去活角色 用有效的角色创建子shell: $ swrole SysBoot
预定义增强的RBAC 角色 isso Information System Security Officer sa System Administrator so System Operator AccountAdmin User and Group Account Administration BackupRestore Backup and Restore Administration DomainAdmin Remote Domain Administration FSAdmin File System Administration SecPolicy Security Policy Administration SysBoot System Boot Administration SysConfig System Configuration
登录流程 Started by init getty port settings in ODM Login Settings in: /etc/security/login.cfg 用户输入用户名 用户输入口令 /etc/passwd 非法 验证用户名和口令 /etc/security/passwd 合法 /etc/environment Log entry in: /etc/security/environ /etc/security/failedlogin 设置环境 /etc/security/limits /etc/security/user 每日消息 /etc/motd $HOME/.hushlogin shell /etc/profile $HOME/.profile
用户初始化进程 LOGIN 建立基本的环境 /etc/environment 设置PATH, TZ, LANG, 和 NLSPATH 所有登录都运行的Shell脚本 设置TERM, MAILMSG, 和 /etc/profile MAIL 用户的个人定制文件 PATH, ENV, PS1 $HOME/.profile 用户定制的Korn shell 环境 set –o vi, alias $HOME/.kshrc
用户和安全性 $ smit security Security & Users Users Groups Passwords Login Controls Roles PKI LDAP Role Based Access Control (RBAC) Trusted Execution F1=Help F2=Refresh F3=Cancel F8=Image F9=Shell F10=Exit Enter=Do
用户管理 $smit users Users Add a User Change a User's Password Change / Show Characteristics of a User Lock / Unlock a User's Account Reset User's Failed Login Count Remove a User List All Users F1=Help F2=Refresh F3=Cancel F8=Image F9=Shell F10=Exit Enter=Do
列出所有用户 lsuser 命令: lsuser [-c | -f] [-a attribute …] {ALL | username …} ... 举例: $ lsuser –a id home ALL root id=0 home=/ daemon id=1 home=/etc …… $ lsuser –f user15 user15: id=217 pgrp=staff groups=staff home=/home/user15 shell=/usr/bin/ksh roles=
新建用户 $smit mkuser [TOP] [Entry Fields] * User NAME [] User ID [] # ADMINISTRATIVE USER? true + Primary GROUP [] + Group SET [] + ADMINISTRATIVE GROUPS [] + ROLES [] + Another user can SU TO USER? true + SU GROUPS [] + HOME directory [] Initial PROGRAM [] User INFORMATION [] EXPIRATION date (MMDDhhmmyy) [] [MORE...52]
修改/ 显示用户的特性 $ smit chuser Change / Show Characteristics of a User * User NAME george User ID [206] # ADMINISTRATIVE USER? false + Primary GROUP [staff ] + Group SET [staff,security] + ADMINISTRATIVE GROUPS [ ] + ROLES [ ] + Another user can SU TO USER? true + SU GROUPS [ALL] + HOME directory [/home/george ] Initial PROGRAM [/usr/bin/ksh ] User INFORMATION [ ] EXPIRATION date (MMDDhhmmyy) [0] Is this user ACCOUNT LOCKED? false + [MORE ...37]
删除用户 rmuser 命令或者 SMIT 可以被用来在系统中删除一个用户 $rmuser –p team01 当你删除一个用户的时候,用户的宿主home目录没有被删除 因此, 你必须记得手动的清空你删除的用户的宿主目录。 (记得先备份重要的文件!) $rm -r /home/team01
Password • 在分配密码之前,新的用户ID不可用 • 有两个命令可以用来修改密码: $passwd [username] $ pwdadm [username] • SMIT 调用 passwd 命令 • 普通用户可以用 passwd 命令修改自己的密码 • 只有root 用户或者 security 组成员可以修改其他用户的码
找回root用户密码 从CD-ROM, NIM, 或者 a bootable tape启动 选择option3: 从Installation and Maintenance 菜单启动 Maintenance Mode for System Recovery 随着options 激活 root 卷组并获得一段 shell 当shell起作用后, 执行passwd 命令改变root用户的密码 键入如下命令: # sync ; sync (同步) 重启系统
组管理 $smit groups Groups Move cursor to desired item and press Enter. List All Groups Add a Group Change / Show Characteristics of a Group Remove a Group F1=Help F2=Refresh F3=Cancel F8=Image F9=Shell F10=Exit Enter=Do
列出所有组 lsgroup命令: lsgroup [-c | -f] [-a attribute …] {ALL|groupname …} 举例: $ lsgroup ALL system id=0 admin=true users=root,test2 registry=compat staff id=1 admin=false users=ipsec,team01,team02,team03, team04,team05,test1,daemon registry=compat bin id=2 admin=true users=root,bin registry=compat sys id=3 admin=true users=root,bin,sys
增加一个组 $ smit mkgroup Add a Group * Group NAME [support] ADMINISTRATIVE group? false + Group ID [300] # USER list [fred,barney] + ADMINISTRATOR list [fred] + Projects [ ] + Initial Keystore Mode [ ] + Keystore Encryption Algorithm [ ] + Keystore Access[ ] +
修改/删除组 $smit chgroup Add a Group * Group NAME [staff] +
修改/删除组 Change Group Attributes Group NAME [staff] Group ID [1] # ADMINISTRATIVE group? false + USER list [ipsec,esaadmin> + ADMINISTRATOR list [] + Projects [] + Initial Keystore Mode [] + Keystore Encryption Algorithm [] + Keystore Access [] +
每日消息 文件 /etc/motd包含显示每次用户登录信息的文本 文件应该只包含在用户看来必要的信息 如果文件$HOME/.hushlogin 在用户的宿主目录中存在, 那么文件/etc/motd的内容对用户不可见
Security 文件 文件中习惯上包含用户的属性和访问控制信息: /etc/passwd 有效的用户 (而不是密码) /etc/group 有效的组 /etc/security 不能被普通用户访问的目录 /etc/security/passwd 用户密码 /etc/security/user 用户属性、密码、限制 /etc/security/group 组属性 /etc/security/limits 用户限制 /etc/security/environ 用户环境设置 /etc/security/login.cfg 登录设置
/etc/passwd文件 $ cat /etc/passwd root:!:0:0::/:/usr/bin/ksh daemon:!:1:1::/etc: bin:!:2:2::/bin: sys:!:3:3::/usr/sys: adm:!:4:4::/var/adm: uucp:!:5:5::/usr/lib/uucp: guest:!:100:100::/home/guest: john:!:200:0:x7560 5th floor:/home/john:/usr/bin/ksh bill:*:201:1::/home/bill:/usr/bin/ksh
/etc/security/passwd 文件 $ cat /etc/security/passwd root: password = 92t.mzJBjlfbY lastupdate = 885485990 flags = john: password = lastupdate = 884801337 flags = ADMCHG,ADMIN,NOCHECK
/etc/security/user 文件 $ cat /etc/security/user default: admin = false login = true su = true daemon = true rlogin = true sugroups = ALL admgroups = ttys = ALL auth1 = SYSTEM auth2 = NONE tpath = nosak umask = 022 expires = 0 ……
/etc/security/user 文件 default ... SYSTEM = "compat" logintimes = pwdwarntime = 0 account_locked = false loginretries = 0 histexpire = 0 histsize = 0 minage = 0 maxage = 0 maxexpired = -1 minalpha = 0 minother = 0 minlen = 0 mindiff = 0 maxrepeats = 8 dictionlist = pwdchecks =
/etc/group 文件 $ more /etc/group system:!:0:root,john staff:!:john bin:!:2:root,bin sys:!:3:root,bin,sys ... usr:!:100:guest accounts:!:200:john ...
/etc/group 文件 $ more /etc/security/group system: admin=true staff: admin=false accounts: admin=false adms=john projects=system
/etc/security/login.cfg文件 default: herald =“Authorized use only.\n\rlogin:" logintimes = logindisable = 0 logininterval = 0 loginreenable = 0 logindelay = 0 pwdprompt = "Password: " usernameecho = false
验证用户环境 pwdck 检验本地验证信息的有效性: pwdck {-n|-p|-t|-y} {ALL | username} 检验文件/etc/passwd 和文件/etc/security/passwd 两者是否一致以及 /etc/security/login.cfg 和 /etc/security/user的一致性 usrck 检验用户定义的有效性: usrck {-l|-b|-n|-p|-t|-y} {ALL | username} 验证每一个在/etc/passwd, /etc/security/user, /etc/security/limits 和/etc/security/passwd 中的用户 检验是用来保证可以访问/etc/group 和 /etc/security/group
验证用户环境 grpck 检验组的有效性: grpck {-n|-p|-t|-y} {ALL | groupname } 检验文件:/etc/passwd, /etc/security/user,/etc/group 和 /etc/security/group 是否一致
编制安全策略和设置 确认不同类型的用户以及他们需要访问的数据 根据用户的工作不同创建组 创建数据的所有权以符合组的结构 在共享的目录中设置SVTX 记住在UNIX/AIX 中没有application ownership 的概念 安全策略和设置
课堂练习 用普通用户登录后,再利用su转换到root权限的好处是什么? _____________________________________________________ _____________________________________________________ 为什么推荐将umask的值设为027? _____________________________________________________ _____________________________________________________ 作为security组成员,用什么命令去修改密码? __________________________________________________ SMIT菜单用什么命令修改密码? __________________________________________________ 对或错? 当你从系统中删除了用户,那么用户的所有的文件和目录都被删除了
如果普通用户忘记了密码那么管理员能找到用户设置的密码吗?为什么?如果普通用户忘记了密码那么管理员能找到用户设置的密码吗?为什么? 密码限制被下列哪个文件设置? /etc/passwd /etc/security/passwd /etc/security/restrictions /etc/security/user 下列哪个陈述是正确的? 一个用户只能属于一个组 一个security组的成员可以管理用户账户 管理员权限用户就是不能被任何除了root以外的用户管理的用户 命令 chmod g+s 设置文件的SUID权限 root 用户, 也就是通常说的超级用户,它的UID=0,GID=0 课堂练习
课堂练习答案 用普通用户登录后,再利用su转换到root权限的好处是什么? 所有执行su的用户的日志都会被保存在sulog文件中 为什么推荐将umask的值设为027? This 这个umask值除去了所有”other”类用户的访问权限这样增加了安全性 作为security 组成员,用什么命令去修改密码? pwdadm (这条命令对root用户密码或者正在修改密码的普通用户的旧密码不会立刻起作用) SMIT菜单用什么命令修改密码? Passwd 对或错? 当你从系统中删除了用户,那么用户的所有的文件和目录都被删除了
如果普通用户忘记了密码那么管理员能找到用户设置的密码吗?为什么?如果普通用户忘记了密码那么管理员能找到用户设置的密码吗?为什么? 不可以因为密码是加密的格式所以即使是管理员也不能找回用户的密码 密码限制被下列哪个文件设置? /etc/passwd /etc/security/passwd /etc/security/restrictions /etc/security/user 下列哪个陈述是正确的? 一个用户只能属于一个组 一个security组的成员可以管理用户账户 管理员权限用户就是不能被任何除了root以外的用户管理的用户 命令 chmod g+s 设置文件的SUID权限 root 用户, 也就是通常说的超级用户,它的UID=0,GID=0 课堂练习答案