.系统各项指标检测

在UNIX中用sar命令进行系统维护


本文出自:[url]http://www.yesky.com/[/url] 作者: 周娟 (2002-01-07 08:10:00)


    在使用UNIX操作系统的过程中,我们常常会用到各种各样的问题,比如系统运行速度


突然变慢,系统容易死机或者主机所带的终端常出现死机,这时我们常常猜测,是硬


盘空间太小,还是内存不足?I/O出现瓶颈,或者是系统的核心参数出了问题?这时,


我们应该考虑使用系统给我们提供的sar命令来对系统作一个了解,该命令是系统维护


的重要工具,主要帮助我们掌握系统资源的使用情况,特别是内存和CPU 的使用情况,


是UNIX系统使用者应该掌握的工具之一。


sar 命令行的常用格式:





sar [options] [-A] [-o file] t [n]





在命令行中,n 和t 两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有


的参数,n为采样次数,是可选的,默认值是1,-o file表示将命令结果以二进制格式


存放在文件中,file 在此处不是关键字,是文件名。options 为命令行选项,sar命令


的选项很多,下面只列出常用选项:





-A:所有报告的总和。


-u:CPU利用率


-v:进程、I节点、文件和锁表状态。


-d:硬盘使用报告。


-r:没有使用的内存页面和硬盘块。


-g:串口I/O的情况。


-b:缓冲区使用情况。


-a:文件读写情况。


-c:系统调用情况。


-R:进程的活动情况。


-y:终端设备活动情况。


-w:系统交换活动。





例一:使用命令行 sar -u t n


例如,每60秒采样一次,连续采样5次,观察CPU 的使用情况,并将采样结果以二进制形式存入当前目录下的文件zhou中,需键入如下命令:





# sar -u -o zhou 60 5


  SCO_SV   scosysv 3.2v5.0.5 i80386   10/01/2001


    14:43:50   %usr   %sys  %wio    %idle(-u)


    14:44:50   0     1    4      94


    14:45:50   0     2    4      93


    Average    0     2    4      94





在显示内容包括:





  %usr:CPU处在用户模式下的时间百分比。


  %sys:CPU处在系统模式下的时间百分比。


  %wio:CPU等待输入输出完成时间的百分比。


  %idle:CPU空闲时间百分比。





在所有的显示中,我们应主要注意%wio和%idle,%wio的值过高,表示硬盘存在I/O瓶颈,


%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。





如果要查看二进制文件zhou中的内容,则需键入如下sar命令:





    # sar -u -f zhou





可见,sar命令即可以实时采样,又可以对以往的采样结果进行查询。





例二:使用命行sar -v t n





例如,每30秒采样一次,连续采样5次,观察核心表的状态,需键入如下命令:





# sar -v 30 5


      SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001


      10:33:23 proc-sz ov inod-sz ov file-sz ov lock-sz   (-v)


10:33:53 305/ 321  0 1337/2764  0 1561/1706 0 40/ 128


10:34:23 308/ 321  0 1340/2764  0 1587/1706 0 37/ 128  





显示内容包括:


proc-sz:目前核心中正在使用或分配的进程表的表项数,由核心参数MAX-PROC控制。


  inod-sz:目前核心中正在使用或分配的i节点表的表项数,由核心参数MAX-INODE控制。


  file-sz: 目前核心中正在使用或分配的文件表的表项数,由核心参数MAX-FILE控


制。


  ov:溢出出现的次数。


  Lock-sz:目前核心中正在使用或分配的记录加锁的表项数,由核心参数MAX-FLCKRE


控制。


实际使用表项/可以使用的表项数


显示内容表示,核心使用完全正常,三个表没有出现溢出现象,核心参数不需调整,如


果出现溢出时,要调整相应的核心参数,将对应的表项数加大。





例三:使用命行sar -d t n


例如,每30秒采样一次,连续采样5次,报告设备使用情况,需键入如下命令:


# sar -d 30 5





      SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001


11:06:43 device %busy   avque   r+w/s  blks/s  avwait avserv (-d)


11:07:13 wd-0   1.47   2.75   4.67   14.73   5.50 3.14


11:09:13 wd-0   1.97   21.78   5.86   34.06   69.66 3.35


Average wd-0   1.15   12.11   4.09   15.19   31.12 2.80  





