免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 11855 | 回复: 26
打印 上一主题 下一主题

Solaris_build_document文档翻译认领开始 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-07-06 16:33 |只看该作者 |倒序浏览
下载地址

http://www.sun.com/bigadmin/content/submitted/Solaris_build_document.pdf

该书翻译地方不多,拷贝-粘贴的多。

论坛徽章:
0
2 [报告]
发表于 2003-07-07 11:49 |只看该作者

Solaris_build_document文档翻译认领开始

系统配置

目的

本文档描述了对Solaris 操作系统进行配置、监控、弱点评估已经如何使系统变得更加文档可靠的方面的内容。同时,也可以作为一个配置标准或审计基线。在系统排错过程中,对配置细节层面的详细理解和掌握是非常重要的。通过使用Jumpstart和Solaris Security Toolkit,可以自动化安装,并且方便的配置系统安全性和可靠性。

安装Solaris 8
使用如下文件系统安装Solaris 8
(见P4的表)
swap分区应该等于系统内存的两倍。使用下列命令来确定系统的内存数量:
/usr/platform/sun4u/prtdiag –v
Volume Manager的具体配置超出本文的讨论范围,不再赘述。

安装补丁集(Patch Cluster)
安装最新的推荐补丁和安全补丁是十分必要的,可以从http://sunsolve.sun.com获得。最后找到所以硬件的补丁。
# cd /tmp
# unzip 8_recommended.zip
# cd 8_recommend
# ./install_cluster
# /usr/sbin/shudown –i6 –g0 –y

配置DNS客户端
# vi /etc/nsswitch.conf
host:                files dns

# vi /etc/resolv.conf
domain domain.com
nameserver 192.168.1.105
nameserver 192.168.1.106
search domain.com

配置默认路由
运行时配置:(重启后无效)
# route add net default 192.168.1.1 1
最后一个“1”指定跳数。默认路由的跳数应该设定为1,因为服务器最先找的是网卡。
重启后生效的配置:
# vi /etc/defaultroute
192.168.1.1

在/etc/hosts中添加FQAN
# vi /etc/hosts
192.168.1.101 sunsrv01.domain.com sunsrv01 loghost
在/etc/hosts中添加完全的有资格的域名(Fully qualified domain name),可以避免sendmail报错。(我的无资格的域名是未知的(主机名);等待重试, My unqualified host name (hostname)unknown; sleeping for retry)

添加多个IP地址
5
# vi /etc/hosts
192.168.1.15 projqa
192.168.1.16 projdev
# vi hostname.eri0:1
projqa
# vi hostname.eri0:2
projdev
# ifconfig eri0:1 plumb
# ifconfig eri0:1 inet 192.168.1.15 broadcast 192.168.1.255 netmask 255.255.255.0 –
trailers
# ifconfig eri0:1 up
# ifconfig eri0:2 plumb
# ifconfig eri0:2 inet 192.168.1.16 broadcast 192.168.1.255 netmask 255.255.255.0 –
trailers
# ifconfig eri0:2 up
# ifconfig -a
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4>; mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
eri0: flags=1000863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST,IPv4>; mtu 1500 index 2
inet 192.168.1.14 netmask ffffff00 broadcast 192.168.1.255
ether 0:3:ba:b:3:f5
eri0:1: flags=1000863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST,IPv4>; mtu 1500 index 2
inet 192.168.1.15 netmask ffffff00 broadcast 192.168.1.255
eri0:2: flags=1000863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST,IPv4>; mtu 1500 index 2
inet 192.168.1.16 netmask ffffff00 broadcast 192.168.1.255

强制网卡使用百兆全双工模式
可以通过在服务器网卡和交换机两端都配置使用100兆全双工模式通讯,避免自动协商过程。
确定可用的网卡:
# ifconfig –a
配置服务器开机时使用:
hme:
# ndd -set /dev/hme instance 0
# ndd -set /dev/hme adv_100fdx_cap 1
# ndd -set /dev/hme adv_autoneg_cap 0
qfe:
# ndd -set /dev/qfe instance 0
# ndd -set /dev/qfe adv_100fdx_cap 1
# ndd -set /dev/qfe adv_autoneg_cap 0
eri:
# ndd -set /dev/eri instance 0
# ndd -set /dev/eri adv_100fdx_cap 1
# ndd -set /dev/eri adv_autoneg_cap 0
ce:
# ndd -set /dev/ce instance 0
# ndd -set /dev/ce link_master 0
# ndd -set /dev/ce adv_1000fdx_cap 0
# ndd -set /dev/ce adv_1000hdx_cap 0
# ndd -set /dev/ce adv_100fdx_cap 1
# ndd -set /dev/ce adv_100hdx_cap 0
# ndd -set /dev/ce adv_10fdx_cap 0
# ndd -set /dev/ce adv_10hdx_cap 0
# ndd -set /dev/ce adv_autoneg_cap 0

配置重启后生效(注意:一定要确定网卡正确安装在服务器上)
hme, qfe & eri:
# vi /etc/system (ensure there are no blank lines)
* Force hme into 100 Mbps full duplex mode
set hme:hme_adv_100fdx_cap=1
* Don't negotiate operation mode with the network hub
set hme:hme_adv_autoneg_cap=0
* Force qfe into 100 Mbps full duplex mode
set qfe:qfe_adv_100fdx_cap=1
* Don't negotiate operation mode with the network hub
set qfe:qfe_adv_autoneg_cap=0
* Force eri into 100 Mbps full duplex mode
set eri:adv_100fdx_cap=1
* Don't negotiate operation mode with the network hub
set eri:adv_autoneg_cap=0
ce:
# vi /etc/rc2.d/S99net-tune
#!/sbin/sh
# Set NIC to 100 Mbps full duplex
ndd -set /dev/ce instance 0
ndd -set /dev/ce link_master 0
ndd -set /dev/ce adv_1000fdx_cap 0
ndd -set /dev/ce adv_1000hdx_cap 0
ndd -set /dev/ce adv_100fdx_cap 1
ndd -set /dev/ce adv_100hdx_cap 0
ndd -set /dev/ce adv_10fdx_cap 0
ndd -set /dev/ce adv_10hdx_cap 0
ndd -set /dev/ce adv_autoneg_cap 0
exit 0
# chmod 700 /etc/rc2.d/S99net-tune

