Solaris 操作系统安全整理

ZDNet 安全频道频道 更新时间:2008-06-13 作者: 来源:小饭的沉默空间

本文关键词:chmod 相对路径 Init

  [学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

安全频道 chmod 最新报道

安全频道 相对路径 最新报道

安全频道 Init 最新报道

[an error occurred while processing this directive]