device: sar命令正在监视的块设备的名字。


  %busy: 设备忙时,传送请求所占时间的百分比。


  avque: 队列站满时,未完成请求数量的平均值。


  r+w/s: 每秒传送到设备或从设备传出的数据量。


  blks/s: 每秒传送的块数,每块512字节。


  avwait: 队列占满时传送请求等待队列空闲的平均时间。


  avserv: 完成传送请求所需平均时间(毫秒)。





在显示的内容中,wd-0是硬盘的名字,%busy的值比较小,说明用于处理传送请求的有


效时间太少,文件系统效率不高,一般来讲,%busy值高些,avque值低些,文件系统


的效率比较高,如果%busy和avque值相对比较高,说明硬盘传输速度太慢,需调整。





例四:使用命行sar -b t n





例如,每30秒采样一次,连续采样5次,报告缓冲区的使用情况,需键入如下命令:


# sar -b 30 5


  SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001


14:54:59 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s (-b)


14:55:29 0  147  100  5  21  78   0   0


14:57:29 0   89  100  4  12  66   0   0


Average  1  156   99  5  28  80   0   0





bread/s: 每秒从硬盘读入系统缓冲区buffer的物理块数。


lread/s: 平均每秒从系统buffer读出的逻辑块数。


%rcache: 在buffer cache中进行逻辑读的百分比。


bwrit/s: 平均每秒从系统buffer向磁盘所写的物理块数。


lwrit/s: 平均每秒写到系统buffer逻辑块数。


%wcache: 在buffer cache中进行逻辑读的百分比。


pread/s: 平均每秒请求物理读的次数。


pwrit/s: 平均每秒请求物理写的次数。





在显示的内容中,最重要的是%cache和%wcache两列,它们的值体现着buffer的使用效


率,%rcache的值小于90或者%wcache的值低于65,应适当增加系统buffer的数量,buffer


数量由核心参数NBUF控制,使%rcache达到90左右,%wcache达到80左右。但buffer参数 值的多少影响I/O效率,增加buffer,应在较大内存的情况下,否则系统效率反而得不到提高。





例五:使用命行sar -g t n


例如,每30秒采样一次,连续采样5次,报告串口I/O的操作情况,需键入如下命令:


# sar -g 30 5


SCO_SV scosysv 3.2v5.0.5 i80386  11/22/2001


17:07:03  ovsiohw/s  ovsiodma/s  ovclist/s (-g)


17:07:33   0.00   0.00   0.00


17:09:33   0.00   0.00   0.00


Average    0.00   0.00   0.00





ovsiohw/s:每秒在串口I/O硬件出现的溢出。


ovsiodma/s:每秒在串口I/O的直接输入输出通道高速缓存出现的溢出。


ovclist/s :每秒字符队列出现的溢出。





在显示的内容中,每一列的值都是零,表明在采样时间内,系统中没有发生串口I/O溢


出现象。





sar命令的用法很多,有时判断一个问题,需要几个sar命令结合起来使用,比如,怀疑


CPU存在瓶颈,可用sar -u 和sar -q来看,怀疑I/O存在瓶颈,可用sar -b、sar -u和


sar-d来看,以上举出的五例仅仅是其中的一部分





.禁止PING

1)禁止  : 将icmp_echo_ignore_all文件内容改为1后为禁止PING
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all


2)解禁  :
将icmp_echo_ignore_all文件内容改为0后为解除禁止PING
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all


.改变ping 的TTL值(cgweb)
 #sysctl -w net.ipv4.ip_default_ttl=N
 (N=0~255),若N>255,则ttl=0


.改变系统配置默认值(houaq)
 编辑/etc/sysctl.conf, 例如,将
   net.ipv4.ip_forward = 0
 变为
  net.ipv4.ip_forward = 1
 重启后生效,用sysctl -a查看可知


.允许|禁止root通过SSH登陆
 修改sshd_config:PermitRootLogin no|yes


.模仿超级终端,LINUX里什么程序连接路由器和交换机(alstone)
 minicom


.用什么工具做***检测
 snort


.Linux下检测程序内存泄漏的工具
 cchecker或是efence库都可以


.监视所有通过本机网卡的数据
 tcpdump iptraf


.关闭用户的POP3权限(tiansgx)
  把POP3的端口关了就可以了。 在文件/etc/services中找到这一行 pop-3 110/tcp 把这一行前加个#,把它注释掉就可以了。


