来源:小饭的沉默空间
[学Solaris时,整理的] 用户控制 登录帐户 GID 用法 root 0 几乎没有任何限制。可覆盖所有其他登录、保护和权限。root 帐户具有访问整个系统的权限。应该非常谨慎地保护root 登录口令。root 帐户(即超级用户)有权使用大多数Solaris 命令。 daemon 1 控制后台处理。 bin 2 有权使用部分Solaris 命令。 sys 3 有权访问许多系统文件。
adm 4 有权访问某些管理文件。 Lp 71 有权访问打印机的对象数据文件和假脱机数据文件。 uucp 5 有权访问UUCP(UNIX 对UNIX 复制程序)的对象数据文件和假脱机数据文件。 nuucp 9 供远程系统用于登录到系统并启动文件传输。 远
显示用户的登录状态 # logins -x -l username -x 显示一组扩展的登录状态信息。 -l username 显示指定用户的登录状态。变量username 是用户的登录名称。必须以逗号分隔的列表形式指定多个登录名称。 # logins -x -l root root 0 root 0 Super-User / /sbin/sh PS 082587 -1 -1 -1 Root用户的登录名称 0 用户ID (user ID, UID)。 0 标识用户的主组。 10 标识组ID (group ID, GID)。 / 标识用户的起始目录。 /sbin/sh 标识登录shell。 PS 082587 -1 -1 -1指定口令生命期信息: ■ 上次更改口令的日期 ■ 更改之间要求的天数 ■ 在该天数后必须更改 ■ 警告期
如何显示没有口令的用户 # logins –p -p 选项用于显示没有口令的用户列表。除非启用了名称服务,否则logins 命令将使用本地系统的口令数据库。
如何临时禁止用户登录 1在文本编辑器中创建/etc/nologin 文件。 # vi /etc/nologin 2添加有关系统可用性的消息。 3关闭并保存该文件。
如何监视所有失败的登录尝试 1.使用所需的SYSLOG 和SYSLOG_FAILED_LOGINS 值设置/etc/default/login 文件。 编辑/etc/default/login 文件以更改相应项。请确保取消对SYSLOG=YES 的注释。 # grep SYSLOG /etc/default/login # SYSLOG determines whether the syslog(3) LOG_AUTH facility # should be used SYSLOG=YES … SYSLOG_FAILED_LOGINS=0 # 2.使用正确的权限创建文件以保存日志信息。 a. 在/var/adm 目录中创建authlog 文件。 # touch /var/adm/authlog b. 在authlog 文件中,为root 用户设置读写权限。 # chmod 600 /var/adm/authlog c. 在authlog 文件中,将组成员关系更改为sys。 # chgrp sys /var/adm/authlog 3.编辑syslog.conf 文件以记录失败的口令尝试。 这些失败应发送到authlog 文件。 a. 在syslog.conf 文件中键入以下项。 使用制表符分隔syslog.conf 的同一行中的字段。 auth.notice <按Tab 键> /var/adm/authlog 4. 刷新syslog 守护进程的配置信息。 # svcadm refresh system/system-log 5. 检验日志是否正常工作。 # more /var/adm/authlog Apr 16 12:00:50 suoetc sshd[1063]: [ID 800047 auth.notice] Failed keyboard-interac tive for root from 192.168.2.11 port 1806 ssh2 日志显示:IP192.169.2.11 ,root,用户失败,时间. Apr 16 12:00:50
如何监视正在使用su 命令的用户 1.定期监视/var/adm/sulog 文件的内容。 # more /var/adm/sulog SU 04/16 11:34 + pts/5 root-root SU 04/16 11:35 + pts/6 ux-root SU 04/16 11:38 + pts/5 root-ux SU 04/16 11:39 - pts/5 root-ux SU 04/16 11:43 + pts/6 ux-ux SU 04/16 11:46 + pts/6 ux-root SU 04/16 11:47 - pts/1 ux-root SU 04/16 11:47 - pts/1 ux-root SU 04/16 12:42 + pts/1 ux-root SU 04/16 12:46 + ??? root-root ■ 输入命令的日期和时间。 ■ 尝试是否成功。加号(+) 表明尝试成功。减号(-) 表明尝试失败。 ■ 发出命令的端口。 ■ 用户名称和切换身份的名称。
审计报告工具 BART 是一种完全在文件系统层运行的文件跟踪工具。使用BART,可以迅速、轻松、可靠地收集有关安装在已部署的系统上的软件栈组件的信息。使用BART,可以通过简化耗时的管理任务来显著降低管理系统网络的成本。使用BART,可以根据已知的基准确定系统上所进行的文件层更改。可以使用BART 根据完全安装并配置的系统创建基准或控制清单。然后可将此基准与系统快照进行比较,将生成一个列出从系统安装以来所进行的文件层更改的报告。 bart 命令是标准UNIX 命令。您可以将bart 命令的输出重定向到文件以便进行后续处理。 BART 功能 BART 在设计上侧重于既有效又灵活的简单语法。使用此工具,可以生成给定系统在一段时间内的清单。然后,需要验证此系统的文件时,可以通过比较新旧清单来生成报告。使用BART 的另一种方法是生成若干个相似系统的清单,然后进行系统间的比较。BART 与现有审计工具的主要区别在于BART 在跟踪信息和报告信息方面都非常灵活。 BART 的其他优点和用法包括: ■ 提供了一种为运行Solaris 软件的系统在文件层编制目录的有效而简便的方法。 ■ 使用BART,可以定义要监视的文件,还可以在必要时修改配置文件。借助这种灵活性,可以监视本地的自定义项,并可轻松、有效地重新配置软件。 ■ 确保系统运行可靠的软件。 ■ 允许监视一段时间内系统在文件层的变化,从而帮助找到损坏或异常的文件。 ■ 帮助对系统性能问题进行疑难解答。 # bart 用法: bart create [-n] [-R 根目录] [-r 规则|-] bart create [-n] [-R 根目录] [-I | -I 文件列表] bart compare [-r 规则|-] [-i 关键字] [-p]控制清单文件 测试清单文件 -R 指定清单的根目录。所有由规则指定的路径都会被解释为此目录的相对路径。所有由清单报告的路径均为此目录的相对路径。 -I 无论是从命令行执行此选项,还是从标准输入中读取此选项,它都会接受要列出的单个文件的列表。 -r 此清单的rules 文件的名称。请注意,– 在与-r 选项一起使用时,会从标准输入读取rules 文件。 -n 禁用文件列表中所有常规文件的内容签名。此选项可用于改善性能。或者,可以在需要更改文件列表的内容时使用此选项,这与系统日志文件的情况类似 # bart create -R /etc //创建仅包含有关/etc 子树中文件的信息的清单 # bart create -I /etc/passwd /etc/shadow //创建仅列出有关系统上/etc/passwd 和/etc/shadow 文件的信息的清单
比较同一系统在一段时间内的清单 # bart create -R /etc > systeml.control.121212 //创建控制清单。 #cat >/etc/ssh/xu.txt //创建文件放于/etc/ssh目录下 # bart create -R /etc > system1.test.1212123 //更改时创建测试清 # bart compare systeml.control.121212 system1.test.1212123 //将控制清单与测试清单进行比较 # bart compare systeml.control.121212 system1.test.1212123 /xu.txt: add 显示增加了一个文件./xu.txt
控制对文件的访问 保证文件和目录安全的命令 ls 列出目录中的文件及其有关信息。 chown 更改文件的拥有权。 chgrp 更改文件的组拥有权。 chmod 更改文件的权限。可以使用符号模式(使用字母和符号)或绝对模式(使用八进制数字)更改文件的权限。 文件可以是七种类型之一。每种类型由一个符号显示: -(减号) 文本或程序 b 块特殊文件 c 字符特殊文件 d 目录 l 符号链接 s 套接字 D 门 P 命名管道(FIFO)
UNIX 文件权限 r 读文件指定的用户可以打开和读取文件内容。 目录指定的用户可以列出目录中的文件。 w 写文件指定的用户可以修改文件的内容或删除该文件。 目录指定的用户可以在目录中添加文件或链接。这些用户也可以删除目录中的文件或链接。 x 执行文件指定的用户可以执行文件(如果该文件为程序或shell 脚本)。这些用户也可以使用一个exec(2) 系统调用来运行程序。 目录指定的用户可以打开或执行目录中的文件。这些用户也可以使该目录以及该目录下的目录成为当前目录。 - 拒绝文件和目 录 指定的用户无法读写或执行文件。
文件权限模式 0 — 无权限 1 –x 仅执行权限 2 -w- 只写权限 3 -wx 写和执行权限 4 r– 只读权限 5 r-x 读和执行权限 6 rw- 读写权限 7 rwx 读写和执行权限 u who 用户(属主) g who 组 o who 其他用户 a who 所有 = operator 赋值 + operator 添加 - operator 删除 r permissions 读 w permissions 写 x permissions 执行 l permissions 强制锁定,setgid 位打开,组执行位关闭 s permissions setuid 或setgid 位打开 t permissions Sticky 位打开,对于其他用户,执行位打开
使用访问控制列表保护文件 文件的ACL 项 u[ser]::perms 文件属主权限。 g[roup]::perms 文件组权限。 o[ther]:perms 文件属主或文件组成员之外的用户的权限。 m[ask]:perms ACL 掩码。掩码项表示允许用户(属主除外)和组拥有的最大权限。掩码是一种可快速更改所有用户和组的权限的方法。 例如,mask:r– 掩码项表示,用户和组只能拥有读取权限,即使他们可能拥有写和执行权限。 u[ser]:uid:perms 特定用户的权限。对于uid,可以指定用户名或数字UID。 g[roup]:gid:perms 特定组的权限。对于gid,可以指定组名或数字GID。
显示文件信息 # ls -la -l 显示包括用户拥有权、组拥有权和文件权限的长格式。 -a 显示所有文件,包括以点(.) 开头的隐藏文件。
在符号模式下更改权限 #chmod who operator permissions filename who 指定要更改其权限的用户。 operator 指定要执行的操作。 permissions 指定要更改的权限。有关有效的符号列表,请参见表6–5。 filename 指定文件或目录。 # chmod o-r example-file1 //为用户、组和其他用户添加读和执行权限 # chmod a+rx example-file2 //为组指定读写和执行权限
检查文件是否具有ACL # ls -l filename 其中,filename 指定文件或目录。 在输出中,模式字段右侧的加号(+) 表示该文件具有ACL。
如何将ACL 项添加到文件 # setfacl -s user::perms,group::perms,other:perms,mask:perms,acl-entry-list filename … -s 设置文件的ACL。如果文件已具有ACL,则会替换该ACL。此选项要求至少有user::、group:: 和other:: 项。 user::perms 指定文件属主权限。 group::perms 指定组属主权限。 other:perms 为文件属主或组成员之外的用户指定权限。 mask:perms 指定ACL 掩码的权限。掩码表示允许用户(属主除外)和组拥有的最大权限。 acl-entry-list 指定文件或目录中要为特定用户和组设置的一个或多个ACL 项的列表。也可以设置目录的缺省ACL 项。表6–7 和表6–8 显示了有效的ACL 项。 filename … 指定要对其设置ACL 的一个或多个文件或目录。多个filename 由空格分隔。 # cat >xu.txt asdfa asdfasdf asdfas # ls -l xu.txt -rw-r–r– 1 root root 22 4月 16日 14:18 xu.txt # setfacl -s user::rw-,group::r–,other:—,mask:rw-,user:root:rw- xu.txt # ls -l xu.txt -rw-r—–+ 1 root root 22 4月 16日 14:18 xu.txt # # getfacl xu.txt # file: xu.txt # owner: root # group: root user::rw- user:root:rw- #effective:rw- group::r– #effective:r– mask:rw- other:— # setfacl -s u::7,g::4,0,m:4,u:anusha:7 ch2.sgm # getfacl ch2.sgm
复制ACL 通过重定向getfacl 输出,将文件的ACL 复制到另一个文件。 #getfacl filename1 | setfacl -f - filename2 filename1 指定将从其中复制ACL 的文件。 filename2 指定要对其设置所复制的ACL 的文件。
修改文件的ACL 项 % setfacl -m user:anusha:6 ch3.sgm //将用户anusha 的权限修改为读写。 % getfacl ch3.sgm
删除文件的ACL 项 # setfacl -d acl-entry-list filename … -d 删除指定的ACL 项。 acl-entry-list 指定文件或目录中要删除的ACL 项(未指定权限)的列表。只能删除特定用户和组的ACL 项和缺省ACL 项。表6–7 和表6–8 显示了有效的 ACL 项。 filename … 指定一个或多个文件或目录,由空格分隔。 或者,可以使用setfacl -s 命令删除文件的所有ACL 项,并使用所指定的新ACL 项替换它们。
显示文件的ACL 项 # getfacl [-a | -d] filename … -a 显示指定文件或目录的文件名、文件属主、文件组和ACL 项。 -d 显示指定目录的文件名、文件属主、文件组和缺省ACL 项(如果存在)。 filename … 指定一个或多个文件或目录,由空格分隔。 如果在命令行中指定多个文件名,则会在每两个ACL 项之间显示一个空白行
特殊文件权限查找文件 使用find 命令查找拥有setuid 权限的文件 # find directory -user root -perm -4000 -exec ls -ldb {} \; >/tmp/filename find directory 检查以指定的directory(可以是root (/)、sys、bin 或mail)开头的所有挂载路径。 -user root 仅显示由root 拥有的文件。 -perm -4000 仅显示权限被设置为4000 的文件。 -exec ls -ldb 以ls -ldb 格式显示find 命令的输出。 >/tmp/filename 包含find 命令的结果的文件。 # find / -user root -perm -4000 -exec ls -ldb {} \; > /var/tmp/ckprm # cat /var/tmp/ckprm
禁止程序使用可执行栈 编辑/etc/system 文件并添加以下行: set noexec_user_stack=1 重新引导系统。 # init 6 禁止记录可执行栈消息 在此示例中,将禁止记录可执行栈消息,然后重新引导系统。 # cat /etc/system set noexec_user_stack=1 set noexec_user_stack_log=0 # init 6
如何生成对称密钥 1. 列出可用算法 # encrypt -l 算法 密钥大小: 最小 最大 (位) —————————————— aes 128 128 arcfour 8 128 des 64 64 3des 192 192
|