确认配置参数:
hme, qfe and eri:
# ifconfig -a
ce:
# netstat -k ce0 | grep link_speed
link_speed 100 link_duplex 2 link_asmpause 0 link_pause 0
link_speed - speed in Mbps
link_duplex - 1 half duplex, 2 full duplex, 0 down

论坛徽章:
0
3 [报告]
发表于 2003-07-07 13:02 |只看该作者

Solaris_build_document文档翻译认领开始

安装根启动文件(Installed Root Startup Files)
# vi /etc/profile
if [ “$LOGINNAME” = “root” ]; then
PATH=/usr/sbin:/usr/bin:/usr/local/bin:/usr/ucb
HISTFILE=/.sh_history
HISTSIZE=200
MANPATH=/usr/share/man:/usr/local/man:/opt/VRTSvmsa/man:/opt/VRTSvxvm/man
EDITOR=vi
PS1=”ROOT@`/usr/ucb/hostname`# “
ENV=/.kshrc
umask 077
export PATH HISTFILE HISTSIZE MANPATH EDITOR PS1 ENV
fi
TERM=vt100
export TERM
logger –p local0.info “User $LOGNAME has logged in”
trap  2 3
# touch /.profile
# chmod 700 /.profile

# vi /.kshrc (执行korn shell时使用,首先读/.profile)
HNAME=`uname –n`
PS1=”$HNAME ”’$PWD’”>;”;export PS1

set –o vi
set –o noclobber
alias rm=’rm –i’
stty ease ^h
# chmod 700 /.kshrc
生成手册数据库(Create the man Datebase)
# catman –w
修改后,命令man –k允许用户使用关键字查找命令。

论坛徽章:
0
4 [报告]
发表于 2003-07-07 14:17 |只看该作者

Solaris_build_document文档翻译认领开始

生成E-mail别名
# vi /etc/aliases
# status sends to Administrator e-mail accounts
status: jsmith@domain.com,bsmith@domain.com
# monitor sends to Administrator e_mail accounts and cell phones
monitor:jsmith@domain.com,bsmith@domain.cm,6085551212@pagenet.net
# operations sends to the 24 hour operations staff
operationsperator@domain.com
# newaliases
/etc/mail.aliases: 6 aliases, longest 32 bytes, 170 bytes total
备注:确省时,本文档中的脚本将给status和 monitor邮件别名发通知。
给邮件服务器转发邮件
# vi /etc/mail/sendmail.cf
#DSmailhost.$m
DShostname.domain.com
使用邮件服务器的正式全名
生成Root用户的转发文件(create root’s .forward file)
# vi /.forward
status
所有的邮件将被转发到.forward文件指定的邮件账号,邮件服务器中不保留邮件。如果经中继转发给局域网邮件账号,在决定是否保留在服务器上前先通知管理员或用户。
产生主目录
#l ls –ld export
drwxrwxr-x    3   root     sys            512  Aug 3 13:38   export/
# chmod 755 export
# cd /export
# mkdir home
# ls –ld /export/home
drwxr-x---     4   root      sys            52  Aug 3 13:39   export/home/
配置后允许sendmail使用用户的转发配置文件给局域网的用户发邮件。下面一节摘自sendmail的手册。
.forward 和:include:文件可以设置其他限制,同组和其他用户对这些文件和目录没有任何权限。
产生管理目录
# mkdir –p /var/adm/log/backup
# mkdir –p /var/adm/log/mon_perf
# mkdir –p /var/adm/log/perf_log
# mkdir –p /opt/admin/downloads
# mkdir –p /opt/admin/scripts/funcs
在/etc/shellsm文件中产生有效shell列表
# vi /etc/shells
/bin/sh
/bin/ksh
/bin/csh
/bin/bash
# chown rootther /etc/shells
# chmod 644 /etc/shells
如果某个用户的shell这个文件里没有列出,他就不能使用FTP,应确保可能使用的shell都包括在本文件中。
确保系统不会作为路由器
# touch /etc/notrouter
# chown root:sys /etc/notrouter
# chmod 444 /etc/notrouter
让系统定时执行
# su –sys
# EDITOR=vi; export EDITOR
# crontab –e
#(sys crontab 记录定时执行操作的,关于启动的详细信息请看cron performance手册)
0        *  *  *  0-6 /usr/lib/sa/sal
20,40  6-22 *  *  1-5  /usr/lib/s/sal
5 18 *  *  1-5  /usr/lib/sa/sa2 –s 8:00 –e 18:01 –I 1200 –A
禁止自动引导
# eeprom auto-boot?=false
当服务器加电引导时,会停在OK提示符下。
配置唯一网卡物理地址(MAC)
确省时solaris给所有的网卡指定同一个MAC地址,这样会潜藏故障隐患,(如地址冲突或
性能降低),使用以下命令避免隐患发生:
# eeprom local-mac-address\?=true

论坛徽章:
0
5 [报告]
发表于 2003-07-07 16:08 |只看该作者

Solaris_build_document文档翻译认领开始