.防止任何人使用su命令成为root(xiaohu0)
  1.vi /etc/pam.d/su
    auth sufficient /lib/security/pam_rootok.so debug
    auth required /lib/security/pam_wheel.so group=wheel
  2.在/etc/pam. d/su配置文件中定义了wheel组


.网卡激活了,却上不了网,怎么办?(Slock )
  trace一下,看看到底是在那一块被阻住的。
  1.Ping自己
  2.Ping网关
  3.Ping DNS
  4.trace DNS
  If All=ok
  then nslookup [url]www.csai.cn[/url]
  Ping csais address
  Tra csai address
  基本上就可以知道结果了


.如何得到网卡的MAC地址
  arp -a | awk {print $4}


.如何得到网卡的IP地址(mb)
  ifconfig eth0 |awk /inet addr/ {split($2,x,":");print x[2]}


.用netstat  -atuv检测正在使用的端口

-bash-2.05b$ netstat  -atuv  | more

Active Internet connections (servers and established)
Proto
Recv-Q Send-Q      Local
Address            Foreign
Address           State      

tcp        0      0                 *:32768                  
*:*                     LISTEN      

tcp        0      0                  *:7937         
*:*                     LISTEN      

tcp        0      0              CnsLinux3:32769           *:*                     LISTEN      

tcp        0      0              CnsLinux3:32770           *:*                     LISTEN      



他们中大部分通过inetd守护进程控制的,可通过过修改/etc/xinetd.d内的amanda   
chargen      daytime  来实现禁止和开启。


.判定哪些端口在监听来自网络上的 TCP 连接:
 nmap -sT -O localhost


.查出22端口现在运行什么程序
 lsof -i :22
 或
 netstat -anp | grep 22




.用 ps 命令检查机器上正在运行的守护程序

ps xc -u 0




.列出当前对外开放的服务端口

[root@localhost ~]# nmap -p1-65535 localhost



Starting nmap 3.70 ( [url]http://www.insecure.org/nmap/[/url] ) at 2006-04-13 08:48 CST

Interesting ports on localhost.localdomain (127.0.0.1):

(The 65528 ports scanned but not shown below are in state: closed)

PORT      STATE SERVICE

22/tcp    open  ssh

25/tcp    open  smtp

111/tcp   open  rpcbind

139/tcp   open  netbios-ssn

445/tcp   open  microsoft-ds

631/tcp   open  ipp

32769/tcp open  unknown



Nmap run completed -- 1 IP address (1 host up) scanned in 13.563 seconds





[root@localhost ~]# nmap -sT -O localhost



Starting nmap 3.70 ( [url]http://www.insecure.org/nmap/[/url] ) at 2006-04-13 08:49 CST

Interesting ports on localhost.localdomain (127.0.0.1):

(The 1654 ports scanned but not shown below are in state: closed)

PORT    STATE SERVICE

22/tcp  open  ssh

25/tcp  open  smtp

111/tcp open  rpcbind

139/tcp open  netbios-ssn

445/tcp open  microsoft-ds

631/tcp open  ipp

Device type: general purpose

Running: Linux 2.4.X|2.5.X|2.6.X

OS details: Linux 2.5.25 - 2.6.3 or Gentoo 1.2 Linux 2.4.19 rc1-rc7)

Uptime 0.023 days (since Thu Apr 13 08:15:39 2006)



Nmap run completed -- 1 IP address (1 host up) scanned in 2.617 seconds




.禁止普通用户使用su命令
  1)修改/etc/pam.d/su文件,除去   auth  required  /lib/security/$ISA/pam_wheel.so use_uid的屏蔽标识#。
  2)使用/usr/sbin/usermod -G10 bjecadm将bjecadm这个账号加入gid为10的组,就是wheel组
  3)这样仅有bjecadm用户可以使用su使用切换成根用户


.
限制根用户可以登陆的终端/etc/securetty
  1) 当根用户试图登陆时,login程序首先查阅/etc/securetty, 看看其中是否列出了当前字符终端设备。
  1>如果没有找到, login会认为它不安全,而提示口令,而后报告Login  incorrect 错误;
  2>如果没有/etc/securetty文件,根用户可以从任何一台字符终端上登陆,从而造成安全问题
  3>/etc/securetty的权限应是600或400


.查看系统登陆信息设置/etc/issue
 [root@CnsLinux3 root]# cat  /etc/issue
 Red Hat Enterprise Linux AS release 3 (Taroon Update 2)
 Kernel \r on an \m



