Perfil de zzzMagic 's Forest , ...FotosBlogListasMás Herramientas Ayuda

Blog


31 diciembre

Cisco交换机防范典型欺骗和攻击(转)

  本文所提到的攻击和欺骗行为主要针对链路层和网络层。在网络实际环境中,其来源可概括为两个途径:人为实施;病毒或蠕虫。人为实施通常是指使用一些黑客的工具对网络进行扫描和嗅探,获取管理帐户和相关密码,在网络上中安插木马,从而进行进一步窃取机密文件。攻击和欺骗过程往往比较隐蔽和安静,但对于信息安全要求高的企业危害是极大的。而来自木马或者病毒及蠕虫的攻击和往往会偏离攻击和欺骗本身的目的,现象有时非常直接,会带来网络流量加大、设备 CPU 利用率过高、二层生成树环路直至网络瘫痪。

  目前这类攻击和欺骗工具已经非常成熟和易用,而目前企业在部署这方面的防范还存在很多不足,有很多工作要做。思科针对这类攻击已有较为成熟的解决方案,主要基于下面的几个关键的技术:

• Port Security feature
• DHCP Snooping
• Dynamic ARP Inspection (DAI)
• IP Source Guard

  下面部分主要针对目前非常典型的二层攻击和欺骗说明如何在思科交换机上组合运用和部署上述技术,从而实现防止在交换环境中实施“中间人”攻击、 MAC/CAM 攻击、 DHCP 攻击、地址欺骗等,更具意义的是通过上面技术的部署可以简化地址管理,直接跟踪用户 IP 和对应的交换机端口;防止 IP 地址冲突。同时对于大多数对二层网络造成很大危害的具有地址扫描、欺骗等特征的病毒可以有效的报警和隔离。

 

 

一. MAC/CAM攻击的防范

 

 1.1 MAC/CAM攻击的原理和危害

  交换机主动学习客户端的 MAC 地址,并建立和维护端口和 MAC 地址的对应表以此建立交换路径,这个表就是通常我们所说的 CAM 表。 CAM 表的大小是固定的,不同的交换机的 CAM 表大小不同。 MAC/CAM 攻击是指利用工具产生欺骗 MAC ,快速填满 CAM 表,交换机 CAM 表被填满后,交换机以广播方式处理通过交换机的报文,这时攻击者可以利用各种嗅探攻击获取网络信息。 CAM 表满了后,流量以洪泛方式发送到所有接口,也就代表 TRUNK 接口上的流量也会发给所有接口和邻接交换机,会造成交换机负载过大,网络缓慢和丢包甚至瘫痪。

 

 1.2 典型的病毒利用MAC/CAM攻击案例

  曾经对网络照成非常大威胁的 SQL 蠕虫病毒就利用组播目标地址,构造假目标 MAC 来填满交换机 CAM 表。

 

 1.3 使用 Port Security feature 防范MAC/CAM攻击

思科 Port Security feature 可以防止 MAC 和 MAC/CAM 攻击。通过配置 Port Security 可以控制:

• 端口上最大可以通过的 MAC 地址数量
• 端口上学习或通过哪些 MAC 地址
• 对于超过规定数量的 MAC 处理进行违背处理

  端口上学习或通过哪些 MAC 地址,可以通过静态手工定义,也可以在交换机自动学习。交换机动态学习端口 MAC ,直到指定的 MAC 地址数量,交换机关机后重新学习。目前较新的技术是 Sticky Port Security ,交换机将学到的 mac 地址写到端口配置中,交换机重启后配置仍然存在。

对于超过规定数量的 MAC 处理进行处理一般有三种方式(针对交换机型号会有所不同):

• Shutdown    这种方式保护能力最强,但是对于一些情况可能会为管理带来麻烦,
        如某台设备中了病毒,病毒间断性伪造源 MAC 在网络中发送报文。
• Protect      丢弃非法流量,不报警。
• Restrict     丢弃非法流量,报警,对比上面会是交换机 CPU 利用率上升但是不影响交换机的正常使用。
              推荐使用这种方式。

 

 1.4 配置 port-security 配置选项:

Switch(config-if)# switchport port-security ?
aging Port-security aging commands
mac-address Secure mac address
maximum Max secure addresses
violation Security violation mode

配置 port-security 最大 mac 数目,违背处理方式,恢复方法

Cat4507(config)#int fastEthernet 3/48
Cat4507 (config-if)#switchport port-security
Cat4507 (config-if)#switchport port-security maximum 2
Cat4507 (config-if)#switchport port-security violation shutdown
Cat4507 (config)#errdisable recovery cause psecure-violation
Cat4507 (config)#errdisable recovery interval 30

通过配置 sticky port-security学得的MAC

interface FastEthernet3/29
switchport mode access
switchport port-security
switchport port-security maximum 5
switchport port-security mac-address sticky
switchport port-security mac-address sticky 000b.db1d.6ccd
switchport port-security mac-address sticky 000b.db1d.6cce
switchport port-security mac-address sticky 000d.6078.2d95
switchport port-security mac-address sticky 000e.848e.ea01

 

 1.5 使用 其它技术 防范MAC/CAM攻击

除了 Port Security 采用 DAI 技术也可以防范 MAC 地址欺骗。

 

 

二. DHCP攻击的防范

 

 2.1 采用DHCP管理的常见问题:

  采用 DHCP server 可以自动为用户设置网络 IP 地址、掩码、网关、 DNS 、 WINS 等网络参数,简化了用户网络设置,提高了管理效率。但在 DHCP 管理使用上也存在着一些另网管人员比较问题,常见的有:

• DHCP server 的冒充。
• DHCP server 的 Dos 攻击。
• 有些用户随便指定地址,造成网络地址冲突。

  由于 DHCP 的运作机制,通常服务器和客户端没有认证机制,如果网络上存在多台 DHCP 服务器将会给网络照成混乱。由于用户不小心配置了 DHCP 服务器引起的网络混乱非常常见,足可见故意人为破坏的简单性。通常黑客攻击是首先将正常的 DHCP 服务器所能分配的 IP 地址耗尽,然后冒充合法的 DHCP 服务器。最为隐蔽和危险的方法是黑客利用冒充的 DHCP 服务器,为用户分配一个经过修改的 DNS server ,在用户毫无察觉的情况下被引导在预先配置好的假金融网站或电子商务网站,骗取用户帐户和密码,这种攻击是非常恶劣的。

  对于 DHCP server 的 Dos 攻击可以利用前面将的 Port Security 和后面提到的 DAI 技术,对于有些用户随便指定地址,造成网络地址冲突也可以利用后面提到的 DAI 和 IP Source Guard 技术。这部分着重介绍 DHCP 冒用的方法技术。

 

 2.2 DHCP Snooping技术概况

  DHCP Snooping技术是DHCP安全特性,通过建立和维护DHCP Snooping绑定表过滤不可信任的DHCP信息,这些信息是指来自不信任区域的DHCP信息。DHCP Snooping绑定表包含不信任区域的用户MAC地址、IP地址、租用期、VLAN-ID 接口等信息,如下表所示:

cat4507#sh ip dhcp snooping binding
MacAddress IpAddress Lease(sec) Type VLAN Interface
00:0D:60:2D:45:0D 10.149.3.13 600735 dhcp-snooping 100
GigabitEthernet1/0/7

  这张表不仅解决了 DHCP用户的IP和端口跟踪定位问题,为用户管理提供方便,而且还供给动态ARP检测DA)和IP Source Guard使用。

 

 2.3 基本防范

  首先定义交换机上的信任端口和不信任端口,对于不信任端口的 DHCP 报文进行截获和嗅探, DROP 掉来自这些端口的非正常 DHCP 报文

基本配置示例如下表: IOS 全局命令:

ip dhcp snooping vlan 100,200 /* 定义哪些 VLAN 启用 DHCP 嗅探
ip dhcp snooping

接口命令
ip dhcp snooping trust
no ip dhcp snooping trust (Default)
ip dhcp snooping limit rate 10 (pps) /* 一定程度上防止 DHCP 拒绝服 /* 务攻击

手工添加 DHCP 绑定表
ip dhcp snooping binding 1.1.1 vlan 1 1.1.1.1 interface gi1/1 expiry 1000

导出 DHCP 绑定表到 TFTP 服务器
ip dhcp snooping database tftp:// 10.1.1 .1/directory/file

  需要注意的是 DHCP 绑定表要存在本地存贮器 (Bootfalsh 、 slot0 、 ftp 、 tftp) 或导出到指定 TFTP 服务器上,否则交换机重启后 DHCP 绑定表丢失,对于已经申请到 IP 地址的设备在租用期内,不会再次发起 DHCP 请求,如果此时交换机己经配置了下面所讲到的 DAI 和 IP Source Guard 技术,这些用户将不能访问网络。

 2.4 高级防范

  通过交换机的端口安全性设置每个 DHCP 请求指定端口上使用唯一的 MAC 地址,通常 DHCP 服务器通过 DHCP 请求的报文中的 CHADDR 段判断客户端 MAC 地址,通常这个地址和客户端的真是 IP 相同,但是如果攻击者不修改客户端的 MAC 而修改 DHCP 报文中 CHADDR ,实施 Dos 攻击, Port Security 就不起作用了, DHCP 嗅探技术可以检查 DHCP 请求报文中的 CHADDR 字段,判断该字段是否和 DHCP 嗅探表相匹配。这项功能在有些交换机是缺省配置的,有些交换机需要配置,具体需要参考相关交换机的配置文档。

 

 

三 ARP欺骗/ MITM(Man-In-The-Middle)攻击原理和防范

 

 3.1 MITM(Man-In-The-Middle) 攻击原理

  按照 ARP 协议的设计,为了减少网络上过多的 ARP 数据通信,一个主机,即使收到的 ARP 应答并非自己请求得到的,它也会将其插入到自己的 ARP 缓存表中,这样,就造成了“ ARP 欺骗”的可能。如果黑客想探听同一网络中两台主机之间的通信(即使是通过交换机相连),他会分别给这两台主机发送一个 ARP 应答包,让两台主机都“误”认为对方的 MAC 地址是第三方的黑客所在的主机,这样,双方看似“直接”的通信连接,实际上都是通过黑客所在的主机间接进行的。黑客一方面得到了想要的通信内容,另一方面,只需要更改数据包中的一些信息,成功地做好转发工作即可。在这种嗅探方式中,黑客所在主机是不需要设置网卡的混杂模式的,因为通信双方的数据包在物理上都是发送给黑客所在的中转主机的。

  这里举个例子,假定同一个局域网内,有 3 台主机通过交换机相连:
   A 主机: IP 地址为 192.168.0.1 , MAC 地址为 01:01:01:01:01:01 ;
   B 主机: IP 地址为 192.168.0.2 , MAC 地址为 02:02:02:02:02:02 ;
   C 主机: IP 地址为 192.168.0.3 , MAC 地址为 03:03:03:03:03:03 。

  B 主机对 A 和 C 进行欺骗的前奏就是发送假的 ARP 应答包

  在收到 B主机发来的ARP应答后,A主机应知道,到 192.168.0.3 的数据包应该发到 MAC 地址为 020202020202 的主机; C 主机也知道:到 192.168.0.1 的数据包应该发到 MAC 地址为 020202020202 的主机。这样, A 和 C 都认为对方的 MAC 地址是 020202020202 ,实际上这就是 B 主机所需得到的结果。当然,因为 ARP 缓存表项是动态更新的,其中动态生成的映射有个生命期,一般是两分钟,如果再没有新的信息更新, ARP 映射项会自动去除。所以, B 还有一个“任务”,那就是一直连续不断地向 A 和 C 发送这种虚假的 ARP 响应包,让其 ARP缓存中一直保持被毒害了的映射表项。

  现在,如果 A 和 C 要进行通信,实际上彼此发送的数据包都会先到达 B 主机,这时,如果 B 不做进一步处理, A 和 C 之间的通信就无法正常建立, B 也就达不到“嗅探”通信内容的目的,因此, B 要对“错误”收到的数据包进行一番修改,然后转发到正确的目的地,而修改的内容,无非是将目的 MAC 和源 MAC 地址进行替换。如此一来,在 A 和 C 看来,彼此发送的数据包都是直接到达对方的,但在 B 来看,自己担当的就是“第三者”的角色。这种嗅探方法,也被称作“ Man-In-The-Middle ”的方法。

 

 3.2 攻击实例

  目前利用 ARP原理编制的工具十分简单易用,这些工具可以直接嗅探和分析FTP、POP3、SMB、SMTP、HTTP/HTTPS、SSH、MSN等超过30种应用的密码和传输内容。 下面是测试时利用工具捕获的 TELNET 过程,捕获内容包含了 TELNET 密码和全部所传的内容 :

1435484

  不仅仅是以上特定应用的数据,利用中间人攻击者可将监控到数据直接发给 SNIFFER等嗅探器,这样就可以监控所有被欺骗用户的数据。

还有些人利用 ARP原理 开发出网管工具,随时切断指定用户的连接。这些工具流传到捣乱者手里极易使网络变得不稳定,通常这些故障很难排查。

 

 3.3 防范方法

思科 Dynamic ARP Inspection (DAI)在交换机上提供IP地址和MAC地址的绑定, 并动态建立绑定关系。DAI 以 DHCP Snooping绑定表为基础,对于没有使用DHCP的服务器个别机器可以采用静态添加ARP access-list实现。DAI配置针对VLAN,对于同一VLAN内的接口可以开启DAI也可以关闭。通过DAI可以控制某个端口的ARP请求报文数量。通过这些技术可以防范“中间人”攻击。

 

 3.3 配置示例

IOS 全局命令:
ip dhcp snooping vlan 100,200
no ip dhcp snooping information option
ip dhcp snooping
ip arp inspection vlan 100,200 /* 定义对哪些 VLAN 进行 ARP 报文检测
ip arp inspection log-buffer entries 1024
ip arp inspection log-buffer logs 1024 interval 10

IOS 接口命令:
ip dhcp snooping trust
ip arp inspection trust /* 定义哪些接口是信任接口,通常是网络设备接口, TRUNK 接口等
ip arp inspection limit rate 15 (pps) /* 定义接口每秒 ARP 报文数量

对于没有使用 DHCP 设备可以采用下面办法:
arp access-list static-arp
permit ip host 10.66.227.5 mac host 0009.6b88.d387
ip arp inspection filter static-arp vlan 201

 

 3.3 配置DAI后的效果:

• 在配置 DAI技术的接口上,用户端不能采用指定地址地址将接入网络。
• 由于 DAI检查 DHCP snooping绑定表中的IP和MAC对应关系,无法实施中间人攻击,攻击工具失效。
  下表为实施中间人攻击是交换机的警告:
  3w0d: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa5/16,vlan 1.
  ([000b.db1d.6ccd/192.168.1.200/0000.0000.0000/192.168.1.2
• 由于对 ARP请求报文做了速度限制,客户端无法进行认为或者病毒进行的IP扫描、探测等行为,如果发生这些行为,交换机马上报警或直接切断扫描机器。
  如下表所示:
  3w0d: %SW_DAI-4-PACKET_RATE_EXCEEDED:
  16 packets received in 184 milliseconds on Fa5/30. ******报警
  3w0d: %PM-4-ERR_DISABLE: arp-inspection error detected on Fa5/30,
  putting Fa5/ 30 in err-disable state ******切断端口
  I49-4500-1#.....sh int f.5/30
  FastEthernet5/30 is down, line protocol is down (err-disabled)
  Hardware is Fast Ethernet Port , address is 0002.b90e
  .3f 4d (bia 0002.b90e .3f 4d)
  MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
  reliability 255/255, txload 1/255, rxload 1/255
  I49-4500-1#......
• 用户获取 IP地址后,用户不能修改IP或MAC,如果用户同时修改IP和MAC必须是网络内部合法的IP和MAC才可,对于这种修改可以使用下面讲到的 IP Source Guard技术来防范。
  下表为手动指定IP的报警:
  3w0d: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa5/30, vlan 1.
  ([000d.6078.2d95/192.168.1.100/0000.0000.0000/192.168.1.100/01:52:28 UTC Fri Dec 29 2000 ])

 

四 IP/MAC欺骗的防范

 

 4.1 常见的欺骗攻击的种类和目的

  常见的欺骗种类有 MAC欺骗、IP欺骗、IP/MAC欺骗,其目的一般为伪造身份或者获取针对IP/MAC的特权。当目前较多的是攻击行为:如Ping Of Death、syn flood、ICMP unreacheable Storm,另外病毒和木马的攻击也具有典型性,下面是木马攻击的一个例子。

 

 4.2 攻击实例

  下图攻击为伪造源地址攻击,其目标地址为公网上的 DNS服务器,直接目的是希望通使DNS服务器对伪造源地址的响应和等待,造成DDOS攻击,并以此扩大攻击效果。该攻击每秒钟上万个报文,中档交换机2分钟就瘫痪,照成的间接后果非常大。
sa050427001_clip_image011

 

4.3  IP/MAC欺骗的防范

IP Source Guard 技术配置在交换机上仅支持在 2 层端口上的配置,通过下面机制可以防范 IP/MAC 欺骗:

• IP Source Guard 使用 DHCP sooping 绑定表信息。
• 配置在交换机端口上,并对该端口生效。
• 运作机制类似 DAI,但是  IP Source Guard 不仅仅检查ARP报文,
                 所有经过定义 IP Source Guard 检查的端口的报文都要检测。
• IP Source Guard 检查接口,所通过的流量的IP地址和MAC地址是否在DHCP sooping绑定表,
                 如果不在绑定表中则阻塞这些流量。
                 注意如果需要检查MAC需要DHCP服务器支持Option 82,同时使路由器支持Option 82信息。

通过在交换机上配置 IP Source Guard:

• 可以过滤掉非法的 IP地址,包含用户故意修改的和病毒、攻击等造成的。
• 解决 IP地址冲突问题。
• 提供了动态的建立 IP+MAC+PORT的对应表和绑定关系,
   对于不使用DHCP的服务器和一些特殊情况机器可以采用利用全局命令静态手工添加对应关系到绑定表中。
• 配置 IP Source Guard的接口初始阻塞所有非DHCP流量。
• 不能防止“中间人攻击”。

对于 IP欺骗在路由器上也可以使用urpf技术。

 

 4.4 配置示例:

 

检测接口上的 IP+MAC

IOS 全局配置命令:
ip dhcp snooping vlan 12,200
ip dhcp snooping information option
ip dhcp snooping

接口配置命令:
ip verify source vlan dhcp-snooping port-security
switchport mode access
switchport port-security
switchport port-security limit rate invalid-source-mac N
/* 控制端口上所能学习源 MAC 的速率,仅当 IP+MAC 同时检测时有意义。

 


检测接口上的 IP

IOS 全局配置命令
ip dhcp snooping vlan 12,200
no ip dhcp snooping information option
ip dhcp snooping

接口配置命令:
ip verify source vlan dhcp-snooping

 


不使用 DHCP 的静态配置

IOS 全局配置命令:
ip dhcp snooping vlan 12,200
ip dhcp snooping information option
ip dhcp snooping
ip source binding 0009.6b88.d387 vlan 212 10.66.227.5 interface Gi4/5

 

 

五 IP地址管理和病毒防范的新思路

 

 5.1 IP地址管理

  综上所述通过配置思科交换机的上述特征,不仅解决了一些典型攻击和病毒的防范问题,也为传统 IP地址管理提供了新的思路。

通过上面的几项技术解决了传统的利用DHCP服务器管理客户端IP地址的问题:
• 故意不使用手工指定静态 IP地址和DHCP分配地址冲突
• 配置 DHCP server
• 使用静态指定 IP遇到的问题
• 不使用分配的 IP地址和服务器或其他地址冲突
• 不容易定位 IP地址和具体交换机端口对应表

  使用静态地址的重要服务器和计算机,可以进行静态绑定 IP+MAC、IP+MAC+PORT,手工配置DAI和 IP Source Guard绑定表项, 来保护这些设备,同时也防止来自这些设备的攻击。

  目前对于网络病毒的不断爆发,越来越多的用户开始重视对 PC的管理,用户关注谁能访问网络、访问以后能做什么、做了哪些事情、这就是我们常说的AAA认证,除了这些用户希望能够很快定位到用户在哪台交换机、哪个端口、以哪个IP和MAC登陆,这样有有了”AAA+A”( Authenticate, Authorize,Account , Address )的概念。

  通过上面的配置我们在网络层面已经可以定位用户了,加上 802.1X认证我们可以在网络层面根据用户的身份为用户授权,从而实现”AAA+A”。

  更进一步要审计用户所使用电脑具备的条件,如系统补丁、所装杀毒软件及补丁、等条件可以考虑采用思科网络准入控制 NAC。

 

 5.2 使用DHCP Snooping 、DAI、IP Source Guard技术能解决的有关病毒问题

  由于大多数对局域网危害较大的网络病毒都具有典型的欺骗和扫描,快速发包,大量 ARP 请求等特征,采用上述技术一定程度上可以自动切断病毒源,及时告警,准确定位病毒源。

Vsftpd 530 Login incorrect


vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list
local_enable=YES
write_enable=YES
pam_service_name=vsftpd

 

Also check:

/etc/vsftpd.user_list 
/etc/vsftpd.chroot_list
/etc/ftpusers
/etc/pam.d/vsftpd

配置整合Win+Apache+PHP+CGI+MySQL+Tcomcat(或Resin)完全手册(转)(擅自添加了CGI部分~呵呵)

前期准备:

所需软件列表:(本配置以下列软件版本完成)
1、 APACHE_2.0.47-win32-x86-no_ssl       (Apache web服务器)
2、 PHP-4.3.3-Win32                              (PHP语言解析器)
3、 ActivePerl-5.10.0.1004-MSWin32-x86   (ActivePerl编译器)
4、 MySQL-4.0.12-win                            (MySQL数据库)
5、 j2sdk-1_4_2-windows-i586                 (JAVA 语言环境)
6、 Jakarta-Tomcat-5.0.9                        (Tomcat JSP解析服务器)
7、 Resin-3.0.3                                      (Resin JSP解析服务器)
8、 mod_jk_1.2.5_2.0.47.dll                     (整合Apache+Tomcat的plus)
9、 mm.mysql-2.0.4-bin.jar                      (JSP访问连接MySQL文件)

  

开始安装:


一、 Apahce+PHP+CGI+MySQL安装配置

1. 安装APACHE_2.0.47-win32-x86-no_ssl ,程序默认安装路径为:C:\apache2\program files\apache Group\ ,需要将其安装路径修改为:C:\
(也可以不做修改,主要为了修改配置方便做修改的)。

     #寻找到ServerName。这里定义你的域名。这样,当Apache Server运行时,你可以在浏览器中访问自己的站点。如果前面有#,记得删除它,这是conf的注释标记。
  #寻找到ServerAdmin。这里输入你的E-Mail地址。如果你仅仅是单机使用,改不改没什么关系。
  #寻找到Directory。向下有一句Options,去掉后面所有的参数,加一个All(注意区分大小写!下同。);接着还有一句Allow Override,也同样去掉后面所有的参数,加一个All。
  #寻找到DocumentRoot。这个语句指定你的网站路径,也就是你主页放置的目录。你可以使用默认的,也可以自己指定一个,但记住,这句末尾不要""。此外注意,目录的""在Apache Server里写成"/"。
  #寻找到DirectoryIndex。这就是你站点第一个显示的主页。

2. 安装完成之后,apache服务自动加载,这时打开浏览器,浏览:http://localhost,出现apache欢迎页面(这步需要将C:\apache2\htdocs目录中的文件“index.html.en”改为“index.html”,方能显示);如果这步出现异常,请检查安装源文件,重新安装。

3. 安装PHP-4.3.3-Win32,一般下载的PHP文件为一个免安装的压缩包,解压到C:\PHP就可以。

4. 配置PHP和Apache,使之能解析php程序。
    PHP配置:将C:\PHP\目录中的“php.ini-dist”改名“php.ini”并复制到C:\windows\system32
    Apache配置:C:\apahce2\conf\httpd.conf

httpd.conf
在此配置文件最后添加以下语句,用以支持php程序:
    ScriptAlias /php/ "C:/PHP/"
    AddType application/x-httpd-php .php3
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php .phtml
    Action application/x-httpd-php "/php/php.exe"

5.重新启动Apache服务器,用编辑器编写如下语句:           
    <?
       phpinfo();
    ?>
    保存文件名为“test.php”到C:\apache2\htdocs目录,然后打开浏览器,浏览:http://localhost/test.php,

    出现PHP基本信息就说明配置成功。严格按以上说明安装配置,都会一次成功。

6. 安装ActivePerl

  httpd.conf

     寻找到ScriptAlias /cgi-bin/ "C:/Apache/cgi-bin/"。删除前面的#,将""中的路径指向你存放CGI脚本的目录,也就是,这个目录中的CGI脚本可以被执行。
  寻找到Directory。将""中的路径指向你存放CGI脚本的目录,要与上面的相同。更改Options、Allow Override的参数为All。
  寻找到AddHandler cgi-script .cgi。删除前面的#,在后面加上 .pl。
     注意: CGI脚本中的Perl解释路径改为:#!C:perlbinperl。否则,会出现500错误。

6. 安装MySQL-4.0.12-win,一直按”next”就安装成功了,然后在C:\mysql\bin目录执行” winmysqladmin.exe”,出现mysql的初始信息面,表示安装成功。

7. PHP连MySQL此处略过,一般没有什么问题。

到此可以休息一下,准备下面的漫长过程……

二、安装JDK和Tomcat

1. 安装j2sdk-1_4_2-windows-i586,JDK一定要在Tomcat和Resin之前安装,默认安装路径就可以。

2. 安装Jakarta-Tomcat-5.0.9,默认安装路径就可以。

3. 复制mm.mysql-2.0.4-bin.jar文件分别到C:\j2sdk1.4.2\lib 和 C:\Tomcat 5.0\common\lib

4.设置环境变量(桌面->我的电脑->右键点击->选择“属性”->高级->环境变量),所有设置均在系统变量栏进行。
新建->变量名:JAVA_HOME
    ->变量值:C:\j2sdk1.4.2
新建->变量名:TOMCAT_HOME
    ->变量值:C:\Tomcat 5.0
新建->变量名: PATH
    ->变量值:.;C:\j2sdk1.4.2\bin;  (前面的“.;”一定要有)
修改增加环境变量 CLASSPATH (如果没有此变量名,则新建)
    ->增加变量值:.;C:\j2sdk1.4.2\lib\dt.jar;C:\j2sdk1.4.2\lib\tool.jar;
C:\j2sdk1.4.2\lib\NetComponents.jar;
C:\j2sdk1.4.2\lib\mm.mysql-2.0.4-bin.jar;
C:\Tomcat 5.0\common\classes;
C:\Tomcat 5.0\common\lib;
C:\Tomcat 5.0\common\lib\servlet-api.jar;
(前面的“.;”一定要有)

5. 启动Tomcat服务器,打开浏览器,浏览:http://localhost:8080/ ,出现Tomcat欢迎页面;

    如果这步出现异常,请检查安装源文件,重新安装。

 

三、整合Apache+Tomcat服务器

1. 复制mod_jk_1.2.5_2.0.47.dll文件到C:\Apache2\modules目录。

2. Apache配置:C:\apahce2\conf\httpd.conf

    httpd.conf
      在此配置文件最后添加以下语句,用以支持jsp程序:
        LoadModule jk_module modules/mod_jk_1.2.5_2.0.47.dll
        JkWorkersFile "C:/Tomcat 5.0/conf/workers.properties"
        JkMount /servlet/* ajp13
        JkMount /*.jsp ajp13

3. 查看C:\Tomcat 5.0\conf\server.xml文件中有关端口“8009”是否被注释,
    如果是和我这的版本一致的话,不用修改。

4. 在C:\Tomcat 5.0\conf\目录下,新建文件名为“workers.properties”的文件,将如下内容复制到新建文件workers.properties中。

workers.properties
  # 只复制以下内容即可:

  # 这现行根据安装目录做修改
  workers.tomcat_home=C:\Tomcat 5.0
  workers.java_home=C:\j2sdk1.4.1_01
  ps=\
  # worker.list=ajp13
  worker.list=ajp12,ajp13 

  worker.ajp12.port=8007
  worker.ajp12.host=localhost
  worker.ajp12.type=ajp12
  worker.ajp12.lbfactor=1
  worker.ajp13.port=8009        
  worker.ajp13.host=localhost     
  worker.ajp13.type=ajp13
  worker.ajp13.lbfactor=1

  worker.loadbalancer.type=lb
  worker.loadbalancer.balanced_workers=ajp12, ajp13
  worker.inprocess.type=jni
  worker.inprocess.class_path=$(workers.tomcat_home)$(ps)classes
  worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)jaxp.jar
  worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)parser.jar
  worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)jasper.jar
  worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)servlet.jar
  worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)webserver.jar
  worker.inprocess.class_path=$(workers.java_home)$(ps)lib$(ps)tools.jar
  worker.inprocess.cmd_line=-config
  worker.inprocess.cmd_line=$(workers.tomcat_home)/conf/jni_server.xml
  worker.inprocess.cmd_line=-home
  worker.inprocess.cmd_line=$(workers.tomcat_home)
  worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll
  worker.inprocess.stdout=$(workers.tomcat_home)$(ps)inprocess.stdout
  worker.inprocess.stderr=$(workers.tomcat_home)$(ps)inprocess.stderr
  worker.inprocess.sysprops=tomcat.home=$(workers.tomcat_home)

5. 到此Apache 和 Tomcat整合完成,重启Apache和Tomcat服务器,

用编辑器编写如下内容:

<%@ page contentType="text/html;charset=gb2312"%>

<html>
<head>
<title>HI-JSP实验</title>
</head>
<body>
<%
  String Msg = "This is JSP test! 看到这段话,恭喜你,成功了!"; 
  out.print("Hello World!");
%>
<h3><%=Msg%></h3>
The current date and time is <%=new java.util.Date() %>
<br>
<%
  String str = "Using trim() and substring() can be very useful";
  out.println(str);
%>
</body>
</html>

保存文件名为“test.jsp”到C:\Tomcat 5.0\webapps\ROOT目录,然后打开浏览器,浏览:http://localhost:8080/test.jsp,如果显示正常,然后将地址改为:http://localhost/test.jsp  显示正常说明配置成功。严格按以上说明安装配置,都会一次成功。

 

四、整合Apache+Tomcat+MySQL

      这步相对简单许多,但也是最不容易成功的部分,前面已经将JSP的MySQL驱动放到相应的目录中,环境变量也设置,所以只是测试JSP是否可以连接MySQL数据库。

      1. 测试1,用编辑器编写如下内容:

<%@ page contentType="text/html;charset=gb2312" %>
<%
java.sql.Connection conn;
java.lang.String strConn;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn= java.sql.DriverManager.getConnection("jdbc:mysql://localhost/test","root","");
%>

注:数据库此处为:test 连接数据库存的用户名为:root  密码为空。根据自己数据库作相应修改。

保存文件名为“test-mysql.jsp”到C:\Tomcat 5.0\webapps\ROOT目录,然后打开浏览器,浏览:http://localhost:8080/test-mysql.jsphttp://localhost/test-mysql.jsp ,运行后,如果显示为空白页面,说明连接数据库成功,否则说明没有连接成功,请往回逐步仔细配置。

      2. 测试2,用编辑器编写如下内容:

<%@ page contentType="text/html;charset=GBK" %>
<%@ page language="java" import="java.sql.*"%>
<%
Connection conn = null;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/test","root","");
if(conn==null){
System.out.println("get Conn Error");
}
Statement stmt=conn.createStatement();
ResultSet RS_result=null;
%>
<html>
<head>
<title>测试</title></head>
<body>
<%
RS_result=stmt.executeQuery("select * from guestbook");
String Name;
while(RS_result.next())
{
Name=RS_result.getString("name");
%>
<%=Name%>
<%
}
RS_result.close();
stmt.close();
conn.close();
%>
</body>
</html>

保存文件名为“test-mysql2.jsp”到C:\Tomcat 5.0\webapps\ROOT目录,然后打开浏览器,浏览:http://localhost:8080/test-mysql2.jsphttp://localhost/test-mysql2.jsp ,运行后。

 

五、安装Resin,整合Apache+Resin

1. 假定机子上现在没有启动别的JSP解析服务器,如果启动请关闭该服务。

2. 直接解压Resin-3.0.3.zip到C:\

3. 在字符模式下用命令:C:\resin-3.0.3\bin\httpd –install
将Resin安装为系统的一个服务,然后在服务中启动Resin.
删除服务命令:C:\resin-3.0.3\bin\httpd –remove

4. 打开浏览器,浏览:http://localhost:8080 ,如果显示有Resin信息,则Resin服务已经启动 。

5. Apache配置:C:\apahce2\conf\httpd.conf

httpd.conf
在此配置文件最后添加以下语句:

    LoadModule caucho_module C:/resin-3.0.3/libexec/apache-2.0/mod_caucho.dll

    <IfModule mod_caucho.c>
      ResinConfigServer localhost 6802
      <Location /caucho-status>
      SetHandler caucho-status
      </Location>
    </IfModule>

    AddHandler caucho-request jsp
    <Location /servlet/*>
     SetHandler caucho-request
    </Location>

      保存,重启apache.

      6. Resin配置:
        C:\resin-3.0.3\conf\resin.conf

resin.conf
修改默认目录,红色部分为修改内容:
<server>
  <host id="">
    <document-directory>C:\Apache2\htdocs</document-directory>
    ...
  </host>
</server>

      完成后保存,重启Resin服务,把编辑好的JSP文件存放到C:\Apache2\htdocs目录,然后打开浏览器浏览,就可以在PHP和JSP之间自由窜越了。

29 diciembre

登录中文搜索引擎入口(转)

转贴地址http://guxqcn.spaces.live.com/blog/cns!CA0B3E9C258483D0!1517.entry

 

登录搜索引擎是推广网站很重要的一步。为了方便大家,整理了主要搜索引擎,希望对大家有帮助。以下地址都经过了测试,可以使用,若您在使用时发现死链接,请通知我们,以便更好的为大家服务。同时也欢迎大家推荐好的搜索引擎,在留言本中给我留言就可以了。另外要指出的是,贡献流量的主要是几个著名的搜索引擎,其它的对流量贡献微乎其微。如果您时间不多,大可不必全部登录。当然,如果时间充足,又没有很多推广经费,登录一下也大有好处。

 

百度免费登录入口 http://www.baidu.com/search/url_submit.htm

Google免费登录入口 http://www.google.com/intl/zh-CN/add_url.html

雅虎免费登录入口 http://search.help.cn.yahoo.com/h4_4.html

Live Search登录入口:http://search.msn.com.cn/docs/submit.aspx

新浪免费登录入口 http://bizsite.sina.com.cn/newbizsite/docc/index-2jifu-09.htm

搜狐免费登录入口 http://db.sohu.com/regurl/regform.asp?Step=REGFORM&class=

天网免费登录入口 http://bingle.pku.edu.cn/submit.htm

慧聪行业免费登录入口 http://202.108.33.161/web/frontward/free/free_speedlogin.asp

搜豹免费登录入口 http://search.sobao.com/Computers_and_Internet/Personal/

焦点网免费登录入口 http://search.focus.com.cn/search/search_newurl_register.ecgi

协通免费登录入口 http://www.net2asp.com.cn/search/regform.htm

银河免费登录入口 http://search.inhe.net/navigate.asp

中国假日免费登录入口 http://www.china-holiday.com/newterms/hall/it/sort.asp?sortid=259

山西互连网免费登录入口 http://www.shanxi.net.cn/sxhulian/addcate.asp

网络奇兵登陆入口http://www.net7b.com/net7b_site/denglu/index.asp

6128搜索引擎免费登陆入口http://www.6128.cn/add.htm

深圳网狐登陆入口 http://www.szfox.com/search/

中国搜索同盟免费登录入口 http://service.chinasearch.com.cn/w ... ree/free_protocol.htm

北极星免费登录入口 http://www.beijixing.com.cn/bjx01/search/regi_1.asp

亦凡信息娱乐网络-亦凡搜索 http://www.gotofind.com/opendir/

法律网免费登录入口 http://www.law-lib.com/lawseek/wzdl.asp

银河免费登录入口 http://search.inhe.net/navigate.asp

温州信息港免费登录入口 http://www.wzonline.com.cn/

建设免费登录入口http://www.cnjjl.com/other/

孙悟空免费登录入口 http://www.sunwukong.cn/add.php

猫头鹰 http://www.owlchina.com/publish.asp?l=pub

凯希 http://www2d.biglobe.ne.jp/~kinryou/cgi/url.html

ebsee http://www.ebsee.com/cgi-bin/find/find.cgi?menu=add

focus http://search.focus.com.cn/search/search_newurl_register.ecgi

zhao5.com登陆入口 http://www.zhao5.com/deng_9.htm

三百六十行在线登陆入口 http://www.360hang.com/

中国168免费登录入口 http://www.china168.com/chaoshi/it/regsta1.asp?sortid=242

中国车网免费登录入口 http://www.cncar.net/search/addsite.asp

绿界免费登录入口 http://ep.sunup.net/add.php

天上人间中文搜索引擎 http://www.6mj.com/search/

企业搜索引擎 http://www.shengdarealestate.com.cn/search/sort.asp?sortid=37

好东西网址登陆 http://dir.haodx.com/computer/internet/search/search_egines/

中国搜索登陆入口 http://service.chinasearch.com.cn/zhongsou/wzdl/free_protocol.htm

网讯快车 http://www.ne163.com/

广东阳江在线 http://www.gdyj.com/

泰达搜索引擎 http://www.tedanet.com/search/index.asp

Y28 Search http://www.y28.com/cgi-bin/link/join.pl  Guxqcn 10/15/06, 11:30am

22 diciembre

Apache下的SVN自定义日志

 

svn log配置

最近经济不景气,老板真是越抓越严 现在连svn的登录日志也要记录检查~

   原本svn自带的那个access.log基本不太能够阅读 所以打算再自制一个log文档

   svn在apache下运行要用到mod_dav mod_dav_svn mod_authz_svn几个模块

   日志模块是mod_log_config

 

~~~~~~~

 

svn在1.4之后的版本都支持内建的svn类log 公司用的是1.2~所以要先svn升级 找个安装包直接覆盖安装就可以了

 

然后在httpd.conf文档里增加

CustomLog logs\svn_log "%t %a %u \"%{SVN-ACTION}e\" " env=SVN-ACTION

 

前面几个参数都没问题 就是%e这个就是通过设置环境变量env 为SVN-ACTION 来使得日志变得更可读,ok了

   记录出来的样子如下

[22/Dec/2008:11:53:57 +0800] 172.17.3.193 EOCSH\\xh "update / r2302 send-copyfrom-args"
develop\\wangyihua "commit r2303" [22/Dec/2008:11:54:04 +0800]

 

~~~~~~~~~~~~~~~~~~

附录1

 

Apache模块 mod_log_config

现有的语种:  en 说明:    将对服务器发起的请求记录到日志
状态:    Base
模块名:    log_config_module
源文件:    mod_log_config.c

概要

      本模块提供了灵活的方法将客户请求记录到日志。日志可以以自定义的格式直接写入文件,或者传送到一个外部程序中继续处理。条件日志功能可以实现根据请求的特征来决定一个日志信息是否被包含在最终的日志记录里面。

      本模块提供了三个指令:TransferLog 指令用来生成一个日志文件,LogFormat 指令用来设定自定义的日志格式,最后你还可以通过CustomLog 指令来同时完成日志文件和格式的设定。TransferLog 指令和CustomLog 指令在每个服务器上都可以被多次使用,以便将一个请求记录到多个文件中。
指令索引
CookieLog
CustomLog
LogFormat
TransferLog

 


自定义日志格式

      LogFormat 指令和CustomLog 指令的格式化参数是一个字符串。这个字符串会在每次请求发生的时候,被记录到日志中去。它可以包含将被原样写入日志的文本字符串以及C语言式样的控制字符"\n"和"\t"以实现回车与换行。文本中的引号和反斜杠应通过\来转义。

      请求本身的情况将通过在格式字串中放置各种"%"转义符的方法来记录,它们在写入日志文件时,根据下表的定义进行转换:

 

格 式                 描述
%%                   百分号(Apache 2.0.44 或更高的版本)
%...a                 远端IP地址
%...A                 本地IP地址
%...B                 除HTTP报头外传送的字节数
%...b                以CLF格式显示的除HTTP报头外的传送字节数,例如:当没有字节传送时显示'-'而不是0。
%...{Foobar}C     在请求中传送给服务端的cookie Foobar的内容。
%...D                 服务器完成本请求的时间,以毫秒为单位。
%...{FOOBAR}e    环境变量FOOBAR的值
%...f                  文件名
%...h                 远端主机
%...H                 请求协议
%...{Foobar}i      发送到服务器的请求报头Foobar的内容。
%...l                  远端登录名(由identd而来,如果支持的话)
%...m                请求的方法
%...{Foobar}n     从另一个模块来的注解Foobar:。
%...{Foobar}o     返回时报头的内容Foobar:。
%...p                 服务器提供本请求对应服务的标准端口。
%...P                 为本请求提供服务的子进程的进程ID。
%...q                 查询字串(如果存在由一个?引导,否则返回空串)
%...r                 请求的第一行
%...s                 状态。对于内部重定向的请求,这个状态指的是原始请求的状态,--- %...>s则指的是最后请求的状态。
%...t                 时间,用普通日志时间格式(标准英语格式)
%...{format}t     时间,用strftime(3)指定的格式表示的时间。(默认情况下按本地化格式)
%...T                完成请求服务的时间,以秒为单位。
%...u                 远程用户名(根据验证信息而来;如果返回status (%s)为401,可能是假的)
%...U                请求的URL路径,不包含查询串。
%...v                进行服务的服务器的标准名字ServerName。
%...V                根据UseCanonicalName指令设定的服务器名称。
%...X                请求完成时的连接状态:     X =    连接在应答完成前中断。
+ =                   应答传送完后继续保持连接。
- =                    应答传送完后关闭连接。

(在Apache 1.3后来的版本中,这个指令是%...c,但这样就和过去的SSL语法:%...{var}c有冲突了。
%...I    接收的字节数,包括请求头的数据,并且不能为零。要使用这个指令你必须启用mod_logio模块。
%...O    发送的字节数,包括请求头的数据,并且不能为零。要使用这个指令你必须启用mod_logio模块。

      上表中的"..."在实际中可以什么也没有(例如:"%h %u %r %s %b"),也可以用来指定条目被包含的条件(如果条件不满足,它会被"-"来替换)。条件是由一个HTTP状态代码的列表来组成的,状态代码前还可以加上"!"前缀。 这样,格式串"%400,501{User-agent}i" 只记录400错误(错误的请求)和501错误(没实现的功能)到User-agent:; "%!200,304,302{Referer}i"记录任何没有正常返回的请求到Referer:。

      注意在处理由%...r、%...i和%...o组成的字串时,不会进行ESC序列的转义。这主要是为了符合通用日志格式(Common Log Format)的要求。这样就使用户能在日志中插入控制字符,因此,在处理原始的日志文件的时候,要特别注意这一点。

 

一些常见的格式串如下所示:
能用日志格式(CLF)
"%h %l %u %t \"%r\" %>s %b"
带虚拟主机的通用日志格式
"%v %h %l %u %t \"%r\" %>s %b"
NCSA扩展/组合日志格式
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
Referer日志格式
"%{Referer}i -> %U"
Agent (Browser)日志格式
"%{User-agent}i"

      注意对请求提供服务的服务器的正式主机名(ServerName)和侦听端口(Listen)分别由%v和%p来得到。 这一点将忽略UseCanonicalName 指令的设置,因为否则日志分析程序会需要成倍地进行整个虚拟主机算法的运算以决定实际上是哪个服务器在响应请求。

 

 

CustomLog 指令说明: 

设定日志的文件名和格式
语法:     CustomLog file|pipe format|nickname [env=[!]environment-variable]
上下文:   服务器配置, 虚拟主机
状态:     Base
模块:     mod_log_config

 

    CustomLog 指令用来对服务器的请求进行日志记录。可以指定日志的格式,也可以使用环境变量根据请求的特征来随意地组织日志。

第一个参数指定了日志记录的位置,可以使用以下两种方式来设定:
file
日志文件名,相对于ServerRoot 目录。
pipe
管道符"|"后面紧跟着一个程序的路径,这个程序把日志从标准输入设备中读入并处理。


安全性警告:

如果这里用到了程序,那个这个程序是以启动httpd的用户来执行的。因此如果启动httpd的用户是root,那这个程序也是以root用户身份来启动的;确认这个程序是安全的。


注意

     当在非UNIX平台上输入文件路径的时候,要特别注意即使平台本身是使用反斜杠来分隔路径的,在这里也只能使用斜杠。通常在配置文件里只用斜杠来分隔路径总是不会错的。

     第二个参数指定了写入日志文件的内容。它既可以是由前面的LogFormat 指令定义的别名,也可以是直接按日志格式一节所描述的规则定义的格式字符串。

例如:以下两组指令的结果是完全一样的:

# CustomLog with format nickname
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common

# CustomLog with explicit format string
CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b"

     第三个参数是可选的,它根据服务器上特定的环境变量是否被设置来决定是否对某一特定的请求进行日志记录。如果这个特定的环境变量被设置(在'env=!name'的情况下,没被设置),那么这个请求就被日志所记录。

     可以使用mod_setenvif 和 / 或mod_rewrite 模块来为每一类请求设置环境变量。例如:如果你想在你的服务器上将所有对GIF图片的请求记录在不同于主日志文件的另一个日志文件中,你可以使用下面的指令:

SetEnvIf Request_URI \.gif$ gif-image
CustomLog gif-requests.log common env=gif-image
CustomLog nongif-requests.log common env=!gif-image

 

~~~~~~~~~~~~

 

其他的附属命令

 

LogFormat 指令说明: 

定义日志文件里的记录格式
语法:       LogFormat format|nickname [nickname]
默认值:    LogFormat "%h %l %u %t \"%r\" %>s %b"
上下文:    服务器配置, 虚拟主机
状态:       Base
模块:       mod_log_config

    本指令定义访问日志的记录格式。

     LogFormat 指令可以使用两种方式中的一种。在第一种定义方式中,指令只带一个参数,以定义后续的TransferLog 指令中指定的日志内容的日志格式。这唯一的参数可以按上述自定义日志格式所描述的格式来定义。另外它也可以通过下述的方法使用别名来参照预先定义的日志格式。

     在LogFormat 指令的第二种定义方式中,将一个直接的格式和一个别名联系起来。这样在后续的LogFormat 或CustomLog 指令中,就不用一再重复整个冗长的格式串。定义别名的LogFormat 指令仅仅用来一个别名,它不做其它任何事情 -- 也就是说,它只是定义了这个别名,它既没有实际应用这个别名,也不是把它设为缺省的格式。因此,它不会影响后续的TransferLog 指令。另外,LogFormat 不能用一个别名来定义另一个别名。注意,别名不能包含百分号(%)。


示例

LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common

 

TransferLog 指令说明:  

指定日志文件的位置
语法:     TransferLog file|pipe
上下文:   服务器配置, 虚拟主机
状态:     Base
模块:     mod_log_config

     本指令除不允许直接定义日志格式或根据条件进行日志记录外,与CustomLog 指令有完全相同的参数和功能。实际应用中,日志的格式是由最近的非别名定义的LogFormat 指令指定。如果没有定义任何日志格式,则使用通用日志格式。


示例

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
TransferLog logs/access_log

 

 

CookieLog 指令说明: 

设定针对cookies的日志文件名


语法:                        CookieLog filename
上下文:                     服务器配置, 虚拟主机
状态:                        Base
模块:                        mod_log_config
兼容性:                     本指令有争议

     CookieLog 指令设置针对cookies所作的日志记录的文件名。文件是相对ServerRoot目录的。 包含本指令仅仅是为了保持与mod_cookies模块的兼容,并且不推荐使用。

 

需要考虑的安全性问题

     如果日志文件放置的目录对除了启动Apache服务以外的用户可写的话,可能会对系统的安全性造成威胁,具体的讨论请参见安全方面的提示一章。

 

~~~~~

附录2

 

在Apache下的日志简介

    Apache提供了广泛记录运行时各方面信息的工具。比如有条件性的记录日志,日志循环,确定IP地址等时普遍会遇到的问题。还讲解很多用于检测您的Apache服务器状态以及分析其日志的捆绑的第三方模块和工具。

 

 

默认的Apache日志文件

    Apache提供很多检测和日志工具来追踪服务器的正确运行。默认的Apache配置提供两个日志文件,放置在安装目录下的日志目录里面。

    access_log 这个文件(在windows下对应access.log文件)包含了服务器已经处理过的请求的信息,比如说请求的URL,客户端的IP地址,请求是否被成功完成等。error_log 这个文件(在windows下对应error.log文件)包含了与错误情况相关的信息,以及服务器生命周期中不同的大事件。

创建日志格式
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%h %l %u %t \"%r\" %>s %b" \"%{Referer}i\" \"%{User-agent}i\"" combined

    LogFormat 指令允许你告诉Apache你想要记录请求的哪些方面。而你仍需附加的指令来告诉Apache在哪里记录那些信息,这在下一章中将会介绍。下面的例子显示了两种最受欢迎的格式的配置:普通日志格式和整合日志格式。当Apache收到一个请求,他将会用相应的请求属性来替代以%为前缀的每一个域。如果您正在使用普通日志格式,您的日志文件里的每一项输入看起来都将是这样的:

        192.168.200.4 - someuser [12/Jun/2005:08:33:34+0500] "GET /example.png HTTP/1.0" 200 1234

   如果您正在使用整合日志格式,您的日志文件里的每一项输入看起来则都将是这样的:

192.168.200.4 - someuser [12/Jun/2005:08:33:34+0500] "GET /example.png HTTP/1.0" 200 1234 http://www.example.com/index.html "Mozilla/5.0    (Windows; U; Windows NT 5.1; en-US; rv:1.7.7)"

   尽管有附件提供日志格式的详尽索引,下表描述了一些最为重要的域:

# %h: 客户端(例如,浏览器)向服务器发出连接请求时自己的当时的IP地址或域名(需开启HostNameLookups)。
# %u: 使用HTTP方式认证用户时,记录下的用户的编号。
# %t: 服务器接受到连接请求的时间。
# %r: 客户端发出的原始连接请求中的文本信息,包含所使用的HTTP方法。
# %>s: 服务器应答浏览器后的返回状态代码,200表示请求成功。.
# %b: 服务器应答浏览器发出的单个请求的回传对象的内容大小(字节为单位),不统计数据包头部字节。

    整合日志格式在普通日志格式的基础上扩展出了两个附加的域。定义为:

# %{Referer}i: 连接请求数据包包头,包含指向当前页面的文档关联信息。
# %{User-agent}i: 用户代理连接请求数据包包头,包含客户浏览器的信息。

 

 

    创建一个自定义日志文件

CustomLog logs/access_log common
TransferLog logs/sample.log

    您可能会想创建Apache自带以外的新的日志文件。下面的例子将运用CustomLog来创建一个新的日志文件,并保存由一个之前定义好的日志格式,即前一章提到的common,所定义的信息。您还可以用格式本身的定义来替换昵称。一个附加的,更为简单的指令是Transferlog,它只接受最后一个 LogFormat指令提供的定义。

 

    重导向日志到一个外部的程序

TransferLog "|bin/rotatelogs /var/logs/apachelog 86400"

    你也可以用CustomLog或TransferLog将日志的输出重导向(输出)到一个外部的程序,而不是一个文件。要做到这一点,首先您需要以输出字符 "|"开头,跟着是接收日志标准输入信息的程序之路经。本例运用Apache自带的rotatelogs程序,在稍后的章节中会对其有所介绍。

    当有一个外部程序被使用,它将作为启动httpd的用户被运行。如果服务器是被超级管理员所启动,它就会是超级管理员,完全确保这个程序是安全的。并且,当进入一个非Unix平台上的一个文件路径时,需要小心确保只有正斜杠被使用,即使这个平台可能是允许使用反斜杠的。总的来说,在整个配置文件中总是使用正斜杠是个好主意。

    有条件的日志请求

SetEnvIf Request_URI "(\.gif|\.jpg)$" image
CustomLog logs/access_log common env=!image
SetEnvIf Remote_Addr 192\.168\.200\.5 specialmachine
CustomLog logs/special_access_log common env=specialmachine

    你可以根据可变的环境决定是否记录一个请求。这种可变可以根据许多参数,比如客户端的IP地址或请求中某个头部的存在,事先设置好。正如本例中所显示, CustomLog指令可以将可变的环境作为第三个参数来接受。如果存在可变的环境,它就将被记录,否则就不会。如果这个可变的环境被一个"!"开头否定,那么不存在可变的环境将会被记录。本例将告诉您如何避免在日志里以GIF和JPEG的格式记录图像,及如何从一个特定的IP地址记录请求道一个单独的日志文件。另一个例子请参加下一节。

    谁在连接你的网站

SetEnvIfNoCase Referer www\.example\.com internalreferral
LogFormat "%{Referer}i -> %U" referer
CustomLog logs/referer.log referer env=!internalreferral

    可以通过记录Referer的值来检测哪些人连接了你的网站,Referer变量位于用户发送连接请求数据包的头部,数据包头中还包含了用户访问的目的网站的URL地址。通过这种方法可以记录下绝大部分网站访问者。也可以把来自特定网站(www\.example\.com)地址段的来访者排除出日志记录文件。


    利用模块参数(mod_status)来监视Apache服务器

<location /server-status>
  SetHandler server-status
  Order Deny,Allow
  Deny from all
  Allow from 192.168.0
</location>

    Apache 服务器中可以使用的功能模块很多,有服务器内置的也有外挂的,这些模块工作的状态和性能就是通过mod_status参数来记录的,记录的内容有“哪些模块参与了网站应答服务、哪些模块处于空闲状态、服务器的开启/关闭时间。正在处理的连接请求数和访问者数量(需要指定ExtendedStatus记号) -该模块记录对高负荷网站服务器性能有很大影响”。例子中记录的模块状态统计结果可以用浏览器访问http://www.example.com/server-status页面来查看。

 

    通过SNMP协议来监视Apache服务器

    SNMP 是简单网管协议,支持SNMP的服务器或网络设备可以被OpenView、Tivoli等网管软件统一管理,目前有很多开源的SNMP模块可以加装到 Apache网站服务器之上,对于Apache 1.3版来讲,mod_snmp模块可以支持第1版和2版的SNMP协议;对于Apache 2版来讲,mod_apache_snmp模块可以编译成Apache的DSO直接支持第1版、第2版和第3版的SNMP协议。有了SNMP模块,外部网管软件就可以对Apache网站服务器的各种实时性能参数进行查看了,这些参数包含“服务器连续在线时间、平均负载、一段时间内的错误数、提供网站服务的字节数和连接请求数”。SNMP模块遇到突然激增的并发连接请求数时会向控制台报警。管理SNMP资源的开源工具软件有:“net-snmp, OpenNMS,Najios等”。

    用开源工具分析日志

    有很多开源和商业版的工具软件可以对产生的Apache日志文件做分析和处理,通常的步骤是:

1.选取一个日志文件。
2.分析日志文件内容。
3.生成包含不同类别内容的统计信息网页输出。

    Webalizer(http://www.mrunix.net/webalizer/)和AWStats(http://awstats.sf.net)是较为流行的日志文件分析工具;还有一些工具可以记录来访者具体访问路线,比如Vistors和Pathalizer工具,可以分别从http://www.hping.org/visitors/和http://pathalizer.bzzt.net/下载。

    实时监视日志

    使用apachetop命令行工具来显示apache服务器当前的运行状态,类似于Unix等系统下的top命令工具。对流量比较低的Unix- Apache网站也可以使用tail命令来记录实时日志信息,tail -f /logfile/。通过扫描错误日志文件中的记录,分析出恶意连接请求,常用的错误日志文件扫描工具有Logscan和ScanErrLog,可以分别从http://www.garand.net/security.php和http://www.librelogiciel.com/software/去下载这些工具。

    将连接请求日志记录到数据库

    Apache 本身没有将记录转发到数据库的功能,必须要第三方脚本和模块来支持。这里列举几个:mod_log_sql模块允许将连接请求直接记入MySQL数据库,然后用Apache LogView SQL工具来参看库中的记录;pglogd工具可以记录日志到PostgreSQL数据库中。

    将日志文件转存和归档

CustomLog "|bin/rotatelogs /var/logs/apachelog 86400" common

    如果网站流量较高,日志文件很容易就会变得很大,需要进行转存和归档处理。转存日志文件时需要压缩和保存,在线进行这项工作可以使用Apache提供的rotatelogs来完成,类似工具还可以在http://cronolog.org/上找到。例子中用rotatelogs工具将每天的日志做了转存和归档处理,一天共有86400秒。查看Apache帮助文件可以了解更多的rotatelogs工具参数。注意如果rotatelogs工具所在的目录名含有空格,则需要用跳转符号\来指定。

    IP地址和域名之间对应处理

    将HostNameLookups 设置成on,那么日志记录中将显示来访者所在的域名,设置成on可降低服务器性能。为了解决这一问题,Apache提供了一个事后分析IP地址域名信息的工具logresolve,例如$ logresolve < access_log > resolved_log

    如果用代理服务器或网关设备来完成的网站访问,Apache服务器将只能记录到代理服务器和网关的IP地址和域名。

     如何自动启动Apache服务器

#!/bin/bash
if [ 'ps -waux | grep -v grep | grep -c httpd' -lt 1];
then apachectl restart; fi

    在windows 平台下以服务方式启动的Aapche遇到意外退出后可以由服务管理器自动自动,Unix平台下需要借助watchdog脚本来实现自动启动功能, watchdog程序专门用来监视其他程序的运行状态,发现被监视的程序退出或停止后可以重新将他们启动。例子中简单的linux脚本将监视系统的进程表,如果网站服务器httpd进程消失,则负责将它重新启动,使用该脚本的条件有2个,首先保证该脚本文件具备可执行权限,第二必须将该文件设置到 cron文件中,使之可以在预定的时间间隔内运行,如果使用Solaris系统,需要将例子中的ps -waux改成ps -ef。用户可以访问http://perl.apache.org/docs/general/control/control.html网页发现更多高级的watchdog类脚本工具,大多数linux发行版自带一些用于Apache的脚本工具。

    日志文件的分割和合并

    如果用户的网站环境是用服务器集群来搭建的,通常需要将所有服务器上的日志做合并成单个文件后,才可以进行分析和处理。相似的道理,如果在单台服务器上运行多个虚拟网站,则需要将单个日志文件分割成多个部分供不同的虚拟网站用户去分析。在Apache服务器源码的support/文件夹下可以找到相应的脚本工具split-logfile等。在http://www.coker.com.au/logtools/网页可以找到一些其他的日志工具。比如vlogger工具就可以替代cronologs来对单个服务器上的虚拟网站日志进行分别处理,该工具在http://n0rp.chemlab.org/vlogger/下载。

    为虚拟网站保存独立的日志文件

<virtualhost>
  ServerName vhost1.example.com
  CustomLog logs/vhost1.example.com_log combined
  ErrorLog logs/vhost2.example.com_log
  .......
</virtual host>

    使用CustomLog标志段在Apache配置文件的区块内实现虚拟网站日志文件的独立处理。

LogFormat "%v %h %l %u %t \"%r\" %>s %b" common_virtualhost
CustomLog logs/access_log common_virtualhost

    在Apache全局配置中配置方法,其中的v%负责把提供服务的虚拟网站记录下来,对于配置了很多虚拟网站的单台服务器来说,这种配置不错。如果不想记录虚拟服务器的日志只需要在配置文件中加入"CustomLog /dev/null"就可以了。

日志文件中常见的条目

缺少favicon.ico文件,该文件可在浏览器的标题栏显示网站的个性图案;
缺少robots.txt文件,利于站点复制工具和搜索引擎使用;
覆写httpd.pid文件,网站服务器不正常退出后遗留的PID记录文件;
陌生的长记录条,"SEARCH /\x90\x02\xb1\x02\xb1\x02\xb1\x02 ..."
"GET /scripts/..%252f../winnt/system32/cmd.exe?/
  c+dir HTTP/1.0..."
"GET /default.ida?NNNNNNN NNNNNNNNNNNNNNNNNN ..."

    类似的记录条表示访问者请求了网站上根本没有的cmd.exe,root.exe或dir等文件。
    日志文件中的一些条目经常反映了那些自动探测网站服务器漏洞的动作,多数来源于针对IIS网站服务器的蠕虫和恶意程序。有时候也会发现一些针对Apache的漏洞,所以为了保证Apache的正常运行,用户应保持经常更新Apache软件。

12 diciembre

 

      年年岁岁诉相思

         呵呵 信手拈来的句子 虽然很烂 倒也满顺口的。。。

 

 

      前面在看blog里面的照片 发觉在去年11月的最后一天 竟然也有拍了秋天下的梧桐树 也是在这里  复兴西路的大门口。

        忽然觉得 怎么转眼恍惚之间~ 就又过去了一年 。。。一切依旧如斯 。。

 

 

 

      不过 秋天的梧桐 秋天的复兴西路 ,倒真的是对我有无与伦比的魅力一般而存在 。

 

~ ~ ~

 

      复兴西路,两边整齐划一的高大法国梧桐是她永年不变的标志

        路不宽也不窄  刚刚好能容下来回的96路公交车以及一些零零散散的骑车人

          法式、西式的老宅鳞次栉比 奶酪色、草莓色、绿菊色、还有紫罗蓝

            虽然纷杂但总觉得出乎意料的融洽 都躲在高大的梧桐树后面  和谐而温暖


 

         有时候经过那一扇又一扇总是静闭的门,还有拉着窗帘、有铁栅栏的窗台。就会有些好奇 到底是什么样的人住在里头呢 。。

 

 

 

 

      上海的天气 秋天总是一下子就来了。气温怡人的就没有几天 ,

        不过如果挑着金色阳光灿烂的中午 走在被金色梧桐树叶遮蔽了天空的路边, 偶尔飘下来的落叶 ,

          看着车轮压在一张张梧桐树影编织的图案上,静谧而整齐 ,

              虽然凉风吹在脸上和身子上

            也仍旧觉得很谐意呢。

 

 

 

 

       不过说到图案、画,  其实  在凛凛秋雨下的凌晨和夜间, 那才是复兴西路真正最有风韵的瞬间

 

           铺满了一整条人行道的红色的、金色的斑斓落叶

              被雨水打湿以后 就紧密滴贴在了地上

                 有的展开 有的翻覆  或是层层叠叠 ,

                   大自然的奇妙 就在于他的大同中的万般小异吧!

                     千般姿态 万般情味

                虽然与地面融合 不过还是会有真实存在的突起

                  在凌晨穿过厚实树枝的几缕阳光、  抑或夜间那些间隔幽暗淡黄色路灯的映衬下

                    淅淅沥沥的秋雨 安静无人的公车站亭 老式洋房的大铁门 零碎小店透出的淡淡灯光

                 那就是一整幅完美无瑕的油画!

 

~ ~ ~ ~ ~

 

       其实一直很喜欢那种 无人待车的车站

         孤独 有些凄凉 却很安静 默默地坚持 永不放弃心中的希望

          每次看到都会有些心酸 却是迷恋着这种感觉

 

          记得梦中曾见过一个乡间金色稻田里的超小型铁路车站

           日落黄昏 阳光斜照,稻田里果实累累 正是收获的季节

            小火车叮叮当当敲了一阵从眼前经过 缓缓停下

               却没有人在那里等待 上车

            隔了短暂的几秒 又是一阵叮叮当当 合上车门逐渐远去消失在田野之中

               带走了希望一般 却也带走了一切嘈杂

            周围如此寂静 只留下微微的风撷绕在身边 空气中挟带着新鲜泥土的味道

 

                    然后远远地出现一个女孩 踏着太阳的余辉走来

                    不是很高 飘散着长长的直发 碎碎短裙

                    想要再看个清切 眼睛却被黄昏的阳光照得刺眼 无法直视

                    眯起眼 除了轮廓之外 就黑黑模糊的什么都看不出

                          “是来等车么”

                           心里依旧一阵悸动    但事实上却仍是什么都不知道 , 只有  揣测 。

 

 

~ ~ ~ ~ ~

 

           曾给过我油画般感觉的路 上海就两条 一条是1点后的衡山路 一条就是下过雨后的复兴西路 。

 

 

           喜欢高大繁茂的树   喜欢清凉切肤的秋风   喜欢安静无扰的空间

 

                秋。

11 diciembre

企业宅想

前段时间哈忙呀~     这几天总算好点了

 

     前面在想,经济环境这样子 其实是进行了一个世界级的经济格局大洗牌。

      前几个月谁和我说过 现在已经成型的对手都竖在那里 你还冲进去怎么会有希望

         现在不就是希望么 破坏意味着重生。

 

       所以对我们80后的人来说 这个其实本身就是一个非常好的机会

        再过几年经济复苏的时候 那时正好是我们大展拳脚的时代

         说不定 经济的复苏本身也就是依靠我们这一代来实现呢

            过几年 我们这一代应该就是踩着冲浪板在经济浪潮的浪花尖上向前冲了吧!

 

        不过切入点确实还是个问题

          要找到那种蓬勃发展没有恶意竞争的产业

          要有高附加值 低生产成本 低污染、消耗的

          要能够提公众高效率和生产率的

          最重要的是能为社会作出积极贡献~
            在社会的某一个环节上要站住脚 能够承上启下 起到润滑过渡作用的

            要有竞争力 有自己的核心技术 不是在社会中可有可无的那种

 

         个人感觉上应该还是偏技术服务业比较好一些 主要为社会提供技术支持

             也可以附加做些实产品。。或许这个其实很难做到。。。根据国情来看 开头肯定是要以生产为主。。

           

~~~~~~~~~~~~~~~~

 

     我看几乎所有成功的企业都脱离不了如下的规则:

 

 

          首先当然要有好的切入点 一般的其实也可以 大部分的企业都是如此 但要有个人实力 而且相信自己 肯坚持

 

          然后就是等待机遇 靠某一笔业务 一下子得到了第一桶金。 这段时间有长有短 和经济格局 个人实力 切入点都有关

                 有了资金 企业才能走上良性循环的正轨

                 当然 政府支持的小企业贷款和减免息政策也确实是效果 不过只能算是辅助手段 降低开头这段时间的风险

                 因为 第一桶金虽然有偶然的成分 但从根本来讲就是有人肯定了你的企业 肯定了你的想法

                 这个也是证明自己企业朝着正方向走的一个标志 而单纯靠贷款维系 心里还是会对自己的企业是不是有用没有底吧

 

 

 

         在扩大的过程内 每个人都有很多自己的想法和方式 失败的例子繁繁总总

            但成功的例子基本都是和 扩大规模、增加业务面   有关

              很少有看到那种坚持精品项目 不扩大规模 专注提升技术层级的企业

 

           这个我觉得也很好解释 没有规模,哪里来的资本积累 哪里来进行研究和二次开发的投入

                  除非有国家、大的风险投资公司等很硬的后台撑腰。。。

           于是乎 哪个赚钱就做哪个 把企业总资产的一部分用于和本企业方向不相关的项目上去

             这个本就是无可厚非,

                不过我觉得 还是应该尽量在自己熟悉的技术范围内来开拓业务面 而且这个业务面的战线也不太好拉得过长

                不熟悉的尽量做短期项目 然后也要做好高回报高风险的准备 不能被那种不熟悉的非主营业务拖垮 随时舍弃 表舍不得

 

 

        最后一个公司阶段      『我只能说 是当代这个 世界社会阶段。  以后的 谁知道呢~』

           就是回归本源  剥离非核心业务。

               AMD 今年年中经济还没有出现问题的时候 就把自己的晶圆加工厂给卖掉,专注于CPU等芯片的开发研究上

               IBM  在自己笔记本业务做的还不错的情况下卖掉整个笔记本团队给联想,只专注于整体的整合咨询及解决方案上

               华为 在前几年内,如芯片、手机、视讯等业务 要么出售要么独立出来和别家公司合资 只留下了核心的无线、宽带部分。

           为什么都要这么做呢?

               现在社会的人口越来越多 必然造成社会分工的超细化

                 而资本动荡的次数越多 人类则会进行学习 使得资本的行为越来越理智

                    就好比这次出现的次贷危机 下次世界上的人类就不会让他再产生这么大的影响了吧?

                 所以说 只有做到真正在自己立足的产业上站在比较高的位子 才有更多的能力去服务社会

                      而不是陷在虚幻、无尽的资本游戏中无法自拔 迷失自己

                有了一定的资本积累 就能剥离掉那些无法完全掌握的部分 专注于自己的长处 做到自己所谓的“最终理想业务”

                  这个或许是人类这个如此短暂生命所能达到的最高成就吧?

 

····················

  症结

           第一阶段 大部分的私人企业

             或是不努力 停步不前

             或是找不到自己的切入点

             或是没有真正意义上的第一桶金(就是真正肯定了企业成果的第一桶金)

                    这个就要看领导人的个人能力

           第二阶段 已经走向了正规 失败多归结于过于急进

             或是扩大业务面 拉长战线 首尾不顾

             或是大力融资 抬高企业生存风险

             或是不练内功 唯规模论 内部架构支离破碎

                  我觉得这部分要做得好 首先要眼界扩大

                  本身就是资本积累的目的 所以要在自己可以掌握的情况下尽量挑那些高回报的项目做

                     但是要注意自己的负债率 以及该项目和自己主业的相关程度

                        也可以划分出具体百分之多少的资金去做高风险项目

                  还有一点就是要勤练内功 技术和管理都要跟上

                    自己的技术水平要跟上 保证不掉队的同时要有创新

                    不同规模时企业的管理方式肯定会跟着改变 绝对不可能一成不变 这个也是在发展中需要持续关注的

 

            第三阶段~ 每个人心中都有自己的香巴拉或是巴比伦~

                 真正能够达到第三阶段的公司,领导方面肯定都不会有什么大问题

                      只是看个人对人生观世界观的见解区别,

                      到这个时候就是看如何发挥出自己的能力来创造社会价值了

                      真正到了自己想做什么就做什么 能够放手做自己喜欢的事情 做其他人所做不到的事情

                        这个就如同 理想之国 一般了 呵呵  理想么~。。。。

              

 

 

            当然 我的职业决定了我关注IT企业比较多一些

               或许不同领域的企业成长方式会有所不同 就比如现在越来越突出的网络销售产业

            但是我给自己的定位 还是在于技术服务业的核心业务上 可以把它称为“最终理想的业务”吧

              具体是什么呢?嘿 还没有确定