安全配置
安装SSH
Telnet和FTP明文传送用户的id和密码。这些敏感的信息会被探测到。SSH采用加密方式传送,有效地代替了Telnet和FTP。我仍推荐加强Telnet和FTP进行深程度的安全预防。
商用软件SSH: http://www.ssh.com
自由软件SSH: http://www.openssh.org
限制root用户通过控制台访问,限制su。
telnet:
# vi /etc/default/login
CONSOLE=/dev/donsole
确保CONSOLE条目没有被注释掉。为了增强访问管理的责任,root账号应不允许直接登录。这样配置强制以其他用户帐户登录再su成root,root依然可以在控制台直接访问。
SSH:
# vi /etc/sshd_config
PermitRootLogin no
#ps –ef | grep sshd
# kill –HUP <sshd PID>;
限制使用su命令
如此配置后,root用户访问会要求用户id、密码、用户属组、root密码4项。(group wheel不知怎么翻译)
生成wheel组
# groupadd wheel
为系统增加管理员
# useradd –c “john smith” –d /export/home/jsmith –m –u 1001 –g wheel –s /bin/ksh jsmith
提示:”-g” 从/etc/group决定默认的组(使用组ID或组名)
      “-u” 必须是/etc/passwd里唯一的用户id
# passwd jsmith (设置用户的密码)
# passwd –f jsmith (强制用户修改密码)
#  vi /export/home/jsmith/.forward  (转发用户的邮件)
jsmith@domain.com
# chown jsmith:wheel /export/home/jsmith/.forward
改变su命令的属主
# cd /usr/bin
# ls –al su
-r-sr-xr-x   1   root    sys        17976    Oct    6    1998    su
# /usr/bin/chgrp wheel su
# /usr/bin/chmod 4750 su
# ls –al su
-rwsr-x---   1   root    wheel      17976    Oct    6     1998   su
# cd /sbin
# ls –al su.static
-r-xr-xr-x    1   root    sys       473808    Sep    1    1998    su.static
# /usr/bin/chgrp wheel su.static
# /usr/bin/chmod 4750 su.static
ls –al su.static
-rwsr-x---     1   root   wheel     473808     Sep   1   1998  su.static
*摘自 Lance Spitzer’s Armoring Solaris
指定密码策略
# vi /etc/default/passwd
Before:
MAXWEEKS=
MINWEEKS=
PASSLENGTH=6
After:
MAXWEEKS=8
MINWEEKS=1
PASSLENGTH=8
WARNWEEKS=1
Root和用户的密码使用3个月到期,到期时必须在控制台重新设置。为避免系统停工,root的密码应该于2个月后重设。
说明:
MAXWEEKS – 密码最大有效期限
MINWEEKS -  密码最小有效期,在期限内不能修改密码
PASSLENGTH – 密码的长度
WANWEEKS – 在密码到期前多长时间发出警告
配置在3次登陆失败后断开
# vi /etc/default/login
# Disconnect users after three login failures
RETRIES=3
(提示:solaris默认在5次连续的登陆失败后断开,工业标准是3次。)
#下面一条:系统日志记录登陆失败信息前允许几次失败登陆企图,使用syslog(3) #LOG_NOTICE工具,如果设为0,系统将记录每一次登陆失败企图
SYSLOG_FAILED_LOGINS=3

论坛徽章:
0
6 [报告]
发表于 2003-07-07 17:58 |只看该作者

Solaris_build_document文档翻译认领开始

禁止使用rlogin命令
在/etc/pam.conf中注释掉以下行:
#rlogin    auth  sufficient  /usr/lib/security/pam_rhosts_auth.so.1
#rlogin    auth  required   /usr/lib/security/pam_unix.so.1
#rsh      auth  required   /usr/lib/security/pam_rhosts_auth.so.1
这样配置强制用户在使用rlogin命令时使用用户的密码。
锁掉远程存取文件
# /usr/bin/touch /.rhosts /.netrc /etc/hosts.equiv
# /usr/bin/chmod 0 /.rhosts /.netrc /etc/hosts.equiv
*摘自Lance Spitzer’s Armoring Solaris
这些文件提供信任用户不需要密码就能进行远程访问。要么确保这些文件不存在,要么使用监控软件通知是否产生了这些文件。
删除或禁止不必要的用户帐户
# passwd –l adm
# passwd –l bin
# passwd –l daemon
# passwd –l listen
# passwd –l lp
# passwd –l nobody
# passwd –l noaccess
# passwd –l nuucp
# passwd –l sys
# passwd –l uucp
用户nobody4不再需要,删除掉。
# userdel nobody4
给禁止的用户指定一个无效的shell
# vi /sbin/noshell
#!/bin/sh
trap “” 1 2 3 4 5 6 7 8 9 10 12 15 19
HOSTNAME=`uname –n`
USER=`id | awk ‘{print \$1}’`
logger –i –p auth.err “Attempted access by $USER on host $HOSTNAME”
# the next variable can be set for multiple addresses
# (i.e. jsmith@yahoo.com,jsmith.hotmail.com)
MAILADD=monitor
mail MAILADD <<EOF
From: $0
To: $MAILADD
Subject: Unauthorized Access Attempt on $HOSTNAME
Someone has attempted to access a disabled account ($USER)
on $HOSTNAME.Please investigate immediately.
$DATE
EOF

Each “Sorry”
wait
exit 0

# chmod 755 /sbin/noshell
# vi /etc/passwd
daemon:1:1::/usr/sbin/noshell
给那些永远不允许登陆的用户指定shell为 /sbin/noshell(例如:daemon,bin,sys,adm,lp,smtp,uucp,listen,nuucp,nobody,noaccess)。
从http://www.cert.org/security-improvement/improvementations/i049.02.html可以获得Noshell的二进制代码。与源代码比较,他是编译好的代码。下方是管理程序,不接受邮件通知。
限制FTP的使用
确保/etc/ftpusers包括以下账户(solaris 9 中是  /etc/ftpd/ftpusers)
# vi /etc/ftpusers
root
adm
bin
daemon
listen
lp
nobody
noaccess
nobody4
nuucp
smtp
sys
uucp
这些系统用户不能再FTP到服务器,任何附加的管理账户同样应该加到本文件中(如oracle,webadmin)。
保护IP模块的安全
从http://wwws.sun.com/blueprints/tools/nddconfig_license.html下载最新的nddconfig脚本
# vi /etc/init.d/nddconfig
# chmod 740 /etc/init.d/nddconfig
# chown root:sys /etc/init.d/nddconfig
# ln /etc/init.d/nddconfig /etc/rc2.d/S70nddconfig