.关掉不必要的服务

1>finger

1>>一个远端的用户可以通过它获得大量有关用户的信息

用户目前登陆的终端,多长时间,是什么系统连接

用户有电子邮件吗,是否还未被读?

他在/etc/passwd中的GECOS入口的内容即注释

他登陆的目录路径

使用的是什么shell

finger  [email]xxxx@373.com[/email]



查看是否有管理员在暗地监视他,而列出所有的登陆用户

finger  @373.com



服务fingerd被/etc/inetd.conf中的一个表项所控制



2>关闭rwhod

#rpm  -e rwho



3>关闭rwalld



4>关闭snmpd

snmp简单网络管理协议,它使远程管理变得更容易,snmp使用的udp端口是161

# chkconfig --del   snmpd



5>关闭nfs和nfslock

在#ntsysv中去掉nfs和nfslock

停止

/etc/rc.d/init.d/nfs  stop

/etc/rc.d/init.d/nfslock stop



chkconfig --del nfs

chkconfig --del  nfslock



6>关掉rsh\rcp\rlogin\rexec



7>关掉fdmount

程序fdmount允许软盘组的用户从软盘驱动器(假设set-UID被禁用)安装文件系统。允许软盘组的任何人得到根用户带来的一个缓冲区溢出脆弱之处在2000年5月被弄明白。建议通过下述命令禁用fdmount

  chmod  0  /usr/bin/fdmount



8>关闭掉Echo和Chargen



9>关闭talk和ntalk\tftp




.TCP 会绕程序和***警告



如果某个主机或网络被发现正在***服务器,TCP 会绕程序可以通过 spawn 指令对来自该主机或网络的后续***向管理员发出警告。



在这个例子中,假定某个来自 206.182.68.0/24 网络的怪客被发现正在试图***服务器。如果把以下行添加到 /etc/hosts.deny 文件中,连接企图就会被拒绝并记录在一个特殊的文件中。



ALL : 206.182.68.0 : spawn /bin/ 'date' %c %d >> /var/log/intruder_alert%d 代符提供***者其它访问的服务名称。



要运行连接并记录日志,把 spawn 指令放在 /etc/hosts.allow 文件中。



注记 因为 spawn 指令执行任何 shell 命令,你可以创建一个脚本,该脚本会在某个特定客户企图连接服务器的时候通知管理员或执行一系列命令。



.控制服务器资源



xinetd 的另一个重要功能是它能够控制从属服务可以利用的资源量。



它通过以下指令来达到这个目的:

    * cps = <number_of_connections> <wait_period> — 指定每秒钟内被允许到服务的连接数量。该指令只接受整数值。
    * instances = <number_of_connections> — 指定允许到服务的连接总数。该指令接受整数值或 UNLIMITED。
    * per_source = <number_of_connections> — 指定每个主机被允许到服务的连接数量。该指令接受整数值或 UNLIMITED。
    * rlimit_as = <number[K|M]> — 指定服务可以占用的内存地址空间数量,以千字节或兆字节为单位。该指令接受整数值或 UNLIMITED。
    * rlimit_cpu = <number_of_seconds> — 指定服务占用 CPU 的时间(以秒为单位)。该指令接受整数值或 UNLIMITED。

使用这些指令有助于防止某个 xinetd 服务大量占用系统,从而导致“拒绝服务”情况的出
现。



.保护 Portmap 的安全性



portmap 服务是用于 RPC 服务(如 NIS 和 NFS)的动态端口分配守护进程。它的验证机制比较薄弱,而且具备为它所控制的服务分配大范围端口的能力。由于这些原因,要保护它的安全比较困难。



如果运行 RPC 服务,请遵守以下基本规则。



1) 使用 TCP 会绕程序来保护 portmap。



使用 TCP 会绕程序来限制可以使用 portmap 服务的网络或主机这一点很重要,因为 portmap 没有内建的验证方式。



更进一步,在限制对服务的使用时,只使用 IP 地址。避免使用主机名,因为主机名可以通过 DNS 污染或其它方法被伪造。





2) 使用 IPTables 来保护 portmap



要进一步限制对 portmap 服务的使用,在服务器上添加 IPTables 规则来限制到指定网络的进出是一个好办法。



以下是两个 IPTables 命令的例子,允许网络 192.168.0/24TCP 和 localhost(Nautilus 程序使用的 sgi_fam 服务所必需的)到 portmap 服务(监听端口111)的连接。所有其它分组都被放弃。



