现在的位置: 首页 > 综合 > 正文

CNSCN安全性能检测

2013年10月19日 ⁄ 综合 ⁄ 共 27910字 ⁄ 字号 评论关闭
原贴:http://blog.chinaunix.net/u/13329/showart.php?id=99059

 
CNSCN安全性能检测
 
 
[更多安全问题请访问] http://www.cnscn.org

.系统各项指标检测
在UNIX中用sar命令进行系统维护
本文出自:http://www.yesky.com/ 作者: 周娟 (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 www.csai.cn
  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 ( http://www.insecure.org/nmap/ ) 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 ( http://www.insecure.org/nmap/ ) 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  xxxx@373.com

查看是否有管理员在暗地监视他,而列出所有的登陆用户
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 服务器 配置”这一章;以及在 http://www.redhat.com/docs/manuals/stronghold/ 上的原有手册。
  
以下是管理员应该小心使用的配置选项列表。
  
  
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 www.test.com
  对IP地址192.168.1.10和主机名www.test.com ,允许通过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的官方站点http://www.mrunix.net/webalizer/下载,尽量获得当前的最新版本。

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 name = 使用的主机名
-o dir = 结果输出目录
-t name = 指定报告题目上的主机名
-a name = 隐藏用户代理名称
-r name = 隐藏访问链接
-s name = 隐藏客户
-u name = 隐藏URL
-x name = 使用文件扩展名
-P name = 页面类型扩展名
-I name = index别名
-A num = 显示前几名客户类型
-C num = 显示前几名国家
-R num = 显示前几名链接
-S num = 显示前几名客户
-U num = 显示前几名URLs
-e num = 显示前几名访问页面
-E num = 显示前几名不存在的页面
-X = 隐藏个别用户
-D name = 使用dns缓存文件
-N num = DNS 进程数 (0=禁用dns)

假设,web服务器主机名为www.test.com,统计站点域名为www.test.com, 访问日志为/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 “www.test.com” 指定输出结果标题.
/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
然后在浏览器中访问http://www.test.com/log/就可以看到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上的系统,只需知道域名(如www.cnns.net)而不用知道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
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:0A:EB:16:B9:85
BROADCAST=192.168.0.255
IPADDR=192.168.0.88
NETMASK=255.255.255.0
NETWORK=192.168.0.0

ONBOOT=yes
TYPE=Ethernet

.超时自动注销
在/etc/profile中加入
export TMOUT=300           五分钟内没有操作则自动注销 (秒)

.切换桌面
#switchdesk   gnome  或 kde

.修改系统时间
date -s “2003-04-14 cst”,cst指时区,时间设定用date -s 18:10

.设置启动模式
·/etc/inittab
id:3:initdefault文本模式
id:5:initdefault图形模式

.设置主机名
[root@localhost default]# vi /etc/sysconfig/network

NETWORKING=yes
#HOSTNAME=localhost.localdomain
HOSTNAME=cnscnlinux

[root@localhost default]# /etc/rc.d/init.d/network restart
正在关闭接口 eth0:                                         [  确定  ]
正在关闭接口 eth1:                                         [  确定  ]
关闭环回接口:                                                  [   确定  ]
设置网络参数:                                                  [   确定  ]
弹出环回接口:                                                  [   确定  ]
弹出界面 eth0:                                               [  确定  ]
弹出界面 eth1:                                               [  确定  ]
[root@localhost default]# hostname
cnscnlinux

.鼠标设置
redhat-config-mouse

COM1在linux中是/dev/ttyS0
COM2在linux中是/dev/ttyS1
设置成左键鼠标 $gpm  -B  321

.时区设置
/usr/sbin/timeconfig

.显示器休眠
不让显示器休眠
setterm -blank 0
setterm -blank n (n为等待时间)

.vnc图形显示设置
1)在xterm中执行 xhost + 192.168.0.249
2) #export  DISPLAY=192.168.0.88:0
3) 修改vi  $HOME/.vnc/xstartup ,把所有内容注释掉,在最后添加startkde &
[root@CnsLinux3 root]# vi  $HOME/.vnc/xstartup
#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
#[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
#xsetroot -solid grey
#vncconfig -iconic &
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
startkde &
4)重启vncserver
(确保nfs服务的运行)