随机化所有TCP连接的初始顺序号
开机时配置有效:
# ndd –set /dev/tcp tcp_strong_iss 2
重起后配置有效:
# vi /etc/default/inetinit
TCP_STRONG_ISS=2
随机化TCP连接的初始顺序号可以保护系统避免被黑、IP欺骗。
*摘自Lance Spitzer’s Armoring Solaris
在/etc/inetd.conf中禁止不必要的服务
# vi /etc/inetd.conf
# ps –ef | grep inetd
# kill –HUP <inetd.PID>;
注释掉包括telnet ftp的所有条目,用SSH 和scp替换。他们能提供更多的安全性。很多这些不必要的服务包括早期的可利用的安全漏洞。然而有些程序在/etc/inetd.conf的尾部增加了条目,如果没有他们不能提供相应的功能(例如 Solstice Disk Suite)。

论坛徽章:
0
7 [报告]
发表于 2003-07-07 18:50 |只看该作者

Solaris_build_document文档翻译认领开始

禁止启动脚本
通常要禁止任何不必要的服务,这样做的目标是排除安全漏洞,在某种情况下可提高系统性能。确保在禁止某项服务前理解他的作用意图。下面列出典型要禁止的服务。在新版本的solaris中,有更多的需要考虑。
禁止卷管理
# cd /etc/rc2.d
# mv S92volmgt s92volmgt
配置后,CD-ROM不能自动加载,使用如下命令加载CD-ROM:
# mount –F hsfs –o ro /dev/dsk/c0t0d0s0 /mnt
禁止Dtlogin
如果服务器不想运行通用桌面环境(CDE)或GUI,禁止Dtlogin。
# cd /etc/rc2.d
# mv S00dtlogin s99dtlogin
禁止打印服务
# /usr/lib/lpshut
# cd /etc/rc2.d
# mv S80lp s80lp
禁止RPC
如果服务器不需要运行CDE禁止RPC,用”rpcinfo -p”命令察看什么在使用rcp。
# cd /etc/rc2.d
# mv /etc/rc2.d/S71rpc /etc/rc2.d/s71rpc
禁止NFS客户
# /etc/init.d/nfs.client stop
# cd /etc/rc2.d
# mv S73nfs.client s73nfs.client
禁止NFS服务器
# /etc/init.d/nfs.server stop
# cd /etc/rc3.d
# mv S15nfs.server s15nfs.server
禁止UUCP
# cd /etc/rd2.d
# mv S70uucp s70uucp
禁止LDAP客户
# cd /etc/rc2.d
mv S71ldap.client s71ldap.client
禁止自动加载
# /etc/init.d/autonfs stop
# cd /etc/rc2.d
# mv S74autonfs s74autonfs
禁止网络时间同步
# /etc/init.d/xntpd stop
# cd /etc/rc2.d
mv S74xntpd s74xntpd
禁止逻辑链接控制驱动
# cd e/tc/rc2.d
# ./S40llc2 stop
mv S40llc2 s40llc2
禁止自动安装
# cd /etc/rc2.d
# mv S72autoinstall s72autoinstall
禁止缓冲文件系统
# cd /etc/rc2.d
# mv S73cachefs.daemon s73cachefs.daemon
禁止异步PPP
# cd /etc/rc2.d
mv S47pppd s47pppd

论坛徽章:
0
8 [报告]
发表于 2003-07-08 09:02 |只看该作者

Solaris_build_document文档翻译认领开始

禁止cacheos.finish脚本
# cd  /etc/rc2.d
# mv S93cacheos.finish s93cacheos.finish
禁止保存被vi删掉的文件
# cd /etc/rc2.d
# mv S80PRESERVE s80PRESERVE
禁止电源管理
# cd /etc/rc2.d
# mv S85power s85power
禁止Flash Prom更新
# cd /etc/rc2.d
# mv S75flashprom s75flashjprom
在试图更新eeprom前,暂时允许这个脚本
禁止Buttons n Dials-Setup
# cd /etc/rc2.d
# mv S89bdconfig s89bdconfig
禁止Spc
# cd /etc/rc2.d
# mv S80spc s80spc
禁止sun管理中心
# cd /etc/rc2.d
# mv S90wbem s90wbem
禁止网络缓冲和加速
# cd /etc/rc2.d
# mv S94ncalogd s94ncalogd
# mv S95ncad s95ncad
用来增强web 服务器性能
禁止可移动IP代理
# cd /etc/rc3.d
# mv S80mipagent s80mipagent
禁止SNMP
# cd /etc/rc3.d
# /usr/bin/pkill –9 –x –u 0 ‘(snmpdx | snmpv2d | mibiisa)’
# mv S76snmpdx s76snmpdx
禁止Apache
# cd /etc/rc3.d
# mv S50apache s50apache
禁止DMI
# cd /etc/rc3.d
# /usr/bin/pkill –9 –x –u 0 ‘(snmpXdmid |dmispd)’
# mv S77dmi s77dmi
禁止Sendmail后台进程
系统连续发出邮件,服务器不收回邮件,这样排除明显的安全漏洞
#/etc/init.d/sendmail stop
防止系统引导时启动sendmail
# cd /etc/rc3.d
# mv S88sendmail s88sendmail
确保sendmail队列清理干净:
# crontab –e
# sendmail后台进程没有运行,这使他发出邮件
05,20,35,50 * * * * /usr/lib/sendmail –q
禁止多播
多播典型地用在集群中,确保在应用不是必需的。
# vi /etc/init.d/inetsvc
#
#为从默认接口发出的多播包增加一条静态路由。这个默认接口是相应节点名的接口。
#mcastif=`/sbin/dhcpinfo Yiaddr`
# if [$? –ne 0 ];then
#     mcastif=`uname –n`
# fi
# each “Setting default interface for multicast: \c”
# /usr/sbin/route add –interface –netmask “240.0.0.0” “224.0.0.0”  “$mcastif”
禁止串口侦听
除非有调制解调器或控制终端连到系统,这个配置不能完成。
# vi /etc/inittab
删掉有“/usr/lib/saf/sac –t 300”的行
# chown root:sys /etc/inittab
# chmod 644 /etc/inittab