iptables -A INPUT -p tcp -s! 192.168.0.0/24  --dport 111 -j
DROP
iptables -A INPUT -p tcp -s 127.0.0.1  --dport 111 -j
ACCEPT
要以相似的方法限制 UDP 交通,使用以下命令。



iptables -A INPUT -p udp -s! 192.168.0.0/24  --dport 111 -j DROP




.保护 Apache HTTP 服务器的安全

 

Apache HTTP 服务器是红帽企业 Linux 包括的最稳定和最安全的服务之一。保护 Apache HTTP 服务器安全的方法和技术多得数不胜数 — 在这里我们无法逐一详述。

 

在配置 Apache HTTP 服务器时阅读它的文档是很重要的。这些文档包括:《红帽企业 Linux 参考指南》的“Apache HTTP 服务器”这一章;《红帽企业 Linux 系统管理指南》的“Apache HTTP 服务器 配置”这一章;以及在 [url]http://www.redhat.com/docs/manuals/stronghold/[/url] 上的原有手册。

 

以下是管理员应该小心使用的配置选项列表。

 

 

1)修改/etc/httpd/conf.d/welcome.conf,并注释掉所有默认内容

[root@192 conf.d]# cat  welcome.conf

#

# This configuration file enables the default "Welcome"

# page if there is no default index page present for

# the root URL.  To disable the Welcome page, comment

# out all the lines below.

#

#<LocationMatch "^/+$">

#    Options -Indexes

#    ErrorDocument 403   /error/noindex.html

#</LocationMatch>



 

FollowSymLinks

 

该指令被默认启用,在创建到万维网服务器的文档根的符号链接时请小心。例如,提供一个到 / 的符号链接就不是个好主意。

 

 

2)Indexes 指令

 

该指令被默认启用,但它可能不应该被启用。要阻止访问者浏览服务器上的文件,你可以删除该指令。

 

 

3)UserDir 指令

 

UserDir 指令被默认禁用,因为它可以确认某个用户帐号在系统上是否存在。

要启用服务器上的用户目录浏览,请使用以下指令:

 

UserDir enabled UserDir disabled root这些指令为除了 /root/ 以外的所有用户目录激活浏览。

要把用户添加到禁用帐号列表中,在 UserDir disabled 行中添加一个用空格隔开的用户列表。

 

 

4)不要删除 IncludesNoExec 指令

 

按照默认设置,服务器端包括(server-side includes)模块不能执行命令。除非在极端必要的情况下,建议你不要改变这个设置,因为它有可能会使***者能够在系统上执行命令。

 

 

5)限制对可执行目录的权限

 

对于任何包含脚本或 CGI 的目录,请确定只给根用户以写权限。这可以通过键入以下命令来达到:

 

chown root <directory_name>

chmod 755 <directory_name>

 

还有,总是在把脚本放入生产环境之前校验它们在系统上的运行情况符合你的设想。

 

 

6)报错提示文档

<Directory "/var/www/html">

     Options  FollowSymLinks   #去掉了Options Index FollowSymLinks中的 Index

 

     ErrorDocument 400 "BAD_REQUEST"

     ErrorDocument 401 "UNAUTHORIZED"

    ErrorDocument 403  "You don't have permission to access / on this server."

    ErrorDocument 404   "The requested URL /a.php was not found on this server."

     ErrorDocument 405 "METHOD_NOT_ALLOWED"

     ErrorDocument 408 "REQUEST_TIME_OUT"

     ErrorDocument 410 "GONE"

     ErrorDocument 411 "LENGTH_REQUIRED"

     ErrorDocument 412 "PRECONDITION_FAILED"

     ErrorDocument 413 "REQUEST_ENTITY_TOO_LARGE"

     ErrorDocument 414 "REQUEST_URI_TOO_LARGE"

     ErrorDocument 415 "UNSUPPORTED_MEDIA_TYPE"

     ErrorDocument 500 "INTERNAL_SERVER_ERROR"

     ErrorDocument 501 "NOT_IMPLEMENTED"

     ErrorDocument 502 "BAD_GATEWAY"

     ErrorDocument 503 "SERVICE_UNAVAILABLE"

     ErrorDocument 506 "VARIANT_ALSO_VARIES"

</Directory>