.制作启动盘
/sbin/mkbootdisk

.防一用户名由两个人同时登陆
echo "* hard maxlogins 2" >> /etc/security/limits.conf

Notes: This setting do not affact root account.

.防火墙配置
/usr/sbin/lokkit

.改变机器语言
[root@CnsLinux3 sbin]# vi  /etc/sysconfig/i18n   
#LANG="en_US.UTF-8"                            #英文
LANG="zh_CN.GB18030"                            #中文
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"    #所支持的语言
SYSFONT="latarcyrheb-sun16"                   #使用的字体

========================================================

//推荐配置
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"


export LANG=zh_CN.GB1830
export LC_ALL=Zh_CN

.给网卡加第二个IP地址
ifconfig eth0:x ip up
x可以代表很多,就是一块网卡可以绑定很多IP地址。

[root@book ~]# ifconfig eth0:1 192.168.0.89 up
[root@book ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0A:EB:16:BA:87  
          inet addr:192.168.0.88  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20a:ebff:fe16:ba87/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:303011 errors:0 dropped:0 overruns:0 frame:0
          TX packets:87302 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:33526346 (31.9 MiB)  TX bytes:35230323 (33.5 MiB)
          Interrupt:5 Base address:0xc800

eth0:1    Link encap:Ethernet  HWaddr 00:0A:EB:16:BA:87  
          inet addr:192.168.0.89  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:5 Base address:0xc800

[root@book ~]# ping 192.168.0.89
PING 192.168.0.89 (192.168.0.89) 56(84) bytes of data.
64 bytes from 192.168.0.89: icmp_seq=0 ttl=64 time=0.082 ms
64 bytes from 192.168.0.89: icmp_seq=1 ttl=64 time=0.071 ms
--- 192.168.0.89 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.071/0.076/0.082/0.010 ms, pipe 2

.禁止文件被rm掉 (但这样文件就不可修改了)
[root@book ~]# touch a.txt

[root@book ~]# chattr +i a.txt

[root@book ~]# rm  -f a.txt
rm: cannot remove `a.txt': Operation not permitted

[root@book ~]# ls
anaconda-ks.cfg  a.txt  Desktop  firstboot.1120181163.33  install.log  install.log.syslog

[root@book ~]# chattr  -i  a.txt

[root@book ~]# rm  -f a.txt

[root@book ~]# ls
anaconda-ks.cfg  Desktop  firstboot.1120181163.33  install.log  install.log.syslog

.命令行的实现汉字显示
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
这几行主要是实现命令行上实现汉字的输入以及显示。

.用chroot()限制用户
   如果的确想限制一个用户,可用chroot()子程序为用户建立一个完全隔离的环境,改变了进程对根目录的概念,因此可用于将一个用户封在整个文件系 统的某一层目录结构中,使用户无法用cd命令转出该层目录结构,不能存取文 件系统中其余部分的任何文件.这种限制方式比加限制的shell好得多.
   用户使 用的命令应由系统管理员在新的root目录中建立一个bin目录,并建立用户可 用命令的链到系统的/bin目录中相应命令文件上(若在不同的文件系统则应拷 贝命令文件).
   还应建立新的passwd文件,保留系统登录户头(为了使ls -l正确地报告与 受限制的子文件系统中的文件相关的正确登录名)和用户帐户,但系统帐户的 口令改为NOLOGIN以使受限制的用户不能取得系统登录的真实口令,使“破密“ 程序的任何企图成为泡影.
   utmp文件是who所需要的,该文件含有系统中已登录用户的列表.
   新的/etc/profile文件也不是建链文件,以便受限制的用户可以执行不同 的启动命令. 
   /dev目录中的终端设备文件被链接到新的/dev目录下,因为命令who产生 输出时要查看这些文件.
   在系统V及以后的UNIX版本中,login命令有chroot()的功能.如果口令文 件中用户入口项的登录shell域(最后一个域)是*,login将调用chroot()把用 户的根目录设置成为口令文件中用户入口项登录目录域指定的目录.然后再调 用exec()执行login,新的login将在新子系统文件中执行该用户的登录.
   chroot()并不是把root封锁在一个子文件系统中,所以给受限制用户用的 命令时应加以考虑,具有root的SUID许可的程序可能会给予用户root的能力. 应当将这种可能减低到最小程度,交给用户使用的命令应当取自清除了SUID陷 井的系统命令.
   链接文件可减少磁盘占用区,但要记住,当与敌对用户打交道时 链接到chroot目录结构(尤其是命令)的系统文件是很危险的. 如果建立一个像这样的限制环境,应确保对安装到新的/bin的每条命令都 做过测试,有些程序可能有系统管理员未曾想到的出乎意料的执行结果.
   为了 使这些命令能运行,还得在加限制的子文件系统中加服务目录或文件如:/tmp, /etc/termcap,/usr/lib/terminfo,/dev/mem,/dev/kmem,/dev/swap,用户所 登录的/dev中的tty文件以及/unix.
   有些程序在子文件系统中运行时不会很好,如果将假脱机程序和网络命令 拷贝到加限制的子文件系统中,并放在为两条命令专建的目录层结构下,它们 可能也运行不了.


.init的运行等级(0~6)
0       完全关闭系统
1或S级   单用户模式       关闭所有多用户和远程登录进程,只运行最小软件聚合
2-5     多用户级别      
6       重新引导

./etc/inittab
 定义了init在它的每个运行级上要做什么事情

./etc/init.d/rc 
 定义了由/etc/inittab调用的程序

.启动脚本
 脚本的主拷贝位于/etc/init.d的目录中,用来负责守护进程
 
 一个简单的启动脚本
 #!/bin/sh
 #
 #Name  : /etc/init.d/sshd
 #Author: cnscn
 #Time  : 2006-04-23
 
 test -f /usr/local/sbin/sshd || exit 0
 
 case "$1" in
    start)
           echo -n "Starting sshd: ssd"
           /usr/local/sbin/sshd
           echo "."
           ;;
    stop)
           echo -n "Stopping sshd: sshd"
           kill `cat  /var/run/sshd.pid`
           echo "."
           ;;
 restart)
           echo -n "Stopping sshd: sshd"
           kill `cat /var/run/sshd.pid`
           echo "."

           echo -n "Starting sshd: sshd"
           /usr/local/sbin/sshd
           echo "."
           ;;
      *)
           echo "Usage: /etc/init.d/sshd start|stop|restart"
           exit 1
           ;;
 esac

 用init自动启动关闭程序 (把程序连接到相应的rcX.d启动目录中)
 ln -s /etc/init.d/sshd  /etc/rc2.d/S99sshd
 ln -s /etc/init.d/sshd  /etc/rc0.d/K25sshd
 ln -s /etc/init.d/sshd  /etc/rc6.d/K25sshd

.直接更改当前的运行等级
 #telinit  1               进入运行等级1

.ps监视进程
[root@localhost ~]# ps aux
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
root      5009  0.0  0.0  3036  744 pts/2    R+   10:39   0:00 ps aux

USER      进程属主ID
PID       进程ID
%CPU      进程正在使用的CPU时间百分数
%MEM      进程正在使用的实际内存的百分数
VSZ       进程的虚拟大小
RSS       驻留集的大小(内存页的数量)
TTY       控制终端的ID
STAT      当前进程的状态(R=可运行 
                       D=在等磁盘或短期等待
                       S=在睡眠(<20秒) 
                       T=被跟踪或被停止  
                       Z=僵进程    
                       W=进程被交换出去
                       <=进程拥有比普通优先级更高的优先级
                       N=
进程拥有比普通优先级更低的优先级
                      
L=有些页面被锁在内存中
                      )
START     启动进程的时间
TIME      进程消耗掉的CPU时间
COMMAND   命令名和参数

 
.TOP监视进程
#top
top - 10:52:04 up  2:41,  4 users,  load average: 1.10, 0.87, 0.61
Tasks: 105 total,   1 running, 103 sleeping,   0 stopped,   1 zombie
Cpu(s): 15.8% us, 27.7% sy,  0.0% ni, 56.1% id,  0.0% wa,  0.3% hi,  0.0% si
Mem:    775708k total,   770204k used,     5504k free,    12144k buffers
Swap:  1124540k total,      448k used,  1124092k free,   545612k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 4014 root       5 -10  480m 384m 377m S 25.5 50.8  12:18.44 vmware-vmx
 3447 root      15   0  123m  28m 8176 S  5.6  3.7   7:05.72 X
 4225 root      16   0  146m  56m  20m S  4.6  7.5  16:55.74 firefox-bin

PR        The priority of the task.
NI        Nice value
VIRT      The total amount of virtual memory used by the task
RES       The non-swapped physical memory a task has used
SHR       The amount of shared memory used by a task.
S         The status of the task which can be one of:
            D = uninterruptible sleep
            R = running
            S = sleeping
            T = traced or stopped
            Z = zombie

TIME+     CPU Time, hundredths

.crontab
分钟   小时    日    月    周     [user]   command
45     10     *     *    1-5             ....     周一到周五的上午10:45运行
0,30   *      13    *     5                       周五及每月13号每半个小执行
15-45/5  *    *     *     *                       每小时的15-45分钟内每5分钟执行
30     2      *     *     1                       每周一早上2:30时执行
20     1      *     *     *      find /tmp  -atime +3 -exec rm -f {} ';'  每天早上1:20删除/tmp中3天无人访问的文件
55    23      *     *     0-3,6 
find /tmp  -atime +3 -exec rm -f {}   每周日到周三及周六执行

 
.自动注销
  编辑/etc/profile~
  在HISTFILESIZE=   这一行下面增加
  export TMOUT=600             //10分钟内如无操作则自动退出

.禁ping
$ echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

此后可以用 来判断机器是否运行着
# nmap -sP 192.168.0.88

Starting nmap 3.70 ( http://www.insecure.org/nmap/ ) at 2006-04-09 14:46 CST
Host 192.168.0.88 appears to be up.
MAC Address: 00:11:25:AB:B6:98 (IBM)
Nmap run completed -- 1 IP address (1 host up) scanned in 18.652 seconds

.编辑/etc/host.conf加入

#lookup names via DNS first then fall back to /etc/hosts
order hosts,bind

#We don't have machines with multiple IP address on the same card (like virtual server, IP Aliasing)
#multi off

#Check for IP address spoofing   (防止IP欺骗)
nospoof on

4)禁止和允许的root登陆终端
#vi /etc/securetty
tty1
#tty2
#tty3
#tty4

.取得系统字长
$getconf WORD_BIT
 32

.注销时删除命令记录
编辑 /etc/skel/.bash_logout
增加
    rm -f $HOME/.bash_history
~~~~

.关掉rpc(也就是portmap)服务
# ntsysv~~~
  去掉portmap就可以了


.crontab的权限

如果想限制能建立crontab的用户,可在文件/usr/lib/cron/cron.allow文件中列出允许运行crontab命令的用户.任何未列于该文件的用户不能运行crontab.反之,若更愿意列出不允许运行crontab命令的用户,则可将他们列入/usr/lib/cron/cron.deny文件中,未列于该文件的其他用户将被允许建立crontab.
注意:若两个文件都存在,系统将使用cron.allow,忽略cron.deny.如果两个文件都不存在,则只有root可运行crontab.所以,若要允许系统中的所有用户都可运行crontab命令,应当建立一个空的cron.deny文件,如果cron.allow

也存在,则删除该文件.这个版本的cron命令的安全程度比前一个高,因为用户只能看自己的crontab,系统管理员也不必担心其他用户的程序是否会作为root运行,由于允许每个系统登录用户有自己的crontab,也简化了对程序必须由cron运行,但不必作为root运行的系统程序的处理.必须确保rootcrontab文件仅对root可写,并且该文件所在的目录及所有的父目录也仅对root可写.


.保护Portmap的安全性
1)保护 Portmap 的安全性

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

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

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

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

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

3)使用 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

=================================================================
[From] http://www-128.ibm.com/developerworks/cn/security/se-lbuffer/

级别: 初级

薛静锋北京理工大学计算机科学工程系

抱歉!评论已关闭.