增加警告banner
这些配置在登陆时用警告条幅替换操作系统版本信息。
Login:
# vi /etc/motd (用警告条幅替换操作系统版本信息)
property of company
警告:为了防止未授权的使用系统,保证系统的性能正确,系统上的活动被监视、记录,并对项目进行审计。系统的使用表示同意监视和记录,任何未授权的访问和使用该系统会被禁止,并成为犯罪或受到民事处罚。
# cp /etc/motd /etc/issue
telnet:
# vi /etc/default/telnetd
UMASK=022
BANNER=””
# chmod 444 /etc/default/telnetd
FTP:
# vi /etc/default/ftpd
UMASK=022
BANNER=`cat /etc/motd`
# chown root:sys /etc/default/ftpd
# chmod 444 /etc/default/ftpd
在/etc/default/login定义PATH SUPATH UMASK
# vi /etc/default/login
PATH=/usr/sbin:/usr/bin
SUPATH=/usr/sbin:/usr/bin
UMASK=027
用默认的Umask禁止世界访问
给下列文件增加“umask 027”
/etc/profile(change)
/etc/.login(add)
/etc/skel/local.profile(add)
/etc/skel/local.login (add)
/etc/skel/local.cshrc (change)
确保没有预备的用户id 0账号存在
# more /etc/passwd
确保在/etc/passwd文件中的第三个字段中root 是唯一的UID为0的账号。UID 0备识别为操作系统的根的账户。任何预备的用户id为0 的账户会使用/usr/sbin/noshell作为登录shell。
确保所有用户都由密码。
# login –p
用login –p 命令检查不需要密码就能登录系统的账户。
限制使用at和 crontab命令。
这些访问应该以需要出发点。
确定谁有crontab文件
# ls /var/spool/cron/crontabs
限制使用at和 crontab,只有在这些文件列出的用户才允许使用at和 crontab,root用户启动,增加sys用户进行日志记录、lp用户进行大银队列管理。
# vi /etc/cron.d/cron.allow
# chmod 600 /etc/cron.d/cron.allow
# cp –p /etc/cron.d/cron.allow /etc/cron.d/at.allow
生成/etc/cron.d/cron.deny文件,这个文件中列出的用户不允许使用at和 crontab。
# cat /etc/passwd | cut –f1 –d: | grep –v root >;>;/etc/cron.d/cron.deny
# chmod 600 /etc/cron.d/cron.deny
生成/etc/cron.d/at.deny文件
# cp –p /etc/cron.d/cron.deny /etc/cron.d/at.deny
复制系统日志到监视控制台
复制系统日志到主要系统使入侵者很难完全隐藏踪迹。当在本地产生系统日志时,马上复制到中央系统日志服务器。每天察看集中日志也是一个有效的检测系统异常的方法(如硬件失败、软件错误)。
# /etc/init.d/syslog stop
# vi /etc/hosts
修改前:
192.168.1.101    sunsrv01.domain.com sunsrvo1 loghost
修改后:
192.168.1.101    sunsrv01.domain.com sunsrv01
192.168.1.102    sunsrv02 loghost
# cp /etc/syslog.conf /etc/syslog.conf.orig
# vi .etc/syslog.conf
# next 2 lines added for syslog replication
*.err;kern.notice;auth.notice;user.none               @loghost
*.err;kern.debug;daemon.notice;mail.crit;user.none     @loghost
提示:每一项必须用制表符分割开。
# /etc/init.d/syslog start
给系统控制台转发根访问企图
# vi /etc/default/su
CONSOLE=/dev/console (uncommented)
允许记录使用su命令的日志
这个配置记录使用su命令的成功和失败的日志。
提示:当root用户的登录通知脚本中这个配置是必需的。
# vi /etc/default/su
SULOG=/var/adm/sulog (uncommented)
# cd /var/adm
# touch sulog
# chgrp sys sulog
# chmod 600 sulog

论坛徽章:
0
9 [报告]
发表于 2003-07-08 15:53 |只看该作者

Solaris_build_document文档翻译认领开始

允许记录AUTH日志
auth工具控制账户对login、su等命令的使用。
# vi /etc/syslog.conf
auth.info                      /var/log/authlog
auth.notice                    /var/log/authlog
允许日志记录不成功的登录企图
日志文件记录连续的登录失败企图
# cd /var/adm
# touch loginlog
# chgrp sys loginlog
# shmod 600 loginlog
允许日志记录成功的登录
# cd /var/log
# touch logins
# chgrp sys logins
# chmod 600 logins
# vi /etc/syslog.conf
# log successful logins
local0.info                                 /var/log/logins
提示:每个条目比须用制表符隔开。
# /etc/init.d/syslog stop
# /etc/init.d/syslog start
给/etc/profile和 /etc/.login文件增加以下项目:
logger –p local0.info “User $LOGNAME has logged in”
允许日志记录CDE登录企图
# vi /etc/pam.conf
在每个账号管理项后面加“debug”字
# Account management
login    account required       /usr/lib/security/$ISA/pam unix.so.1 debug
dtlogin  account required       /usr/lib/security/$ISA/pam_unix.so.1 debug
# vi /etc/syslog.conf
在记录成功登录的行里添加”;auth.debug;user.debug ”。
local0.info;auth.debug;user.debug                /var/log/logins
注意:项目必须用制表符隔开。
# /etc/init.d/syslog stop
# /etc/init.d/syslog start
日志记录TCP服务的引入连接。
# vi /etc/syslog.conf
# log incoming connections for TCP Services
daemon.notice
注意:项目必须用制表符隔开。
# /etc/init.d/syslog stop
# /etc/init.d/syslog start
# vi /etc/rc2.d/S72inetsvc
(改变一下项目)
/usr/sbin/inetd -s
读去:)
/usr/sbin/inetd –s –t

