服务器 频道

Solaris基本安全配置规范

  【IT168 服务器学院】Solaris的安全配置可以从以下几个方面来考虑:
  1. 本地安全增强
  包括: 限制某些强大命令的访问
  设置正确的文件权限
  应用组和用户的概念
  suid/sgid的文件最少
  rw-rw-rw的文件最少等

  2. 网络安全增强
  包括: 使用安全的协议来管理
  禁止所有不需要的服务
  禁止系统间的信任关系
  禁止不需要的帐号
  增强认证需要的密码
  保护存在危险的网络服务
  限制访问等

  3. 应用安全增强
  包括: 限制用户的权限
  限制进程所有者的权限
  检查应用相关文件权限
  限制访问其他系统资源
  应用所依赖的suid/sgid文件最少
  使用应用本身的安全特性
  删除samples和其他无用的组件

  4. 监控与警报
  包括: 日志、完整性、入侵检测等一些使用工具等

  下面就详细讲述具体的配置过程。

  一、 操作系统配置

  1. 安装
  1.1 安装最新的补丁
  安装patches对系统稳定和安全十分重要。
  看系统中安装了那些补丁   #showrev –p       
  更新更安全的补丁在  http://sunsolve.sun.com

  1.2 初始安装时需要创建 /var分区,日志文件存在/var分区
  1.3 安装最小的系统

  2. 打开审计功能
  审计包括很多的内容,可以根据需求设置。可以参考本文档中的日志和监控部分。

  3. 系统参数配置
  3.1 eeprom安全
  “eeprom security=command”系统将改变安全级别,并提示输入密码
  对于一般用户,从硬盘启动,不需要输入密码
  如果选择从光盘启动,则需要密码。主要防止物理接触。
  此项为可选配置,视具体需求而定。

  3.2 将coredump大小设置为0
  在/etc/system中加入如下一行:
  set sys:coredumpsize = 0
  将每次重启产生的coredump大小设置为0,不需要无用的信息。可选

  3.3 修正堆栈错误,防止溢出(只对2.6后有效)
  hacker进入系统后大部分是利用buffer overflow取得root shell
  为了防止基于堆栈的缓冲区溢出,在/etc/system文件中加入
  set  noexec_user_stack=1        防止在堆栈中执行
  set  noexec_user_stack_log=1     当某人试图运行增加一个记录
  然后改变文件权限:#chmod 644 /etc/system

  3.4 只允许root进行电源管理(只对2.6及以后版本有效)
  编辑/etc/default/sys-suspend:
  将     PERMS=console-owner
  改为   PERMS=-
  并做 #/bin/chmod 0755 /usr/openwin/bin/sys-suspend
  此项防止SYN Flood攻击

  3.5 设置/tmp目录粘滞位,mode 1777
  创建文件/etc/rc3.d/S79tmpfix:
  /bin/cat << EOF >/etc/rc3.d/S79tmpfix
  #!/bin/sh
  #ident "@(#)tmpfix 1.0 95/09/14"
  if [ -d /tmp ]
  then
  /usr/bin/chmod g-s /tmp
  /usr/bin/chmod 1777 /tmp
  /usr/bin/chgrp sys /tmp
  /usr/bin/chown sys /tmp
  fi
  EOF
  改变S79tmpfix文件权限:
  #/usr/bin/chmod 755 /etc/rc3.d/S79tmpfix
  此项给/tmp加上粘滞位,只允许写而不允许删除。这样,当黑客往/tmp写.socket文件时不允许删除。

  3.6 禁止stop-‘A’键
  在/etc/default/kbd中,改变或加入 “KEYBOARD_ABORT=disable”
  此项防止启动后,按stop-‘A’或L1-‘A’得到ok提示符,使用启动盘可以进入单用户模式,防止黑客物理接触机器。但此项不禁止可以作为密码丢失时的应急处理

  4. 用户管理
  4.1 禁止所有不需要的系统帐户
  编辑/etc/passwd,将需要禁止帐户的**用NP代替
  Example: noaccess:NP:60002:60002:No Access User:/:/sbin/noshell
  需要禁止的帐户有:
  bin, daemon, adm, lp, smtp, sys, uucp, nuucp, nobody, noaccess

  4.2 使用强密码 
  4.3 设置密码相关参数
  编辑/etc/default/passwd,设置:
  PWMIN=1 # 最短改变时间
  PWMAX=13 # 密码最长有效时间
  PWWARN=4 # 密码失效前几天通知用户
  PWLEN=8 # 最短密码长度

  4.4 防止root远程登陆
  编辑/etc/default/login,加上:
  CONSOLE=/dev/console # If CONSOLE is set, root can only login on that device.

  4.5 记录所有root登陆尝试
  # SYSLOG determines whether the syslog(3) LOG_AUTH facility should be used
  # to log all root logins at level LOG_NOTICE and multiple failed login
  # attempts at LOG_C
  SYSLOG=YES

  4.6  设置session超时时间
  编辑/etc/default/login,加上:
  # TIMEOUT sets the number of seconds (between 0 and 900) to wait before
  # abandoning a login session.
  TIMEOUT=120

  4.7  设置缺省umask
  编辑/etc/default/login,加上:
  # UMASK sets the initial shell file creation mode mask. See umask(1).
  UMASK=027
  权限设置为750. “rw--r------“
  对于如下文件,同样加上缺省umask:
  /etc/.login, /etc/profile ,/etc/skel/local.cshrc
  /etc/skel/local.login, /etc/skel/local.profile

  4.8  设置root的umask
  检查root的.profile,确保umask为027或077

  4.9  确保提示输入密码

  # PASSREQ determines if login requires a password.
  PASSREQ=YES

  4.10 设置Shell环境变量
  编辑/etc/default/login,加上:
  # ALTSHELL determines if the SHELL environment variable should be set
  ALTSHELL=YES

  4.11 检查是否每个用户都设置了密码
  检查/etc/passwd和/etc/shadow,
  每个用户的密码栏是否为空。

  4.12 编辑使用useradd的缺省配置,满足密码策略
  编辑/etc/sadm/defadduser,需要满足密码策略,比如:
  Example:
  defgroup=15
  defgname=users
  defparent=/export/home
  defskel=/etc/skel
  defshell=/usr/bin/ksh
  definact=30
  defexpire=

  4.13 在所有path中,去掉所有”.”路径
  检查所有缺省启动脚本和root启动脚本,在所有路径变量中删除“.”路径
  包括以下文件:
  /.login ,/etc/.login, /etc/default/login, /.cshrc, /etc/skel/local.cshrc,
  /etc/skel/local.login, /etc/skel/local.profile, /.profile ,/etc/profile

  4.14 使用sugroup来限制su,将可以su的用户添加到这个组
  在 /etc/group中创建特殊的组sugroup
  将你的管理员帐号加到这个组
  改变 /bin/su 的权限为: r-sr-sr-x 1 root sugroup
  #chmod 550 /bin/su
  #chmod +s /bin/su
  #chown root:sugroup /bin/su
  #ls -al /bin/su
  -r-sr-s--- 1 root sugroup 18360 Jan 15 1998 /bin/su
  #grep sugroup /etc/group
  sugroup::600:root,httpadm,wspher
  这样,只有sugroup组中的用户可以使用su,提升为超级用户
  另外一个可行的方法是使用sudo来替代su

0
相关文章