.只允许部分IP登陆ssh
 如果用TCP_WRAPPERS来增强我们站点的安全性简直是举手之劳,
 1)你可以将禁止所有的请求放入“ALL :ALL ”到/etc/hosts.deny 中,
 2)然后放那些明确允许的请求到/etc/hosts.allow中,
 3)如:sshd: 192.168.1.10/255.255.255.0 [url]www.test.com[/url]

  对IP地址192.168.1.10和主机名[url]www.test.com[/url] ,允许通过ssh 连接。
 4)配置完后,用tcpdchk 检查,你可以直接执行:tcpdchk。tcpchk是TCP_Wrapper配置检查工具,它检查你的tcp wrapper 配置并报告所有发现的潜在/ 存在的问题



.禁止不用的帐户登陆
 如lp, sync, shutdown, halt, news, uucp, operator, games, gopher等


.设置最短密码长度
 修改密码长度:设置为不少于8位的。
 修改最短密码长度需要编辑login.defs文件(vi /etc/login.defs),把下面这行

    PASS_MIN_LEN 5 (默认的情况)
 改为

    PASS_MIN_LEN 8 (修改后的情况)
 login.defs文件是login程序的配置文件。


.Shell命令记录.bash_history删除
 Bash shell在“~/.bash_history”(“~/”表示用户目录)文件中保存了500条使用过的命令,这样可以使你输入使用过的长命令变得容易。每个在系统中拥有账号的用户在他的目录下都有一个“.bash_history”文件。


 bash shell应该保存少量的命令,并且在每次用户注销时都把这些历史命令删除。

第一步:



“/etc/profile”文件中的“HISTFILESIZE”和“HISTSIZE”行确定所有用户的“.bash_history”文件中可以保
存的旧命令条数。强烈建议把把“/etc/profile”文件中的“HISTFILESIZE”和“HISTSIZE”行的值设为一个较小的数,比如
30。编辑profile文件(vi /etc/profile),把下面这行改为:

HISTFILESIZE=30

HISTSIZE=30

这表示每个用户的“.bash_history”文件只可以保存30条旧命令。


 第二步:


 网管还应该在"/etc/skel/.bash_logout" 文件中添加下面这行"rm -f $HOME/.bash_history" 。这样,当用户每次注销时,“.bash_history”文件都会被删除.



.web日志分析
webalizer是一个高效的、免费的web服务器日志分析程序。其分析结果以HTML文件格式保存,从而可以很方便的通过web服务器进行浏览。Internet上的很多站点都使用webalizer进行web服务器日志分析。Webalizer具有以下一些特性:



1. 为是用C写的程序,所以其具有很高的运行效率。在主频为200Mhz的机器上,webalizer每秒钟可以分析10000条记录,所以分析一个40M大小的日志文件只需要15秒。



2. webalizer支持标准的一般日志文件格式(Common Logfile
Format);除此之外,也支持几种组合日志格式(Combined Logfile
Format)的变种,从而可以统计客户情况以及客户操作系统类型。并且现在webalizer已经可以支持wu-ftpd
xferlog日志格式以及squid日志文件格式了。



3. 支持命令行配置以及配置文件。



4. 可以支持多种语言,也可以自己进行本地化工作。



5. 支持多种平台,比如UNIX、linux、NT, OS/2 和 MacOS等。



安装:



1.从webalizer的官方站点[url]http://www.mrunix.net/webalizer/[/url]下载,尽量获得当前的最新版本。



2.首先解开源代码包:tar xvzf 下在到的.tgz包



3.在生成的目录中有个lang目录,该目录中保存了各种语言文件,如果没有中文支持,可以考虑自己重新翻译一下。



4.然后进入生成的目录:

./configure

make --with-language=Chinese (如果有简体中文支持的话)



5.编译成功后,会产生一个webalizer可执行文件,可以将其拷贝到/usr/sbin/目录下:

cp webalizer /usr/sbin/

然后就可以开始配置webalizer了。



配置:



上面说过,可以通过命令行配置webalizer,也可以通过配置文件进行配置,在本文中我们将介绍使用命令行参数进行配置,需要了解配置文件使用方法可以参考README文件,里面有很详细的介绍。



可以执行webalizer –h得到所有命令行参数:

Usage: webalizer [options] [log file]

-h = 打印帮助信息

-v -V = 打印版本信息

-d = 打印附加调试信息

-F type = 日志格式类型. type= (clf | ftp | squid)

-i = 忽略历史文件

-p = 保留状态 (递增模式)

-q = 忽略消息信息

-Q = 忽略所有信息

-Y = 忽略国家图形

-G = 忽略小时统计图形

-H = 忽略小时统计信息

-L = 忽略彩×××例

-l num = 在图形中使用数字背景线

-m num = 访问超时 (seconds)

-T = 打印时间信息

-c file = 指定配置文件

-n dir = 结果输出目录

-t num = 显示前几名客户类型

-C num = 显示前几名国家

-R num = 显示前几名链接

-S num = 显示前几名客户

-U num = 显示前几名URLs

-e num = 显示前几名访问页面

-E num = 显示前几名不存在的页面

-X = 隐藏个别用户

-D num = DNS 进程数 (0=禁用dns)



假设,web服务器主机名为[url]www.test.com[/url],统计站点域名为[url]www.test.com[/url], 访问日志为/var/log/httpd/access_log, 我们将webalizer分析结果输出到/var/www/html/log下面。则我们可以建立以下脚本/etc/rc.d/webalizer:



#!/bin/sh

run=/usr/sbin/webalizer

$run -F clf -p -n " " -t "www.test.com"

-o /var/www/html/log /var/log/httpd/access_log



说明:



-F clf 指明我们的web日志格式为标准的一般日志文件格式(Common Logfile Format)

-p 指定使用递增模式,这就是说每作一次分析后,webalizer会生产一个历史文件,这样下一次分析时就可以不分析已经处理过的部分。这样我们就可以在短时间内转换我们的日志文件,而不用担心访问量太大时日志文件无限增大了。

-n “ “ 指定服务器主机名为空,这样输出结果会美观一些。

-o “[url]www.test.com[/url]” 指定输出结果标题.

/var/log/httpd/access_log:指定日志文件



然后在/etc/crontab中加入:

01 1 * * * root /etc/rc.d/webalizer

即每天凌晨1点执行该脚本。

然后运行/etc/rc.d/init.d/crond reload重载入crond服务。



测试:



执行以下命令:

# /etc/rc.d/webalizer

然后在浏览器中访问[url]http://www.test.com/log/[/url]就可以看到webalizer的分析结果了



.RPC守护进程错误使用
对Unix威胁最大可以说就是rpc上面的漏洞,远程过程调用(Remote Procedure
Call)允许一台计算机上的程序去执行另一台计算机上的程序。它们广泛的应用在各种网络服务中,如文件共享服务NFS。有很多漏洞是RPC本身的缺陷导
致的,它们正不停的涌现出来。有很明显的证据表明,1999年末2000年初大规模的分布式拒绝服务***中,很多被作为***跳板的牺牲品就是因为存在
RPC漏洞。在Solar Sunrise事件期间,对美国陆军广为人知的成功***就是因为在数百台国防部的系统中找到了一个RPC漏洞。


.BIND程序存在的漏洞,得用nxt, qinv, in.named可以真接得到root权限
 BIND(Berkeley Internet Name Domain)软件包是域名服务(DNS)的一个应用最广泛的实现软件--我们所有人都通过它来定位Internet上的系统,只需知道域名(如[url]www.cnns.net[/url])而不用知道IP地址,由此可体会它的重要性--这使它成为最受欢迎的***目标。


.ff.core缓冲溢出
ff.core存在缓冲溢出漏洞,一个普通用户只要执行一个简单的脚本,就可以令缓冲区溢出从而得到一个root shell


.solaris安全设置---PROM OpenBoot和物理安全
 1)OpenBoot安全级别


  none    :不需要任何口令,所有OpenBoot设置都可以修改,任何人只要物理接触到了主控台,就可以完全控制
 
command : 除了boot和go之外所有命令都需要口令。

full          : 除了go命令之外所有命令都需要口令


 
2)改变OpenBoot安全级别
  首先,使用eeprom security-password命令来设置OpenBoot口令
  其次,在root登陆状态使用eeprom security-mode=command命令改变安全级别为commad或在OK状态: ok setenv security-mode=command的密码保护来实现



.solaris安全设置---文件系统安全
·每个文件对应一个"i节点","i节点"包括UID(文件拥有者)、GID(文件所在组)、模式(文件的权限)、文件大小、文件类型、ctime("i节点"上次修改时间)、mtime(文件上次修改时间)、atime(文件上次访问时间)、nlink(链接数)。它表示了文件的基本属性。



·根目录下各级目录



/bin         用户命令的可执行文件

/dev         特殊设备文件

/etc         系统执行文件、配置文件、管理文件,主要是配置文件

/home        用户起始目录

/lib         引导系统以及在root文件系统中运行命令所需的共享库文件

/lost+found  与特定文件系统断开连结的丢失文件

/mnt         临时安装的文件系统(如光驱、软驱)

/proc        一个伪文件系统,用来作为到内核数据结构或正在运行的进程的接口(用于调试)

/sbin        只有root使用的可执行文件和只需要引导或安装/usr的文件

/tmp         临时文件

/usr         为用户和系统命令使用的可执行文件、头文件、共享库、帮助文件、本地程序(在/usr

/local中)

/var         用于电子邮件、打印、cron等的文件,统计文件,日志文件





·文件系统有多种类型,unix内核支持如下文件系统:

1) ext2          固定和可移动磁盘都支持的一种高性能文件系统,用于linux

2) msdos         由MS-DOS和Windows使用

3) umsdos        Linux使用的一种扩充的DOS文件系统,支持长文件名、权限设置

4) iso9660       遵从ISO9660标准的CD-ROM文件系统

5) hpfs          High Performance Filesystem,高性能文件系统,OS/2使用

6) minix         在Minux OS中使用,最早的Linux文件系统

7) nfs           用来访问远程计算机中磁盘的网络文件系统

8) swap          用作交换的磁盘分区



3.1.2.2 文件权限

1) 文件权限是unix文件系统安全的关键。



2)
Unix中的每个用户有一个唯一的用户名和UID(用户ID号),每个用户属于一个或多个组。基本分组成员在/etc/passwd中定义,附加的分组成
员在/etc/group中定义。例如,用户tiger的UID为225,分组为11(students),此外,他还是分组185
(postgraduates)的成员。



3) 每个文件和目录有三组权限,一组是文件的拥有者、一组是文件所属组的成员、一组是其他所有用户。"r"表示可读,"w"表示可写,"x"表示可执行。一共9位(每组3位),合起来称为模式位(mode bits)。



4) 模式位通常由一列10个字符来表示,每个字符表示一个模式设置,第一个指明文件类型,如

(d表示目录,-表示普通文件,l表示链接文件等等)。

例如,用ls -l 命令显示如下:

drwxr-xr-x 2    root  
root  
1024     Aug  13
09:22    backup/

-rw-r--r-- 1      root  
root  
1824     Apr   21
18:45    client.c

-rw------- 1      root  
root    65536   Apr   22
17:56    core



例如最后一行以"-"开始,表示test使一个普通文件,文件拥有者可以读写执行、本组其他成员可以读执行、其他用户可以读执行。我们可以用chmod和umask命令来改变权限,这很简单,察看相应的帮助就知道怎么修改权限。





.测试IDE磁盘性能

[root@localhost ~]# /sbin/hdparm -tT /dev/hda



/dev/hda:

 Timing cached reads:   1124 MB in  2.00 seconds = 561.52 MB/sec

 Timing buffered disk reads:   30 MB in  3.03 seconds =   9.90 MB/sec



.使用多个交换分区


如果你的系统有多块硬盘,可以考虑使用多个交换分区。每个磁盘上划分一个交换分区。通过在/etc/fstab文件中设置pri 选项,可使多个交换分区具有同样的优先级。Linux系统即可并行地使用它们。这样即可提高交换分区的性能。



/dev/hda5 swap swap defaults,pri=5 0 0


/dev/hdc5 swap swap defaults,pri=5 0 0


.最大打开文件数比较合理的设置为每4M物理内存256,比如256M内存可以设为16384,而最大的使用的i节点的数目应该是最大打开文件数目的3倍到4倍。



.分区

分区的时候,根据计划安装的软件灵活决定分区。一般分区有:/,/boot,/root,/home,
/usr,/var和swap分区,其中swap分区类型和其他不同需要专门选择一下,它的空间一般是物理内存的两倍即可。/root分区是紧急情况
root用的,有64兆就行了。


.如果和Windows混装的时候,装完了系统起不来了。可以用98启动盘启动,然后用FDISK /MBR回复主引导分区来保住Windows分区。

.网卡设置


[root@192 greensoft]#cat /etc/sysconfig/network-scripts/ifcfg-eth0