允许审计
Solaris为用户进行的审计活动提供基本安全模块(BSM),使用时会产生相关少量的性能损失。BSM提供公开的依据,更详细的信息,请查阅sun的BSM资料。(http://www.sun.com/solutions/blueprints/0201/audit_config.pdf)。
允许BSM
# /etc/security/bsmconv
注意:bsmconv脚本给/etc/system文件末尾增加”set abort_enable = 0”,禁止STOP-A功能。典型地删除这条后重起机器。
# /usr/sbin/shutdown –i6 –g0 –y
配置日志事件的类型
# vi /etc/security/audit_control
dir:/var/audit
flags:lo,ad,pc,fc,fd,fm
naflags:lo,ad
# lo – login/logout events
# ad – administrative actions:mount,exportfs,etc.
# pc – process operations:fork,exec,exit,etc.
# fc – file creation
# fd – file deletion
# fm – change of object attributes:chmod,flock,etc.
审计root进行所有活动
# vi /etc/security/audit_user
# log all of the commands that the root user runs
root:lo,ex:
安装日志循环脚本
# touch /etc/security/newauditlog.sh
# chmod 700 /etc/security/newauditlog.sh
# mkdir –p /var/audit/logs
# vi /etc/security/newauditlog.sh
#!/bin/ksh
PATH=/usr/sbin:/usr/bin
AUDIT_EXPIRE=30
AUDIT_DIR=/var/audit
LOG_DIR=/var/audit/logs
# Rotate the audit log (循环使用审计日志)
/usr/sbin/audit –n
#移动文件到压缩目录并压缩
for i in `/usr/bin/ls $AUDIT_DIR | grep –v not_terminated | grep –v logs`
do
compress $AUDIT_DIR/$i
mv $AUDIT_DIR/$i.z $LOG_DIR/$i.z
done
# 删除旧日志文件
cd $LOG_DIR     #也可能是连接
/usr/bin/find . $LOG_DIR –type f –mtime +$AUDIT_EXPIRE –exec rm {} >; /dev/null 2>;&1 \;
# 确保日志文件不超过250MB
# 下一个变量可能设为多个地址(如 jsmith@yahoo.com,jsmith@hotmail.com)
MAILADD=status
#日志文件的最大容量,达到该值会删掉
MAXSIZE=250000
LOGDU=`du –sk $LOG_DIR | awk ‘{ print $1}`
if [ “$LOG_DU” –gt “$MAXSIZE” ]; then
     find $LOG_DIR –mtime +21 –exec rm {} \;
     mail $MAILADD <<EOF
From: $0
To: $MAILADD
Subject: Security Audit Log Size on `uname –n`
$LOG_DIR was $LOG_DU KB. $0 does not allow more then 250MB
of log files in this directory.
Log files older than 21 tays have been deleted.
The current size of $LOG_DIR is `du –sk $LOG_DIR | awk ‘{ print $1 }`KB.
Thank you.
EOF
fi
exit 0

论坛徽章:
0
10 [报告]
发表于 2003-07-08 23:26 |只看该作者

Solaris_build_document文档翻译认领开始

每夜从cron运行脚本
# EDITOR=vi ;export EDITOR
# crontab –e
0 0 * * * /etc/security/newauditlog.sh
注意:用praudit命令把审计数据成ASCII格式。
# cd /var/audit
# praudit logfile
*摘自Solaris安全指南
安装监控脚本
root登录通知脚本
目的:监控通过su命令或者直接在控制台的root登录,用email通知。
隶属:/var/adm/sulog
/etc/aliases –status (e-mail addresses of administrators)
# vi /opt/admin/scripts/rtlgn.sh
#!/bin/ksh
PATH=/usr/sbin:/usr/bin:/usr/ucb:/bin
SRVNM=`uname –n`
DATE=`date ‘+%m/%d’`
DAY=`date ‘+%d’`
HOUR=`date ‘+%H’`
MONTH=`date ‘+%m’`
MIN=`date ‘+%M’`

LOGDIR=/var/adm/log/rtlgn
DATFILE=$LOGDIR/rtlgn.dat
if  [ ! –d $LOGDIR ] ; then
mkdir –p $LOGDIR
touch $DATFILE
fi
# 每天清空日志文件
if [ $HOUR –eq “00” ]; then
   if [ $MIN –lt “15” ]; then
      >;$DATFILE
   fi
fi
# 下一个变量可能设为多个地址(如 jsmith@yahoo.com,jsmith@hotmail.com)
MAILADD=monitor
# 检查远程的root用户登录,(不应该发生远程登录)
# 检查最近root控制台登陆 决定现在是否法通知
if [ `grep –c “$DATE $HOUR CONSOLE” $DATFILE` -eq 0 ]
then
  if [ `last root console | grep –c “$MONTH $DAY $HOUR” ` -gt 0 ]; then
mail $MAILADD <<EOF
From0
To: $MAILADD
Subject: Root Console Login $SRVNM
A root console login has occurred:
`last root console | grep “$MONTH $DAY $HOUR”`
EOF
#确保每小时通知一次
print “$DATE $HOUR CONSOLE” >;>; $DATFILE
fi
fi
#检查最近su成root
#确定这个小时通知是否发出
if [ `grep –c “$DATE $HOUR SU” $DATFILE ` -lt 1 ]
then
if [ `grep “$DATE $HOUR” /var/adm/sulog |grep –v root- |grep root |grep –c “+” ` -gt 0 ]
then
mail $MAILADD <<EOF
From: $0
To: $MAILADD
Subject: Root Access on $SRVNM
The following root login has occurred:
` grep “$DATE $HOUR” /var/adm/sulog | grep root | grep “+”`
EOF
#确保每个小时发出一次通知
print “$DATE $HOUR SU” >;>; $DATFILE
fi
fi
exit 0
# chmod 700 /opt/admin/scripts/rtlgn.sh
系统引导通知脚本(S99notify)
目的:当服务器启动时发出通知。
隶属:无
/etc/aliases – monitor (管理员的邮件和寻呼机)
# vi /etc/rc2.d/S99notify
#!/bin/ksh
PATH=/usr/sbin:/usr/bin
SRVNM=`uname –n`
# 下面的变量能够设多个邮件地址
MAILADD=monitor
Mail $MAILADD <<EOF
From: $0
To: MAILADD
Subject: Boot of $SRVNM
$SRVNM has booted up
If this news to you,please investigate.
`date`
EOF
Exit 0
# chmod 700 /etc/rc2.d/S99notify
安装LogSentry
LogSentry解析/var/adm/message并对攻击和入侵类文件发通知。定制忽略文件用以减少积极的失效。每天从cron执行发送报告并给管理员发邮件通知。让人感觉在单个服务器上集中logsentry并运行logsentry。参见:http://www.psionic.com/products/logsentry.html
文件系统监视脚本(mon_fs.sh)
目的:监视文件系统的尺寸,通过邮件发送通知。
隶属:mon_fs.dat-包括被警告前要监视那些文件系统、它们的容量有多大。
      /etc/aliases-status(管理员的邮件地址)
# vi /opt/admin/scripts/mon_fs.sh
#!/bin/ksh
#该脚本存放的目录
ADMINIR=/opt/admin/scripts
MAILADD=monitor
# 服务器的名称
SRVNM=`uname –n`
while read –r FS MAXCAP
do
CAPACITY=`df –k $FS | grep –v avail | awk {‘print $5’} | awk –F% {‘print $1’}`
If test $CAPACITY –gt $MAXCAP; then
From: $0
To: $MAILADD
Subject: File System on $SRVNM
$FS is at $CAPACITY% capacity on %SRVNM (Threshold is $MAXCAP%).
`date`
EOF
fi
done < $ADMINDIR/mon_fs.dat
exit 0
# vi /opt/admin/scripts/mon_fs.dat
/              90
/var            90
/opt            90

# chmod 600 /opt/admin/scripts/mon_fs.dat
# chmod 700 /opt/admin/scrits/mon_fs.sh

进程监控脚本(mon_procs.sh)
目的:确保进程在运行,通过邮件通知。
隶属:mon_procs.dat-包括进程名。
      /etc/aliases-status(管理员的邮件地址)
# vi /opt/admin/scripts/mon_procs.sh
#!/bin/ksh
ADMINDIR=/opt/admin/scripts
MAILADD=monitor
SRVNM=`uname –n`
while read PROG
wo
ANSWER=`ps –e –o comm | grep $PROG`
if test “$ANSWER” = “$PROG”; then
     sleep 1
else
     mail $MAILADD <<EOF
From: $0
To: $MAILADD
Subject: Missing process on $SRVNM
Checking $PROG on $SRVNM... not found!
EOF
fi
done < $ADMIDIR/mon_procs.dat
exit 0
# vi /opt/admin/scripts/mon_proc.dat
/usr/sbin/syslog
# chmod 700 /opt/admin/scripts/mon_procs.sh
# chmod 600 /opt/admin/scripts/mon_procs.dat
服务器监控脚本(mon_srv.sh)
目的:确保服务器能够响应ping,通过邮件通知。
隶属:mon_srv.dat-包括IP地址、监视者邮件地址、服务器名。
      /etc/aliases-status(管理员的邮件地址)
# vi /opt/admin/scripts/mon_srv.sh
#!/bin/ksh
ADMINDIR=monitor
while read –r IP SRVNM
do
if test `/usr/sbin/ping $IP | grep –c “is alive”` -eq 0; then
    #wait 5 minutes before checking again
   sleep 300
   if test `/usr/sbin/ping $IP | grep –c “is alive”` -eq 0 ; then
       mail $MAILADD <<EOF
From: $0
To: $MAILADD
Subject: $SRVNM Down
$SRVNM is noot responding.
EOF
    fi
fi
done < $ADMINIR/mon_srv.dat
exit 0
# vi /opt/admin/scripts/mon_srv.dat
192.168.1.103 hostname
# chmod 700 /opt/admin/scripts/mon_srv.sh
# chmod 600 /opt/admin/scripts/mon_srv.dat
用户磁盘空间监控脚本(maildu.sh)
目的:当用户的主目录超过100MB时通知用户,给局域网用户发邮件。
隶属:~/.forward – 包括用户的局域网邮件地址。
#  vi /opt/admin/scripts/maildu.sh
#!/bin/ksh
PATH=/usr/sbin:/usr/bin:/usr/ucb:/bin:.
HOMEDIR=/export/home
SRVNM=`uname –n`
#确保临时文件在退出前清理干净
trap ‘/bin/rm –fr $tmp; exit ‘ 0 1 2 3 15
WRKFILE=/tmp/prog$$
#检查用户使用的空间
cd $HOMEDIR
du –sk * | sort –nr >;>; $WRKFILE
#通知用户
while read –r MB NAME
do
if [ “$MB” –gt “102400” ] ; then
#通知root 用户
print “Mailing Disk Usage reminders out to:\n”
print “$NAME \t$MB KB\n”
if [ -f $HOMEDIR/$NAME/.forward ]; then
    MAILADD=`cat $HOMEDIR/$NAME/.forward`
else
    MAILADD=$NAME
fi
mail $MAILADD <<EOF
From: $0
To: $MAILADD
Subject: Disk Usage on $SRVNM
The automated disk usage utility indicates that you have $MB KB’s of
disk usage in your home directory on $SRVNM.You receive mail if you have more than 100MB
in your home directory. Please delete any excess files you have. Thank you.
UNIX System Administrators
EOF
fi
done < $WRKFILE
rm $WRKFILE
exit 0
# chmod 700 maildu.sh
性能监控脚本(mon_prf.sh)
目的:监视服务器的性能。使用vmstat iostat netstat 和其他性能察看命令,通过邮件通知用户。
隶属:/etc/aliases – status(管理员的邮件地址)
# vi /opt/admin/scripts/mon_prf.sh
#!/bin/ksh
PATH=$PATH:/usr/sbin:/usr/bin
SRVNM=`uname –n`
ADMINDIR=/opt/admin/scripts
DATDIR=/var/adm/log/mon_prf
if [ ! –d $DATDIR ] ; then
   mkdir –p $DATDIR
fi
MAILADD=monitor
VMSTAT=`vmstat 1 2 | tail –l `
# CPU性能(vmstat –r column)
#当’r’或者运行队列栏目每CPU的进程达到3个以上,CPU的能力明显不足,一个进程在#得到CPU前在等待队列中的等待时间加长。这会降低吞吐量,增大交互相应的时间。
CPUPERF=`echo $VMSTAT  | awk ‘{ print $1}`
if [ “$CPUPERF” –gt “3” ]; then
mail $MAILADD <<EOF
From: $0
To: $MAILADD
Subject: CPU Performance on $SRVNM
The vmstat tun queue column has exceeded 3 processes per CPU on $SRVNM.
There is insufficient CPU power for the load placed on the server.
EOF
fi
#CPU性能(vmstat – cpu id column)
#cpu id列指出哪个cpu在等待
CPUSTAT=`scho $VMSTAT | awk ‘{ print $22 }`
if [ “$CPUSTAT” –lt “10” ]; then
mail $MAILADD <<EOF
From: $0
To: $MAILADD
Subject: cpu Performance on $SRVNM
The vmstat cpu id column is less than 10 on $SRVNM.
The CPU is idle $CPUSTAT % of the time.
EOF
fi
#内存性能(vmstat –sr column)
#专家说当’sr’或扫描速度达到200以上,系统会以很高的速度扫描内存寻找空闲的页面。这指出活动的页面可能被进程窃取。过高的扫描速度会使系统比平常消耗更多的CPU资源。
MEMSTAT=`echo $VMSTAT | tail –l | awk ‘{ print $12 }`
if [ “$MEMSTAT” –gt “200” ]; then
mail $MAILADD <<EOF
From: $0
To: $MAILADD
Subject: Memory Performance on $SRVNM
According to vmstat,the scanrate on $SRVNM is $MEMSTAT.
This indicates that there is no enough memory the server’s current load.
EOF
fi
# TCP 连接
TCPCON=`netstat –aP tcp | tail +39 | wc –l`
if [ “$TCPCON” –gt “900” ]; then
   mail $MAILADD <<EOF
From: $0
To: $MAILADD
Subject: TCP Connections on $SRVNM
According to netstat –a,there are currently %TCPCON TCP Connections on
$SRVNM.This may or may not be cause for soncern.
EOF
fi
# NIC 输入错误
# netstat –i
# NETIDAT=`netstat –i | grep hme0`
#NICIE=`echo $NETIDAT | awk  {‘print $6’}`
if [ “$NICIE” –gt “10” ]; then
mail $MAILADD <<EOF
From: $0
To: $MAILADD
Subject: NIC Input Errors on $SRVNM
According to netstat –i, there are currently $NICIE input errors on $SRVNM hme0 on NIC
EOF
fi
# NIC 输出错误
#NICOE=`echo $NETIDAT | awk  {‘print $8’}`
if [ “$NICOE” –gt “10” ]; then
mail $MAILADD <<EOF
From: $0
To: $MAILADD
Subject: NIC Input Errors on $SRVNM
According to netstat –i, there are currently $NICOE output errors on $SRVNM hme0 on NIC
EOF
fi
#iostat
#磁盘性能
#生成iostat数据文件
# DATFILE=$DATDIR/iostat.dat
# cp $DATFILE $DATFILE.old
# cp /dev/null $DATFILE
#检查 iostat util 列
# IODAT=`iostat –Dl 20 –n | tail –l`
# DSKSTAT=`echo $IOSTAT | awk ‘{ print $3,$6,$9,$12,$15,$18,$21,$24,$27,$30,$33,$39,$42,$45,$48,$51,$54,$57,$60 }`
# 需要编辑下一行解决这个问题
# echo $DSKSTAT >;>; $DATFILE
# cat iostat.dat | awk {‘ print $2’}
while read –r
do
if [ “$REPLY” –gt “3” ]; then
mail $MAILADD <EOF
From: $0
To: $MAILADD
Subject: Disk Perfoemance on $SRVNM
According to iostat,the disk utilization on $SRVNM is greater than 3 on
the server’s hard disks.The indicates that the disk is being heavily used.
EOF
fi
Done <$DATFILE
#netstat
# CPU 数据
# mpstat
# swap -l
# /tmp (不作为交换空间)
# du –sk /tmp
exit 0
# chmod 700 /opt/admin/scripts/mon_prf.sh
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP