2006年11月27日

redhat linux as4 下
apache2.2.0+php5.1.2+mysql5.0.21+gd配置,安装GD库(让PHP支持GIF,PNG,JPEG)
其中安装中见到的问题见文章最后!

一:准备软件包,存放/home/xiutuo/software/目录下。

主要软件包,
(这里没有选择mysql-standard-5.0.20-linux-i686.tar.gz,
呆会再说明原因。)
httpd-2.2.0.tar.gz
mysql-max-5.0.21-linux-i686-glibc23.tar.gz
php-5.1.2.tar.gz

安装php所需的软件包
(其中libxml2是安装php5必须的,为什么还需要perl呆会说明原因。)
libxml2-2.6.19.tar.gz
libxslt-1.1.15.tar.gz
ActivePerl-5.8.8.817-i686-linux-2.2.17-gcc-257965.rpm
curl-7.15.0.tar.gz

GD库所需要软件包
(有人说PHP源码包里自带了GD2.0.28和zlib,
只要安装GD的三个支持包:jpg,png和freetype,但是我们还是
下载)
gd-2.0.33.tar.gz
freetype-2.1.10.tar.gz
jpegsrc.v6b.tar.gz
libpng-1.2.8.tar.gz
zlib-1.2.3.tar.gz

相关下载
(根据自己的linux版本下载相应的包,
查看操作系统版本:
# uname -r )

http://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/libxml2-2.6.19.tar.gz
http://ftp.gnome.org/pub/GNOME/sources/libxslt/1.1/libxslt-1.1.15.tar.gz
http://downloads.activestate.com/ActivePerl/Linux/5.6/ActivePerl-5.6.1.638-i686-linux.rpm
http://curl.haxx.se/download/curl-7.15.0.tar.gz

http://www.boutell.com/gd/http/gd-2.0.33.tar.gz
http://keihanna.dl.sourceforge.net/sourceforge/freetype/freetype-2.1.10.tar.gz
http://www.ijg.org/files/jpegsrc.v6b.tar.gz
http://nchc.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.8.tar.gz
http://www.zlib.net/zlib-1.2.3.tar.gz

把以上所有软件包下载到:/home/xiutuo/software/目录下。

二:安装apache2。
# cd /home/xiutuo/software/
进入目录/home/xiutuo/software/
# tar -zvxf httpd-2.2.0.tar.gz
解压httpd-2.2.0.tar.gz
# cd httpd-2.2.0
进入httpd-2.2.0目录
# mkdir -p /usr/local/apache2
生成/usr/local/apache2目录
# ./configure –prefix=/usr/local/apache
或者
# ./configure –prefix=/usr/local/apache –enable-modules=so –enable-rewrite
# make; make install
安装apache
# vi /usr/local/apache/conf/httpd.conf
#ServerName www.example.com:80 在其下增加
ServerName www.xiutuo.com:80
保存退出,现在就这么简单配置apache。

# /usr/local/apache/bin/apachectl -k start
启动apahce,
用浏览器查看http://www.xiutuo.com,得到it works,说明apache已经配置成功了。
# /usr/local/apache/bin/apachectl -k stop
停止apache。

三:安装mysql
# cd /home/xiutuo/software/
# tar -zvxf mysql-max-5.0.21-linux-i686-glibc23.tar.gz
# mkdir -p /usr/local/mysql (省略也可)
# cp -r mysql-max-5.0.21-linux-i686-glibc23.tar.gz /usr/local/mysql
# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf

添加mysql用户及用户组
# groupadd mysql
# useradd -g mysql mysql
修改mysql目录权限
# chown -R root /usr/local/mysql
# chgrp -R mysql /usr/local/mysql
# chown -R mysql /usr/local/mysql/data
生成mysql系统数据库
# /usr/local/mysql/scripts/mysql_install_db –user=mysql&
启动mysql服务
# /usr/local/mysql/bin/mysqld_safe –user=mysql&
如出现 Starting mysqld daemon with databases from /usr/local/mysql/data
代表正常启动mysql服务了, 按Ctrl + C 跳出
修改 mysql 的 root 密码
# /usr/local/mysql/bin/mysqladmin -u root -p password "123456"

四:安装GD库(让PHP支持GIF,PNG,JPEG)
a.安装 jpeg6
建立目录:
# mkdir -p /usr/local/jpeg6
# mkdir -p /usr/local/jpeg6/bin
# mkdir -p /usr/local/jpeg6/lib
# mkdir -p /usr/local/jpeg6/include
# mkdir -p /usr/local/jpeg6/man
# mkdir -p /usr/local/jpeg6/man1
# mkdir -p /usr/local/jpeg6/man/man1

# cd /home/xiutuo/software/
# tar -zvxf jpegsrc.v6b.tar.gz
# cd jpeg-6b
# ./configure –prefix=/usr/local/jpeg6/ –enable-shared –enable-static
# make; make install

b.安装libpng
# cd /home/xiutuo/software/
# tar -zvxf libpng-1.2.8.tar.gz
# cd libpng-1.2.8
# cp scripts/makefile.std makefile
# make; make install

c.安装 freetype
# cd /home/xiutuo/software/
# tar -zvxf freetype-2.1.10.tar.gz
# cd freetype-2.1.10
# mkdir -p /usr/local/freetype
# ./configure –prefix=/usr/local/freetype
# make;make install

d.:安装zlib
# cd /home/xiutuo/software/
#tar -zxvf zlib-1.2.3.tar.gz
#cd zlib.1.2.3
# ./configure
# make;make install

e.安装GD库
# cd /home/xiutuo/software/
# tar -zvxf gd-2.0.33.tar.gz
# mkdir -p /usr/local/gd2
# cd gd-2.0.33
# ./configure –prefix=/usr/local/gd2 –with-jpeg=/usr/local/jpeg6/
–with-png=/usr/local/lib/
–with-zlib=/usr/local/lib/
–with-freetype=/usr/local/freetype/
# make; make install

e.安装Curl库
# cd /home/xiutuo/software/
# tar -zxf curl-7.15.0.tar.gz
# mkdir -p /usr/local/curl
# ./configure –prefix=/usr/local/curl
# make; make install

五:安装php5,php5必须有libxml2支持!
a.安装libxml2
# cd /home/xiutuo/software/
# tar -zxf libxml2-2.6.19.tar.gz
# cd libxml2-2.6.19
# mkdir -p /usr/local/libxml2
# ./configure –prefix=/usr/local/libxml2
# make; make install

b.安装 libxslt(可选安装,你可以不安装)
# cd /home/xiutuo/software/
# tar -zxf libxslt-1.1.15.tar.gz
# mkdir -p /usr/local/libxslt
# cd libxslt-1.1.15
# ./configure –prefix=/usr/local/libxslt –with-libxml-prefix=/usr/local/libxml2
# make; make install

c.安装php5
# cd /home/xiutuo/software/
# tar -zvxf php-5.1.2.tar.gz
# mkdir -p /usr/local/php
# cd php-5.1.2
# ./configure –prefix=/usr/local/php –with-apxs2=/usr/local/apache/bin/apxs
–with-mysql=/usr/local/mysql/
–with-curl=/usr/local/curl –enable-ftp
–with-libxml-dir=/usr/local/libxml2
–with-expat-dir=/usr/lib –enable-soap
–with-xsl=/usr/local/libxslt –enable-xslt
–with-gd=/usr/local/gd2/
–with-jpeg-dir=/usr/local/jpeg6/
–with-zlib-dir=/usr/local/lib/
–with-png=/usr/local/lib/
–with-freetype-dir=/usr/local/freetype/
# make
# make install
# cp php.ini-dist /usr/local/php/lib/php.ini (别忘记了呵呵)

其中./configure 后的
–prefix=/usr/local/php
–with-apxs2=/usr/local/apache/bin/apxs
–with-mysql=/usr/local/mysql/
–with-libxml-dir=/usr/local/libxml2
是必要的选项

–with-gd=/usr/local/gd2/
–with-jpeg-dir=/usr/local/jpeg6/
–with-png=/usr/local/lib
–with-zlib-dir=/usr/lib
–with-freetype-dir=/usr/local/freetype
这是让PHP支持GD库的配置选项

–with-curl=/usr/local/curl 支持CURL库
–enable-ftp 打开FTP库函数支持

–enable-soap –with-xsl=/usr/local/libxslt –enable-xslt
让PHP支持SOAP, 上面这些一般用得少, 可以去掉

六:重新配置apache2让他支持php。

配置 httpd.conf 让apache支持PHP
# vi /usr/local/apache/conf/httpd.conf
找到 AddType application/x-gzip .gz .tgz 在其下添加如下内容
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

重启apache
# /usr/local/apache/bin/apachectl restart
在htdocs目录里建一内容为 <? phpinfo(); ?> PHP文件, 输入URL地址查看PHP配置是否正确

ok,web环境apache2+mysql5+php5就介绍到这里。
更详细的apache2的配置和mysql配置和php.ini的配置参考相应文档。
——————————————————–
安装时候遇到的问题:

由于本人的系统是redhat9,自定义安装了php,mysql,apache。
所以在安装最新的php,mysql,apache版本时候,本人对相关的rpm进行了
卸载,忽略依赖关系强制卸载apache;由于php,mysql与perl的bt依赖关系,
一气之下删除了所有的相关文件。

问题

1.当你看到mysql有很多版本,如:
mysql-max-5.0.21-linux-i686-glibc23.tar.gz和
mysql-max-5.0.21-linux-i686.tar.gz
这俩个到底选哪个呢,请你使用如下命令来决定
# rpm -qa | grep glibc
glibc-kernheaders-2.4-8.10
glibc-common-2.3.2-11.9
glibc-2.3.2-11.9
glibc-devel-2.3.2-11.9
如果出现以上信息,请选择mysql-max-5.0.21-linux-i686-glibc23.tar.gz版本

2:编译php时出现

./configure: /usr/local/apache2/bin/apxs: /replace/with/path/to/perl/interpreter:
bad interpreter: No such file or directory
这是找不到perl解释器的缘故。
修改/usr/local/apache2/bin/apxs文件中:
/replace/with/path/to/perl/interpreter
把他替换成perl所在的路径如/opt/ActivePerl-5.8/bin/perl,
(如果你下载的是active perl5.8的rpm,他默认安装路径是/opt/ActivePerl-5.8/bin/perl)

3.安装了perl后,发现所有的文本编辑器都不能用了。
运行vi或者gedit时候,提示找不到libperl.so
到perl的安装目录下找一个libperl.so放到/usr/lib目录下就解决问题了
我的libperl.so在/opt/ActivePerl-5.8/lib/5.8.8/i686-linux-thread-multi-CORE/目录下。
如果不知道libperl.so在什么地方,可以用
# locate libperl.so
查找,或者用find命令

4.当我使用mysql-standard-5.0.20,编译php时出现mysql错误:

checking for mSQL support… no
checking for MSSQL support via FreeTDS… no
checking for MySQL support… yes
checking for specified location of the MySQL UNIX socket… no
checking for MySQL UNIX socket location… /tmp/mysql.sock
checking for mysql_close in -lmysqlclient… no
checking for mysql_error in -lmysqlclient… no
configure: error: mysql configure failed. Please check config.log for more information.

网查找说:安装PHP的时候没有指定一下mysql的安装目录。但是我已经指定了,所以这个说法是错误的,其实主要原因是 mysql-level没有装,也就是mysql的版本不对,应该换
mysql-max-5.0.21版本(包含所有mysql相关内容的软件包)

5.编译php时出现
configure: error: freetype2 not found!
没有安装freetype-level

configure: error: libpng.(a|so) not found.
没有安装libpng-devel

6忘了mysql的root口令怎么办
# /usr/local/mysql/support-files/mysql.server stop
# mysqld_safe –skip-grant-tables &
# mysqladmin -u user password ‘newpassword’
# mysqladmin flush-privileges

2006年09月26日
一、简介
前段时间笔者写了一篇《Fedora core 2下建立Poptop服务器以及常见问题》的文章,收到许多朋友的欢迎,但是那篇文章只支持MPPE数据加密,不支持MPPC数据压缩,未免有些遗憾,所以笔者再接再厉阅读了一些文档,终于使PPTP VPN实现了MPPC数据压缩功能。首先我们先来介绍一下MPPE/MPPC的概念。
MPPE:Microsoft Point-to-Point Encryption,微软的点对点加密协议,可以对在点对点链路上传输的数据包进行加密,详细介绍请见RFC3078和RFC3079。
MPPC:Microsoft Point-to-Point Compression,微软的点对点压缩协议,可以对在点对点链路上传输的数据包进行压缩,详细介绍请见RFC21189。
       那么要想在Linux环境下使PPTP VPN支持这两种协议,需要做两件事情:第一、给Linux内核打补丁,然后重新编译内核,让内核支持MPPE/MPPC。第二、给ppp套件打补丁,让ppp也支持MPPE/MPPC。好啦,知道了原理就好办了,下面就让我们一起来实现这些功能吧。
       首先先来看看我们试验的环境,一台安装了Fedora core 2的服务器充当了连接内网与外网的NAT主机以及VPN服务器的作用。外网网卡IP:211.137.115.5,内网网卡IP:10.100.0.200。网络拓扑图如下:

图1:网络拓扑图

图1:网络拓扑图
二、下载
       先来看看我们需要下载的套件吧。2.6.5-1.358
1、Linux Kernel 2.6.6
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.gz
2、linux-2.6.6-mppe-mppc-1.0.patch.gz
http://www.polbox.com/h/hs001/linux-2.6.6-mppe-mppc-1.0.patch.gz
3、ppp-2.4.3
ftp://ftp.samba.org/pub/ppp/ppp-2.4.3.tar.gz
4、ppp-2.4.3-mppe-mppc-1.1.patch.gz
http://www.polbox.com/h/hs001/ppp-2.4.3-mppe-mppc-1.1.patch.gz
5、pptp-1.1.4
http://internap.dl.sourceforge.net/sourceforge/poptop/pptpd-1.1.4-b4.tar.gz
       把这些都下载到/usr/src目录下面,然后准备进行安装与配置。
 
三、安装
1、重新编译Linux内核,以支持MPPE/MPPC
Fedora core 2默认的内核版本为kernel 2.6.5-1.358,是不支持MPPE/MPPC的,所以我们要重新下载内核文件并且重新编译才行,这里选用了Kernel 2.6.6。
//解压缩内核文件
#tar zxvf linux-2.6.6.tar.gz
//给内核文件打补丁
#patch –p0 –i linux-2.6.6-mppe-mppc-1.0.patch.gz
#cd linux-2.6.6
//进入Linux内核文本配置界面
#make menuconfig
选择进入Device Drivers -> Networking support ->
<> PPP BSD-Compress compression
<> Microsoft PPP compression/encryption (MPPC/MPPE)
找到上面两项,分别按下空格键,最前面的<>就会变成<M>,如下
<M> PPP BSD-Compress compression
<M> Microsoft PPP compression/encryption (MPPC/MPPE)
表示将这两项以模块形式编译到内核里面。然后保存退出。
//建立相依的属性关系
#make dep
//将旧的资料删除
#make clean
//开始编译内核
#make bzImage
//开始编译模块
#make modules
//将资料安装在/lib/modules/2.6.6里面
#make modules_install
//将刚刚make bzImage建立完成的内核安装到系统里面
#make install
 
好啦,经过上面7个步骤就完成了内核编译的工作,是不是很简单呀,所以大家不要认为编译Linux内核很复杂,其实是非常简单的。
因为我们是以模块方式来安装补丁的,所以每次系统启动时都需要加载模块才行,因此我们要在/etc/rc.d/rc.local里面写入一行:
/sbin/modprobe ppp_mppe_mppc
 
2、安装PPP套件
因为Fedora core 2默认情况下已经安装了ppp-2.4.2-2,但是并不支持MPPE/MPPC,因此我们要先把它卸载掉,然后手工编译安装PPP。
#rpm -e –nodeps ppp
//解压缩ppp-2.4.3
#tar zxvf ppp-2.4.3.tar.gz
//给ppp打补丁
#patch –p0 –i ppp-2.4.3-mppe-mppc-1.1.patch.gz
#cd ppp-2.4.3
//进行编译安装
#./configure
#make
#make install
 
3、安装pptp套件
#tar zxvf pptpd-1.1.4-b4.tar.gz
#cd pptpd-1.1.4-b4
#./configure
#make
#make install
       好啦,到这里我们已经完成了全部的安装工作,下面将要进行最后的配置工作了。
 
四、配置
这里需要修改如下3个配置文件。
/etc/pptpd.conf              // Poptop配置文件
/etc/ppp/options.pptpd        // Poptop选项文件
/etc/ppp/chap-secrets         //账号、密码存放文件
 
/etc/pptpd.conf
option /etc/ppp/options.pptpd
debug
Logwtmp
localip 10.100.0.201
remoteip 10.100.0.202-210
 
/etc/ppp/options.pptpd
name pptp
lock
mtu 1450
mru 1450
proxyarp
auth
ipcp-accept-local
ipcp-accept-remote
lcp-echo-failure 3
lcp-echo-interval 5
deflate 0
 
# Handshake Auth Method
+chap
+mschap-v2
 
# Data Encryption Methods
mppe required
 
/etc/ppp/chap-secrets
#VPN客户账号和密码。
# Secrets for authentication using CHAP
# client    server       secret             IP addresses
“username1” pptpd  “password1”   *
“username2” pptpd  “password2”   10.100.0.203
注意:后面的IP地址栏可以知道次用户登陆后讲分配的IP地址,如果不具体指定,请用*号代替。
 
启动NAT转发
echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_LOG
 
五、启动pptpd
# /usr/local/sbin/pptpd

apmd--apmd用来监视系统用电状态,并将相关信息通过syslogd写入日志。也可以用来在电源不足时关机

arpwatch--用来维护以太网物理地址和ip地址的对应关系

atd--运行用户用at命令调度的任务。也在系统负荷比较低时运行批处理任务

autofs--当您需要时自动转载文件系统,而当您不需要时自动卸载

chargen--tcp版本的chargen server

chargen-udp--udp版本的chargen server

crond--周期地运行用户调度的任务。比起传统的unix版本添加了不少属性,而且更安全,配置更简单

 daytime--tcp版本的daytime server

daytime-udp--udp版本的daytime server

echo--tcp版本的echo server

echo-udp--udp版本的echo server

eklogin--接受rlogin会话鉴证和用kerberos5加密的一种服务

finger--用于应答finger请求的服务

gpm--为文本模式下的linux程序提供了鼠标的支持。它也支持控制台鼠标的拷贝,粘帖操作以及弹出式菜单 (必须)

gssftp--接受可被kerberos5验证的ftp连接

httpd--http是著名的www服务器,可用来提供html文件以及cgi动态内容服务

identd--提供验证身份的方法

ipchains--ipchains包过滤防火墙

iptables--iptables包过滤防火墙

ipvsadm--调用ipvsadm来建立和维护ipvs路由选择表

isdn--启用isdn(综合服务数字网)服务

kadmin--更改在主控kdc中使用本机的kadmin工具,或透过kadmin服务来完成

kdcrotate--设置配置文件/etc/krb5.con中的kdcs表项

keytable--该程序的功能是转载您在/etc/sysconfig/keyboards里说明的键盘映射表

klogin--接受bsd方式的rlogin会话,但需要使用kerbeos5验证

kprop--是否允许kdc接收来的master kdc的升级

krb5-telnet--允许普通的telnet登陆,但也可使用kerberos5验证

krb524--是以改变kerberos5到kerberosIV的赁证

krb5kdc--开启kerberosIV和5所需的连接以获得赁证

kshell--接受rshell命令鉴证和用kerberos加密的服务

kudzu--运行硬件检测,并可选择性地设置硬件变化

lpd--lpd是系统打印守护程序,负责将lpr等程序提交给打印作业

netfs--负责装载/卸载nfs、samba、ncp文件系统

network--激活/关闭启动时的各个网络接口 (必须)

nfs--nfs是一个流行的基于tcp/ip网络的文件共享协议.该服务提供了nfs文件共享服务

nfslock--提供nfs文件上锁功能

nscd--该服务负责密码和组的查询,并且缓冲查询结果

portmap--portmap用来支持rpc连接,rpc被用于nfs以及nis等服务

postgresql--postgresql关系数据库引擎

random--保存和恢复系统的高质量随机数生成器,这些随机数是系统一些随机行为提供的

rlogin--rlogin程序服务,提供来自远程信任主机的注册功能

routed--该守护程序支持rip协议的自动ip路由表维护.rip主要使用在小型网络上,大一点的网络就需要
复杂一点的协议

rsh--提供rcmd程序或者rsh程序的服务

rstatd--rstat协议允许网络上的用户获得同一网络上各机器的性能参数

rsync--对ftp服务的一个很好的附加,允许循环码求和校验等

rusersd--该服务使网络用户可以定位同一网络上的其他用户

rwalld--rwall协议允许远程用户向在同一系统中活跃着的终端发送消息,类似wall的本地行为

rwhod--允许远程用户获得运行rwho精灵的机器上所有已登录用户的列表,与finger类似

smb--启动和关闭smbd和nmbd精灵程序以提供smb网络服务

snortd--一个轻量级的网络入侵检测工具

swat--samba网络配置工具,可以通过流览器的901端口连接使用swat

syslog--syslog是操作系统提供一种机制,守护程序通常使用这些机制将各种信息写到各个系统日志文件 (必须)

telnet--提供telnet服务,使用未加密的用户/密码组进行验证

time--tcp版本的rfc 868 time server

time-udp--udp版本的rfc 868 time server

webmin--webmin是基于web的集系统管理与网络管理于一身的强大管理工具

xfs--在引导和关闭时启动和停上x字体服务,并可能重新生成字体表 (必须)

xinetd--因特网操作服务程序。提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全,
监控网络对各种它管理的服务的需求,并在要的时候启动相应的服务程序

ypbind--实现网络信息服务的服务器端

redhat 下常用服务介绍

anacron 不考虑系统downtime期间的cron服务

amd 自动安装NFS守候进程

apmd 高级电源管理

arpwatch 记录日志并构建一个在LAN接口上看到的以太网地址和IP地址对数据库

atd 用于at和batch的服务

autofs 自动安装管理进程automount,与NFS相关,依赖于NIS

crond 为Linux下自动安排的进程提供运行服务.

Gpm 提供字符模式下对鼠标的支持.

Keytable 用于装载键盘镜像

Kudzu 硬件探测器

Netfs 安装和卸载NFS、SAMBA和NETWARE网络文件系统

Network 激活已配置网络接口的脚本程序

Nfslock NFS锁定

Pcmcia 安装pcmcia卡(一般用于笔记本电脑)

Sshd OpenSSH服务器

Syslog 一个让系统引导时启动syslog和klogd系统日志守候里程的脚本

Xfs Xwindow字型服务器,为本地和远程X服务器提供字型集

Xinetd 支持多种网络服务的核心守候程序

任务调度的crond常驻命令
crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而linux任务调度的工作主要分为以下两类:
1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置。

一、任务调度设置文件的写法
其格式如下:
Minute Hour Day Month Dayofweek command
分钟 小时 天 月 天每星期 命令

每个字段代表的含义如下:
Minute 每个小时的第几分钟执行该任务
Hour 每天的第几个小时执行该任务
Day 每月的第几天执行该任务
Month 每年的第几个月执行该任务
DayOfWeek 每周的第几天执行该任务
Command 指定要执行的程序
在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。

举例如下:
1、指定每小时的第5分钟执行一次ls命令
5 * * * * ls

2、指定每天的 5:30 执行ls命令
30 5 * * * ls

3、指定每月8号的7:30分执行ls命令
30 7 8 * * ls

4、指定每年的6月8日5:30执行ls命令
30 5 8 6 * ls

5、指定每星期日的6:30执行ls命令
30 6 * * 0 ls
注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。

6、每月10号及20号的3:30执行ls命令
30 3 10,20 * * ls
注:“,”用来连接多个不连续的时段

7、每天8-11点的第25分钟执行ls命令
25 8-11 * * * ls
注:“-”用来连接连续的时段

8、每15分钟执行一次ls命令
*/15 * * * * ls
即每个小时的第0 15 30 45 60分钟执行ls命令

9、每个月中,每隔10天6:30执行一次ls命令
30 6 */10 * * ls
即每月的1、11、21、31日是的6:30执行一次ls命令。

10、每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件
50 7 * * * root run-parts /etc/cron.daily
注:run-parts参数表示,执行后面目录中的所有可执行文件。

二、新增调度任务
新增调度任务可用两种方法:
1、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
2、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。

三、查看调度任务
crontab -l //列出当前的所有调度任务
crontab -l -u jp   //列出用户jp的所有调度任务

四、删除任务调度工作
crontab -r  //删除所有任务调度工作

五、任务调度执行结果的转向
例1:每天5:30执行ls命令,并把结果输出到/jp/test文件中
30 5 * * * ls >/jp/test 2>&1
注:2>&1 表示执行结果及错误信息。

编辑/etc/crontab 文件配置cron

  cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也
能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:

  SHELL=/bin/bash

  PATH=/sbin:/bin:/usr/sbin:/usr/bin

  MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号

  HOME=/ //使用者运行的路径,这里是根目录

  # run-parts

  01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本

  02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本

  22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本

  42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本

  大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。

2006年09月10日

中国互联网的中国特色,莫过于网通电信联而不通了,才直接导致区域负载分配,双路服务器等等许多麻烦事情来。对于一般网络服务,经常用DNS定向的方式,来解决南北网络用户分流的问题,实现更好服务质量。用bind提供的view功能固然能解决一些问题,但要维护划分view依赖的IP区域表,保持准确性,也是挺麻烦的事情。

进入正题,如何多快好省的解决分区域解析名字的问题喃? 假设你要解析的域名是www.foobar.com,你希望网通用户解析出来的IP是1.2.3.4,电信用户解析出来的是5.6.7.8,那么这样配置一下你的dns(bind zone文件语法)


www.foobar.com. IN CNAME www.foobar.comxxx.cn-redirector.io8.org.
c.www.foobar.com. IN A 1.2.3.4
d.www.foobar.com. IN A 5.6.7.8

这样就搞定了,总结一下,如果要分区域解析DNS名字foobar.com,首先定义一个CNAME,加上xxx.cn-redirector.io8.org这个后缀(xxx,就是三个x字符,只是一个标记,没有别的意思),然后加上对应的两个带前缀的A记录,c表示网通,d表示电信,就这样了。说到原理,实际上就是cn-redirector.io8.org这个域名服务器,按照请求的来源网络重新分类后,丢回给用户的DNS完成余下的操作。

2006年08月26日

1.在附件的根目录下新建.htaccess
添加
SetEnvIfNoCase Referer "[^a-z0-9]" local_ref=1
<FilesMatch "\.(mp3)">
Order Allow,Deny
Allow from All
Deny from env=local_ref
</FilesMatch>
保存!

2.在http.conf中找到AllowOverride None修改为AllowOverride All
然后添加
<Directory "/usr/local/apps/www">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
SetEnvIfNoCase Referer "^((http://www\.xxx\.com/)|(http://localhost/)|(http://127\.0\.0\.1/)|(http://222\.xx\.xxx\.xx/))" local_ref=1
    <FilesMatch "\.(rar|zip|exe|iso|txt|mp3)">
    Order Allow,Deny
    Allow from env=local_ref
</FilesMatch>
</Directory>

2006年08月13日

 

 

   

acpid acpid(Advanced Configuration and Power Interface)是为替代传统的APM电源管理标准而推出的新型电源管理标准。通常笔记本电脑需要启动电源进行管理。
alsasound Alsa 声卡驱动守护程序。Alsa声卡驱动程序本来是为了 一种声卡Gravis UltraSound(GUS)而写的,该程序被证明很优秀,于是作者就开始为一般的声卡写 驱动程序。 Alsa和OSS/Free 及OSS/Linux兼容,但是有自己的接 口,甚至比OSS优秀。
amd 自动安装NFS守护进程。
anacron 一个自动化运行任务守护进程。Red Hat Linux 随带四个自动化任务的工具cron、 anacron、at、和 batc。当你的Linux服务器并不是全天运行,这个anacron就可以帮你执行在"crontab"设定的时间内没有执行的工作。
apmd apmd(Advanced Power Management)是高级电源管理。传统的电源管理标准,对于笔记本电脑比较有用,可以了解系统的电池电量信息。并将相关信息通过syslogd 写入日志。也可以用来在电源不足时关机。
arptables_jf 为arptables网络的用户控制过滤的守护进程。
arpwatch 记录日志并构建一个在LAN接口上看到的以太网地址和IP地址对数据库 。
atalk AppleTalk网络守护进程。注意不要在后台运行该程序,该程序的数据结构必须在运行其他进程前先花一定时间初始化。
atd at和batch命令守护进程,用户用at命令调度的任务。Batch用于在系统负荷比较低时  运行批处理任务。
autofs 自动安装管理进程automount,与NFS相关,依赖于NIS服务器。
bluetooch 蓝牙服务器守护进程。
bootparamd 引导参数服务器,为LAN上的无盘工作站提供引导所需的相关信息。
chargen 使用tcp协议的chargen server,chargen(Character Generator  Protocol)是一种网络服务,主要功能是提供类似远程打字的功能。
chargen-udp 使用UDP协议的chargen server。
cpuspeed 监测系统空闲百分比,降低或加快CPU时钟速度和电压从而在系统空闲时将能源消耗降为最小,而在系统繁忙时最大化加快系统执行速度。
crond cron是Unix下的一个传统程序,该程序周期地运行用户 调度的任务。比起传统的Unix版本,Linux版本添加了不少属性,而且更安全,配置更简单。类似计划任务。
cups cups(Common UNIX Printing System)是通用UNIX打印守护进程,为Linux提供第三代打印功能。
cups-config-daemons cups打印系统切换守护进程。
cups-lpd cups行打印守护进程。
daytime 使用TCP 协议的Daytime守护进程,该协议为客户机实现从远程服务器获取日期 和时间的功能。预设端口13。
daytime-udp 使用UDP 协议的Daytime守护进程。
dc_client 使用SSL安全套接字的客户端守护进程。
dc_server 使用SSL安全套接字的代理服务器守护进程。
dhcpd 动态主机控制协议(Dynamic Host Control Protocol)的服务守护进程。
diskdump 服务器磁盘备份守护进程。
echo 服务器回显客户数据服务守护进程。
echo-udp 使用UDP协议的服务器回显客户数据服务守护进程。
eklogin 接受rlogin会话鉴证和用kerberos5加密的一种服务的守护进程。
gated 网关路由守护进程。它支持各种路由协议,包括RIP版本1和2、DCN HELLO协议、 OSPF版本2以及EGP版本2到4。
gpm gpm(General Purpose Mouse Daemon )守护进程为文本模式下的Linux程序如mc(Midnight Commander)提供了鼠标的支持。它也支持控制台下鼠标 的拷贝,粘贴操作以及弹出式菜单。
gssftp 使用kerberos 5认证的ftp守护进程
httpd Web服务器Apache守护进程,可用来提供HTML文件以 及CGI动态内容服务。
iiim 中文输入法服务器守护进程。
inetd 因特网操作守护程序。监控网络对各种它管理的服务的需求,并在必要的时候启动相应的服务程序。在Redhat 和Mandrake linux中被xinetd代替。Debian, Slackware, SuSE仍然使用。
innd Usenet新闻服务器守护进程。
iptables iptables防火墙守护进程。
irda 红外端口守护进程。
irqbalance 对多个系统处理器环境下的系统中断请求进行负载平衡的守护程序。如果你只安装了一个CPU,就不需要加载这个守护程序。
isdn isdn启动和中止服务守护进程。
keytable 该进程的功能是转载在/etc/sysconfig/keyboards里定义的键盘映射表,该表可以通过kbdconfig工具进行选择。您应该使该程序处于激活状态。
klogin 远程登陆守护进程。
krb5-telnet 使用kerberos 5认证的telnet守护进程。
kshell kshell守护进程。
kudzu 硬件自动检测程序,会自动检测硬件是否发生变动,并相应进行硬件的添加、删除工作。当系统启动时,kudzu会对当前的硬件进行检测,并且和存储在       /etc/sysconfig/hwconf中的硬件信息进行对照,如果某个硬件从系统中被添加或者删除时,那么kudzu就会察觉到,并且通知用户是否进行相关配置,然后修改etc/sysconfig/hwconf,使硬件资料与系统保持同步。如果/etc/sysconfig/hwconf这个文件不存在,那么kudzu将会从/etc/modprobe.conf,/etc/sysconfig/network-scripts/和 etc/X11/XF86Config中探测已经存在的硬件。如果你不打算增加新硬件,那么就可以关闭这个启动服务,以加快系统启动时间。
ldap ldap(Lightweight Directory Access Protocol)目录访问协议服务器守护进程。
lm_seroems 检测主板工作情况守护进程。
lpd lpd是老式打印守护程序,负责将lpr等程序提交给打印 作业。
mdmonitor RAID相关设备的守护程序。
messagebus D-BUS是一个库,为两个或两个以上的应用程序提供一对一的通讯。 dbus-daemon-1是一个应用程序,它使用这个库来实现messagebus守护程序。多个应用程序通过连接messagebus守护程序可以实 现与其他程序交换信息。
microcode_ctl 可编码以及发送新的微代码到内核以更新Intel IA32系列处理器守护进程。
mysqld 一个快速高效可靠的轻型SQL数据库引擎守护进程。
named DNS(BIND)服务器守护进程。
netdump 远程网络备份服务器守护进程。
netfs Network Filesystem Mounter,该进程安装和卸载NFS、SAMBA和NCP网络文件系统。
netplugd netplugd(network cable hotplug management daemon)守护程序,用于监控一个或多个网络接口的状态,当某些事件触发时运行一个外部脚本程序。
network 激活/关闭启动时的各个网络接口守护进程。
nfs 网络文件系统守护进程。
nfslock NFS是一个流行的通过TCP/IP网络共享文件的协议,此守护进程提供了NFS文件锁定功能。
ntpd Network time Protocol daemon(网络时间校正协议)。ntpd是用来使系统和一个精确的时间源保持时间同步的协议守护进程。
pcmcia 主要用于支持笔记本电脑接口守护进程。
portmap 该守护进程用来支持RPC连接,RPC被用于NFS以及NIS 等服务。
postgresql PostgreSQL 关系数据库引擎。
pppoe ADSL连接守护进程。
proftpd proftpd 是Unix下的一个配置灵活的ftp服务器的守护程序。
psacct 该守护进程包括几个工具用来监控进程活动的工具,包括ac,lastcomm, accton 和sa。
random 保存和恢复系统的高质量随机数生成器,这些随机数是系 统一些随机行为提供的。
rawdevices 在使用集群文件系统时用于加载raw设备的守护进程。
readahead、 readahead_early readahead和readahead_early是在Fedora core 2中最新推出的两个后台运行的守护程序。其作用是在启动系统期间,将启动系统所要用到的文件首先读取到内存中,然后在内存中进行执行,以加快系统的启动速 度。
rhnsd Red Hat 网络服务守护进程。通知官方的安全信息以及为系统打补丁。
routed 该守护程序支持RIP协议的自动IP路由表维护。RIP主要 使用在小型网络上,大一点的网络就需要复杂一点的协议。
rsh 远程主机上启动一个shell,并执行用户命令。
rstatd 一个为LAN上的其它机器收集和提供系统信息的守候进程。
rsync remote sync远程数据备份守护进程。 
ruserd 远程用户定位服务,这是一个基于RPC的服务,它提供关于当前记录到LAN上一个机器日志中的用户信息
rwalld 激活rpc.rwall服务进程,这是一项基于RPC的服务,允许用户给每个注册到LAN机器上的其他终端写消息 。
rwhod 允许远程用户获得运行rwho守护程序的机器上所有已登录用户的列表。
rwhod 激活rwhod服务进程,它支持LAN的rwho和ruptime服务。
saslauthd 使用SASL的认证守护进程。
sendmail 邮件服务器sendmail守护进程。
smartd Self Monitor Analysis and Reporting Technology System,监控你的硬盘是否出现故障。
smb Samba文件共享/打印服务守护进程。
snmpd 本地简单网络管理守护进程。
squid 代理服务器squid守护进程。
sshd OpenSSH服务器守护进程。Secure Shell Protocol可以实现安全地远程管理主机。
syslog 一个让系统引导时起动syslog和klogd系统日志守候进程的脚本。
time 该守护进程从远程主机获取时间和日期,采用TCP协议。
time-udp 该守护进程从远程主机获取时间和日期,采用UDP协议。
tux 在Linux内核中运行apache服务器的守护进程。
vncserver VNC (Virtual Network Computing,虚拟网络计算),它提供了一种在本地系统上显示远程计算机整个"桌面"的轻量型协议。
vsftpd vsftpd服务器的守护进程。
xfs X Window字型服务器守护进程,为本地和远程X服务器提供字型集。
xinetd 支持多种网络服务的核心守护进程。
ypbind 为NIS(网络信息系统)客户机激活ypbind服务进程 。
yppasswdd NIS口令服务器守护进程。
ypserv NIS主服务器守护进程。
yum RPM操作系统自动升级和软件包管理守护进程

2006年08月03日

一、memcached 简介

在很多场合,我们都会听到 memcached 这个名字,但很多同学只是听过,并没有用过或实际了解过,只知道它是一个很不错的东东。这里简单介绍一下,memcached 是高效、快速的分布式内存对象缓存系统,主要用于加速 WEB 动态应用程序。

二、memcached 安装

首先是下载 memcached 了,目前最新版本是 1.1.12,直接从官方网站即可下载到 memcached-1.1.12.tar.gz。除此之外,memcached 用到了 libevent,我下载的是 libevent-1.1a.tar.gz

接下来是分别将 libevent-1.1a.tar.gz 和 memcached-1.1.12.tar.gz 解开包、编译、安装:

# tar -xzf libevent-1.1a.tar.gz
# cd libevent-1.1a
# ./configure --prefix=/usr
# make
# make install
# cd ..
# tar -xzf memcached-1.1.12.tar.gz
# cd memcached-1.1.12
# ./configure --prefix=/usr
# make
# make install

安装完成之后,memcached 应该在 /usr/bin/memcached。

三、运行 memcached 守护程序

运行 memcached 守护程序很简单,只需一个命令行即可,不需要修改任何配置文件(也没有配置文件给你修改 :) ):

/usr/bin/memcached -d -m 128 -l 192.168.1.1 -p 11211 -u httpd

参数解释:

-d 以守护程序(daemon)方式运行 memcached;
-m 设置 memcached 可以使用的内存大小,单位为 M;
-l 设置监听的 IP 地址,如果是本机的话,通常可以不设置此参数;
-p 设置监听的端口,默认为 11211,所以也可以不设置此参数;
-u 指定用户,如果当前为 root 的话,需要使用此参数指定用户。

当然,还有其它参数可以用,man memcached 一下就可以看到了。

四、memcached 的工作原理

首先 memcached 是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,客户端可以由各种语言编写,目前已知的客户端 API 包括 Perl/PHP/Python/Ruby/Java/C#/C 等等。PHP 等客户端在与 memcached 服务建立连接之后,接下来的事情就是存取对象了,每个被存取的对象都有一个唯一的标识符 key,存取操作均通过这个 key 进行,保存到 memcached 中的对象实际上是放置内存中的,并不是保存在 cache 文件中的,这也是为什么 memcached 能够如此高效快速的原因。注意,这些对象并不是持久的,服务停止之后,里边的数据就会丢失。

三、PHP 如何作为 memcached 客户端

有两种方法可以使 PHP 作为 memcached 客户端,调用 memcached 的服务进行对象存取操作。

第一种,PHP 有一个叫做 memcache 的扩展,Linux 下编译时需要带上 –enable-memcache[=DIR] 选项,Window 下则在 php.ini 中去掉 php_memcache.dll 前边的注释符,使其可用。

除此之外,还有一种方法,可以避开扩展、重新编译所带来的麻烦,那就是直接使用 php-memcached-client

本文选用第二种方式,虽然效率会比扩展库稍差一些,但问题不大。

四、PHP memcached 应用示例

首先 下载 memcached-client.php,在下载了 memcached-client.php 之后,就可以通过这个文件中的类“memcached”对 memcached 服务进行操作了。其实代码调用非常简单,主要会用到的方法有 add()、get()、replace() 和 delete(),方法说明如下:

add ($key, $val, $exp = 0)
往 memcached 中写入对象,$key 是对象的唯一标识符,$val 是写入的对象数据,$exp 为过期时间,单位为秒,默认为不限时间;

get ($key)
从 memcached 中获取对象数据,通过对象的唯一标识符 $key 获取;

replace ($key, $value, $exp=0)
使用 $value 替换 memcached 中标识符为 $key 的对象内容,参数与 add() 方法一样,只有 $key 对象存在的情况下才会起作用;

delete ($key, $time = 0)
删除 memcached 中标识符为 $key 的对象,$time 为可选参数,表示删除之前需要等待多长时间。

下面是一段简单的测试代码,代码中对标识符为 ‘mykey’ 的对象数据进行存取操作:


<pre>
<?php
//  包含 memcached 类文件
require_once(‘memcached-client.php’);
//  选项设置
$options = array(
    ’servers’ => array(‘192.168.1.1:11211′), //memcached 服务的地址、端口,可用多个数组元素表示多个 memcached 服务
    ‘debug’ => true,  //是否打开 debug
    ‘compress_threshold’ => 10240,  //超过多少字节的数据时进行压缩
    ‘persistant’ => false  //是否使用持久连接
    );
//  创建 memcached 对象实例
$mc = new memcached($options);
//  设置此脚本使用的唯一标识符
$key ‘mykey’;
//  往 memcached 中写入对象
$mc->add($key’some random strings’);
$val $mc->get($key);
echo “n”.str_pad(‘$mc->add() ’60‘_’).“n”;
var_dump($val);
//  替换已写入的对象数据值
$mc->replace($key, array(’some’=>‘haha’‘array’=>‘xxx’));
$val $mc->get($key);
echo “n”.str_pad(‘$mc->replace() ’60‘_’).“n”;
var_dump($val);
//  删除 memcached 中的对象
$mc->delete($key);
$val $mc->get($key);
echo “n”.str_pad(‘$mc->delete() ’60‘_’).“n”;
var_dump($val);
?>
</pre>

是不是很简单,在实际应用中,通常会把数据库查询的结果集保存到 memcached 中,下次访问时直接从 memcached 中获取,而不再做数据库查询操作,这样可以在很大程度上减轻数据库的负担。通常会将 SQL 语句 md5() 之后的值作为唯一标识符 key。下边是一个利用 memcached 来缓存数据库查询结果集的示例(此代码片段紧接上边的示例代码):


<?php
$sql ‘SELECT * FROM users’;
$key md5($sql);   //memcached 对象标识符
if ( !($datas $mc->get($key)) ) {
    //  在 memcached 中未获取到缓存数据,则使用数据库查询获取记录集。
    echo “n”.str_pad(‘Read datas from MySQL.’60‘_’).“n”;
    $conn mysql_connect(‘localhost’‘test’‘test’);
    mysql_select_db(‘test’);
    $result mysql_query($sql);
    while ($row mysql_fetch_object($result))
        $datas[] = $row;
    //  将数据库中获取到的结果集数据保存到 memcached 中,以供下次访问时使用。
    $mc->add($key$datas);
} else {
    echo “n”.str_pad(‘Read datas from memcached.’60‘_’).“n”;
}
var_dump($datas);
?>

可以看出,使用 memcached 之后,可以减少数据库连接、查询操作,数据库负载下来了,脚本的运行速度也提高了。

之前我曾经写过一篇名为《PHP 实现多服务器共享 SESSION 数据》文章,文中的 SESSION 是使用数据库保存的,在并发访问量大的时候,服务器的负载会很大,经常会超出 MySQL 最大连接数,利用 memcached,我们可以很好地解决这个问题,工作原理如下:

  • 用户访问网页时,查看 memcached 中是否有当前用户的 SESSION 数据,使用 session_id() 作为唯一标识符;如果数据存在,则直接返回,如果不存在,再进行数据库连接,获取 SESSION 数据,并将此数据保存到 memcached 中,供下次使用;
  • 当前的 PHP 运行结束(或使用了 session_write_close())时,会调用 My_Sess::write() 方法,将数据写入数据库,这样的话,每次仍然会有数据库操作,对于这个方法,也需要进行优化。使用一个全局变量,记录用户进入页面时的 SESSION 数据,然后在 write() 方法内比较此数据与想要写入的 SESSION 数据是否相同,不同才进行数据库连接、写入数据库,同时将 memcached 中对应的对象删除,如果相同的话,则表示 SESSION 数据未改变,那么就可以不做任何操作,直接返回了;
  • 那么用户 SESSION 过期时间怎么解决呢?记得 memcached 的 add() 方法有个过期时间参数 $exp 吗?把这个参数值设置成小于 SESSION 最大存活时间即可。另外别忘了给那些一直在线的用户延续 SESSION 时长,这个可以在 write() 方法中解决,通过判断时间,符合条件则更新数据库数据。
2006年07月25日

windows server2003是目前最为成熟的网络服务器平台,安全性相对于windows 2000有大大的提高,但是2003默认的安全配置不一定适合我们的需要,所以,我们要根据实际情况来对win2003进行全面安全配置。说实话,安全配置是一项比较有难度的网络技术,权限配置的太严格,好多程序又运行不起,权限配置的太松,又很容易被黑客入侵,做为网络管理员,真的很头痛,因此,我结合这几年的网络安全管理经验,总结出以下一些方法来提高我们服务器的安全性。

  第一招:正确划分文件系统格式,选择稳定的操作系统安装盘

  为了提高安全性,服务器的文件系统格式一定要划分成NTFS(新技术文件系统)格式,它比FAT16、FAT32的安全性、空间利用率都大大的提高,我们可以通过它来配置文件的安全性,磁盘配额、EPS文件加密等。如果你已经分成FAT32的格式了,可以用CONVERT 盘符 /FS:NTFS  /V 来把FAT32转换成NTFS格式。正确安装windows 2003 server,在网安联盟http://cqhk.14023.com/Soft/yyrj/bigsoft/200504/502.ASP>有 windows 2003的企业可升级版,这个一个完全破解了的版本,可以直接网上升级,我们安装时尽量只安装我们必须要用的组件,安装完后打上最新的补丁,到网上升级到最新版本!保证操作系统本身无漏洞。

  第二招:正确设置磁盘的安全性,具体如下(虚拟机的安全设置,我们以ASP程序为例子)重点:

  1、系统盘权限设置

  C:分区部分:

  c:\

  administrators 全部(该文件夹,子文件夹及文件)

  CREATOR OWNER 全部(只有子文件来及文件)

  system 全部(该文件夹,子文件夹及文件)

  IIS_WPG 创建文件/写入数据(只有该文件夹)

  IIS_WPG(该文件夹,子文件夹及文件)

  遍历文件夹/运行文件

  列出文件夹/读取数据

  读取属性

  创建文件夹/附加数据

  读取权限

  

  c:\Documents and Settings

  administrators 全部(该文件夹,子文件夹及文件)

  Power Users (该文件夹,子文件夹及文件)

  读取和运行

  列出文件夹目录

  读取

  SYSTEM全部(该文件夹,子文件夹及文件)

  

  C:\Program Files

  administrators 全部(该文件夹,子文件夹及文件)

  CREATOR OWNER全部(只有子文件来及文件)

  IIS_WPG (该文件夹,子文件夹及文件)

  读取和运行

  列出文件夹目录

  读取

  Power Users(该文件夹,子文件夹及文件)

  修改权限

  SYSTEM全部(该文件夹,子文件夹及文件)

  TERMINAL SERVER USER (该文件夹,子文件夹及文件)

  修改权限

 

 

2、网站及虚拟机权限设置(比如网站在E盘)

  说明:我们假设网站全部在E盘wwwsite目录下,并且为每一个虚拟机创建了一个guest用户,用户名为vhost1…vhostn并且创建了一个webuser组,把所有的vhost用户全部加入这个webuser组里面方便管理

  E:\

  Administrators全部(该文件夹,子文件夹及文件)

  E:\wwwsite

  

  Administrators全部(该文件夹,子文件夹及文件)

  system全部(该文件夹,子文件夹及文件)

  service全部(该文件夹,子文件夹及文件)

  

  E:\wwwsite\vhost1

  Administrators全部(该文件夹,子文件夹及文件)

  system全部(该文件夹,子文件夹及文件)

  vhost1全部(该文件夹,子文件夹及文件)

  

  3、数据备份盘

  数据备份盘最好只指定一个特定的用户对它有完全操作的权限

  比如F盘为数据备份盘,我们只指定一个管理员对它有完全操作的权限

  

  4、其它地方的权限设置

  请找到c盘的这些文件,把安全性设置只有特定的管理员有完全操作权限

  下列这些文件只允许administrators访问

  net.exe

  net1.exet

  cmd.exe

  tftp.exe

  netstat.exe

  regedit.exe

  at.exe

  attrib.exe

  cacls.exe

  format.com

  5.删除c:\inetpub目录,删除iis不必要的映射,建立陷阱帐号,更改描述

  第三招:禁用不必要的服务,提高安全性和系统效率

  Computer Browser 维护网络上计算机的最新列表以及提供这个列表

    Task scheduler 允许程序在指定时间运行

    Routing and Remote Access 在局域网以及广域网环境中为企业提供路由服务

    Removable storage 管理可移动媒体、驱动程序和库

    Remote Registry Service 允许远程注册表操作

    Print Spooler 将文件加载到内存中以便以后打印。要用打印机的朋友不能禁用这项

    IPSEC Policy Agent 管理IP安全策略以及启动ISAKMP/OakleyIKE)和IP安全驱动程序

    Distributed Link Tracking Client 当文件在网络域的NTFS卷中移动时发送通知

    Com+ Event System 提供事件的自动发布到订阅COM组件

  Alerter 通知选定的用户和计算机管理警报

  Error Reporting Service 收集、存储和向 Microsoft 报告异常应用程序

   Messenger 传输客户端和服务器之间的 NET SEND 和 警报器服务消息

  Telnet 允许远程用户登录到此计算机并运行程序

 

 

第四招:修改注册表,让系统更强壮

  1、隐藏重要文件/目录可以修改注册表实现完全隐藏:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows\ Current-Version\Explorer\Advanced\Folder\Hi-dden\SHOWALL”,鼠标右击 “CheckedValue”,选择修改,把数值由1改为0

    2、启动系统自带的Internet连接_blank">防火墙,在设置服务选项中勾选Web服务器。

    3、防止SYN洪水攻击

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

  新建Dword值,名为SynAttackProtect,值为2

  EnablePMTUDiscovery REG_Dword 0

  NoNameReleaseOnDemand REG_Dword 1

  EnableDeadGWDetect REG_Dword 0

  KeepAliveTime REG_Dword 300,000

  PerformRouterDiscovery REG_Dword 0

  EnableICMPRedirects REG_Dword 0

    4. 禁止响应ICMP路由通告报文

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\interface

    新建Dword值,名为PerformRouterDiscovery 值为0

    5. 防止ICMP重定向报文的攻击

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

    将EnableICMPRedirects 值设为0

    6. 不支持IGMP协议

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

  新建Dword值,名为IGMPLevel 值为0

  7.修改终端服务端口

  运行regedit,找到[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ Wds \ rdpwd \ Tds \ tcp],看到右边的PortNumber了吗?在十进制状态下改成你想要的端口号吧,比如7126之类的,只要不与其它冲突即可。

    2、第二处HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-Tcp,方法同上,记得改的端口号和上面改的一样就行了。

  8、禁止IPC空连接:

   cracker可以利用net use命令建立空连接,进而入侵,还有net view,nbtstat这些都是基于空连接的,禁止空连接就好了。打开注册表,找到Local_Machine\System\ CurrentControlSet\Control\LSA-RestrictAnonymous 把这个值改成”1”即可。

  9、更改TTL值

    cracker可以根据ping回的TTL值来大致判断你的操作系统,如:

  TTL=107(WINNT);

  TTL=108(win2000);

  TTL=127或128(win9x);

  TTL=240或241(linux);

  TTL=252(solaris);

  TTL=240(Irix);

  实际上你可以自己更改的:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ Tcpip\Parameters:DefaultTTL REG_Dword 0-0xff(0-255 十进制,默认值128)改成一个莫名其妙的数字如258,起码让那些小菜鸟晕上半天,就此放弃入侵你也不一定哦

  10. 删除默认共享

   有人问过我一开机就共享所有盘,改回来以后,重启又变成了共享是怎么回事,这是2K为管理而设置的默认共享,必须通过修改注册表的方式取消它: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters: AutoShareServer类型是REG_Dword把值改为0即可

  11. 禁止建立空连接

  默认情况下,任何用户通过通过空连接连上服务器,进而枚举出帐号,猜测密码。我们可以通过修改注册表来禁止建立空连接:

  Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous 的值改成”1”即可。

 

第四招:修改注册表,让系统更强壮

1、隐藏重要文件/目录可以修改注册表实现完全隐藏:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows\ Current-Version\Explorer\Advanced\Folder\Hi-dden\SHOWALL”,鼠标右击 “CheckedValue”,选择修改,把数值由1改为0

2、启动系统自带的Internet连接_blank">防火墙,在设置服务选项中勾选Web服务器。

3、防止SYN洪水攻击

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

新建Dword值,名为SynAttackProtect,值为2

EnablePMTUDiscovery REG_Dword 0

NoNameReleaseOnDemand REG_Dword 1

EnableDeadGWDetect REG_Dword 0

KeepAliveTime REG_Dword 300,000

PerformRouterDiscovery REG_Dword 0

EnableICMPRedirects REG_Dword 0

4. 禁止响应ICMP路由通告报文

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\interface

新建Dword值,名为PerformRouterDiscovery 值为0

5. 防止ICMP重定向报文的攻击

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

将EnableICMPRedirects 值设为0

6. 不支持IGMP协议

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

新建Dword值,名为IGMPLevel 值为0

7.修改终端服务端口

运行regedit,找到[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ Wds \ rdpwd \ Tds \ tcp],看到右边的PortNumber了吗?在十进制状态下改成你想要的端口号吧,比如7126之类的,只要不与其它冲突即可。

2、第二处HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-Tcp,方法同上,记得改的端口号和上面改的一样就行了。

8、禁止IPC空连接:

 cracker可以利用net use命令建立空连接,进而入侵,还有net view,nbtstat这些都是基于空连接的,禁止空连接就好了。打开注册表,找到Local_Machine\System\ CurrentControlSet\Control\LSA-RestrictAnonymous 把这个值改成”1”即可。

9、更改TTL值

  cracker可以根据ping回的TTL值来大致判断你的操作系统,如:

TTL=107(WINNT);

TTL=108(win2000);

TTL=127或128(win9x);

TTL=240或241(linux);

TTL=252(solaris);

TTL=240(Irix);

实际上你可以自己更改的:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ Tcpip\Parameters:DefaultTTL REG_Dword 0-0xff(0-255 十进制,默认值128)改成一个莫名其妙的数字如258,起码让那些小菜鸟晕上半天,就此放弃入侵你也不一定哦

10. 删除默认共享

 有人问过我一开机就共享所有盘,改回来以后,重启又变成了共享是怎么回事,这是2K为管理而设置的默认共享,必须通过修改注册表的方式取消它: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters: AutoShareServer类型是REG_Dword把值改为0即可

11. 禁止建立空连接

默认情况下,任何用户通过通过空连接连上服务器,进而枚举出帐号,猜测密码。我们可以通过修改注册表来禁止建立空连接:

Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous 的值改成”1”即可。

2006年07月14日

代理提供两个方面的服务:一是让不能直接访问Internet的用户访问Internet,因为允许一台权限较大的计算机直接连接网络更安全也更易于管理;二是让那些已经能够访问Internet的用户可以更快或更广泛地访问,因为代理服务器可以将访问较为频繁的网页缓存到本地,当有人再次访问同一页面时,代理可以直接发送本地页面而无需浪费网络带宽。当然也可以二者兼而有之。

   我们以应用最广泛的Squid为例,讨论Linux下的代理服务器。这里所指的仅仅是服务器端应用,不包括客户端配置。Squid的优点是功能强大、配置简单、文档丰富;缺点是目前支持的协议尚不够广泛,对超大型应用略感吃力,不过这些不足都在慢慢完善之中。对于初学者和普通的应用而言,Squid仍是最佳选择。

  在此,我们要配置一个只对内部网络提供代理服务的Proxy Server。它将用户分为高级用户和普通用户两种,对高级用户采用网卡物理地址识别的方法,普通用户则需要输入用户名和口令才能正常使用。高级用户没有访问时间和文件类型的限制,而普通用户只在上班时可以访问以及一些其它的限制。

   安装

   可以从Squid站点www.squid-cache.org获取该软件的源代码安装包,包括gz和bz2两种压缩方式。也可以使用Linux的发行版,如Red

Hat提供的RPM包。

   RPM方式安装很简单,命令如下:

 $ rpm -ivh Squid-2.x.STALBx.i386.rpm

   不过笔者认为,即便是系统中已经默认安装了Squid,也应当先删掉然后安装最新的源代码包。因为开源软件会不断修正问题、提供更新的功能,使用最新版本可以保证最高的性能及安全,而且源代码方式可以完全定制系统。不过STABLE稳定版、DEVEL版通常是提供给开发人员测试程序的,假定下载了最新的稳定版squid-2.5.STABLE2.tar.gz,用以下命令解开压缩包:

 $ tar xvfz squid-2.5.STABLE.tar.gz

   用bz2方式压缩的包可能体积更小,相应的命令是:

 $ tar xvfj squid-2.5.STABLE.tar.bz2

  然后,进入相应目录对源代码进行配置和编译,命令如下:

$ cd squid-2.5.STABLE2

   配置命令configure有很多选项,如果不清楚可先用“-help”查看。通常情况下,用到的选项有以下几个:

–prefix=/web/squid #指定Squid的安装位置,如果只指定这一选项,那么该目录下会有bin、sbin、man、conf等目录,而主要的配置文件此时在conf子目录中。为便于管理,最好用参数–sysconfdir=/etc把这个文件位置配置为/etc。
–enable-storeio=ufs,null #使用的文件系统通常是默认的ufs,不过如果想要做一个不缓存任何文件的代理服务器,就需要加上null文件系统。
–enable-arp-acl #这样可以在规则设置中直接通过客户端的MAC地址进行管理,防止客户使用IP欺骗。
–enable-err-languages="Simplify_Chinese" –enable-default-err-languages="Simplify_Chinese" #上面两个选项告诉Squid编入并使用简体中文错误信息。
–enable-linux-netfilter #允许使用Linux的透明代理功能。
–enable-underscore #允许解析的URL中出现下划线,因为默认情况下Squid会认为带下划线的URL是非法的,并拒绝访问该地址。

   整个配置编译过程如下:

./configure –prefix=/var/squid –sysconfdir=/etc –enable-arp-acl –enable-linux-netfilter –enable-pthreads –enable-err-language="Simplify_Chinese" –enable-storeio=ufs,null –enable-default-err-language="Simplify_Chinese" –enable-auth="basic" –enable-baisc-auth-helpers="NCSA" –enable-underscore

   其中一些选项有特殊作用,将在下面介绍它们。

   最后执行make和make install两条命令,将源代码编译为可执行文件,并拷贝到指定位置。

   基本配置

  安装完成后,接下来要对Squid的运行进行配置(不是前面安装时的配置)。所有项目都在squid.conf中完成。Squid自带的squid.conf

包括非常详尽的说明,相当于一篇用户手册,对配置有任何疑问都可以参照解决。

   在这个例子中,代理服务器同时也是网关,内部网络接口eth0的IP地址为192.168.0.1,外部网络接口eth1的IP地址为202.103.x.x。

下面是一个基本的代理所需要配置选项: http_port 192.168.0.1:3128

   默认端口是3128,当然也可以是任何其它端口,只要不与其它服务发生冲突即可。为了安全起见,在前面加上IP地址,Squid就不会监听外部的网络接口。

   下面的配置选项是服务器管理者的电子邮件,当错误发生时,该地址会显示在错误页面上,便于用户联系:

 cache_mgr netsnake@963.net

   以下这些参数告诉Squid缓存的文件系统、位置和缓存策略:
 cache_dir ufs /var/squid cache_mem 32MB cache_swap_low 90 cache_swap_high 95

   在这里,Squid会将/var/squid目录作为保存缓存数据的目录,每次处理的缓存大小是32兆字节,当缓存空间使用达到95%时,新的内容将取代旧的而不直接添加到目录中,直到空间又下降到90%才停止这一活动。如果不想Squid缓存任何文件,如某些存储空间有限的专有系统,可以使用null文件系统(这样不需要那些缓存策略): cache_dir null /tmp

   下面的几个关于缓存的策略配置中,较主要的是第一行,即用户的访问记录,可以通过分析它来了解所有用户访问的详尽地址:

cache_access_log /var/squid/access.log cache_log /var/squid/cache.log cache_store_log /var/squid/store.log

   下面这行配置是在较新版本中出现的参数,告诉Squid在错误页面中显示的服务器名称:
 visible_hostname No1.proxy

   以下配置告诉Squid如何处理用户,对每个请求的IP地址作为单独地址处理: client_mask 255.255.255.255

   如果是普通代理服务器,以上的配置已经足够。但是很多Squid都被用来做透明代理。所谓透明代理,就是客户端不知道有代理服务器的存在,当然也不需要进行任何与代理有关的设置,从而大大方便了系统管理员。相关的选项有以下几个:
 httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_user_host_header on

  在Linux上,可以用iptables/ipchains直接将对Web端口80的请求直接转发到Squid端口3128,由Squid接手,而用户浏览器仍然认为它访问的是对方的80端口。例如以下这条命令:
 iptables -t nat -A PREROUTING -s 192.168.0.200/32 -p tcp –dport 80 -j REDIRECT 3128
   就是将192.168.0.200的所有针对80端口的访问重定向到3128端口。

   所有设置完成后,关键且重要的任务是访问控制。Squid支持的管理方式很多,使用起来也非常简单(这也是有人宁愿使用不做任何缓存的Squid,也不愿意单独使用iptables的原因)。Squid可以通过IP地址、主机名、MAC地址、用户/密码认证等识别用户,也可以通过域名、域后缀、文件类型、IP地址、端口、URL匹配等控制用户的访问,还可以使用时间区间对用户进行管理,所以访问控制是Squid配置中的重点。Squid用ACL(Access Control List,访问控制列表)对访问类型进行划分,用http_access deny 或allow进行控制。根据需求首先定义两组用户advance和normal,还有代表所有未指明的用户组all及不允许上网的baduser,配置代码如下:

  可以看出,ACL的基本格式如下: acl 列表名称 控制方式 控制目标

   比如acl all src 0.0.0.0/0,其名称是all,控制方式是src源IP地址,控制目标是0.0.0.0/0的IP地址,即所有未定义的用户。出于安全考虑,总是在最后禁止这个列表。

   下面这个列表代表高级用户,包括IP地址从192.168.0.2到192.168.0.10的所有计算机:
 acl advance 192.168.0.2-192.168.0.20/32

   下面这个baduser列表只包含一台计算机,其IP地址是192.168.0.100: acl baduser 192.168.0.100/32

   ACL写完后,接下来要对它们分别进行管理,代码如下: http_access deny baduser http_access allow advance http_access allow normal

   上面几行代码告诉Squid不允许baduser组访问Internet,但advance、normal组允许(此时还没有指定详细的权限)。由于Squid是按照顺序读取规则,会首先禁止baduser,然后允许normal。如果将两条规则顺序颠倒,由于baduser在normal范围中,Squid先允许了所有的normal,那么再禁止baduser就不会起作用。

   特别要注意的是,Squid将使用allow-deny-allow-deny……这样的顺序套用规则。例如,当一个用户访问代理服务器时,Squid会顺序测试Squid中定义的所有规则列表,当所有规则都不匹配时,Squid会使用与最后一条相反的规则。就像上面这个例子,假设有一个用户的IP地址是192.168.0.201,他试图通过这台代理服务器访问Internet,会发生什么情况呢?我们会发现,他能够正常访问,因为Squid找遍所有访问列表也没有和192.168.0.201有关的定义,便开始应用规则,而最后一条是deny,那么Squid默认的下一条处理规则是allow,所以192.168.0.201反而能够访问Internet了,这显然不是我们希望的。所以在所有squid.conf中,最后一条规则永远是http_access deny all,而all就是前面定义的“src 0.0.0.0”。

  高级控制

  前面说过,Squid的控制功能非常强大,只要理解Squid的行为方式,基本上就能够满足所有的控制要求。下面就一步一步来了解Squid是如何进行控制管理的。

  通过IP地址来识别用户很不可靠,比IP地址更好的是网卡的MAC物理地址。要在Squid中使用MAC地址识别,必须在编译时加上“–enable-arp-acl”选项,然后可以通过以下的语句来识别用户:

 
acl advance arp 00:01:02:1f:2c:3e 00:01:02:3c:1a:8b …


  它直接使用用户的MAC地址,而MAC地址一般是不易修改的,即使有普通用户将自己的IP地址改为高级用户也无法通过,所以这种方式比IP地址可靠得多。

  假如不想让用户访问某个网站应该怎么做呢?可以分为两种情况:一种是不允许访问某个站点的某个主机,比如sinapage的主机是sinapage4.sina.com.cn,而其它的新浪资源却是允许访问的,那么ACL可以这样写:

acl ?sinapage ?dstdomain sinapage4.sina.com.cn
… …
http_access deny sinapage
… …


  由此可以看到,除了sinapage4,其它如www.sina.com.cn、news.sina.com.cn都可以正常访问。

  另一种情况是整个网站都不许访问,那么只需要写出这个网站共有的域名即可,配置如下:

acl qq dstdomain .tencent.com.cn


  注意tencent前面的“.”,正是它指出以此域名结尾的所有主机都不可访问,否则就只有tencent.com.cn这一台主机不能访问。

  如果想禁止对某个IP地址的访问,如202.108.0.182,可以用dst来控制,代码如下:

acl badaddr dst 202.108.0.182


  当然,这个dst也可以是域名,由Squid查询DNS服务器将其转换为IP。

  还有一种比较广泛的控制是文件类型。如果不希望普通用户通过代理服务器下载MP3、AVI等文件,完全可以对他们进行限制,代码如下:

acl mmxfile urlpath_regex \.mp3$ \.avi$ \.exe$
http_access deny mmxfile


  看到regex,很多读者应该心领神会,因为这条语句使用了标准的规则表达式(又叫正则表达式)。它将匹配所有以.mp3、.avi等结尾的URL请求,还可以用-i参数忽略大小写,例如以下代码:

acl mmxfile urlpath_regex -i \.mp3$


  这样,无论是.mp3还是.MP3都会被拒绝。当然,-i参数适用于任何可能需要区分大小写的地方,如前面的域名控制。

  如果想让普通用户只在上班时间可以上网,而且是每周的工作日,用Squid应当如何处理呢?看看下面的ACL定义:

acl worktime time MTWHF 8:30-12:00 14:00-18:00
http_access deny !worktime


  首先定义允许上网的时间是每周工作日(星期一至星期五)的上午和下午的固定时段,然后用http_access 定义所有不在这个时间段内的请求都是不允许的。

  或者为了保证高级用户的带宽,希望每个用户的并发连接不能太多,以免影响他人,也可以通过Squid控制,代码如下:

acl conncount maxconn 3
http_access deny conncount normal
http_access allow normal


  这样,普通用户在某个固定时刻只能同时发起三个连接,从第四个开始,连接将被拒绝。

  总之,Squid的ACL配置非常灵活、强大,更多的控制方式可以参考squid.conf.default。

  认证

  用户/密码认证为Squid管理提供了更多便利,最常用的认证方式是NCSA。从Squid 2.5版本开始,NCSA认证包含在了basic中,而非以前单独的认证模块。下面来看看实现认证的具体操作。

  首先在编译时配置选项应包括以下配置:

–enable-auth="basic" –enable-basic-auth-helpers="NCSA"


  “make install”以后,需要将“helpers/basic_auth/NCSA/ncsa_auth”拷贝到用户可执行目录中,如/usr/bin(如果在该目录中找不到这个执行文件,在编译时请使用make all而不是make,或者直接在该目录中执行make),然后需要借助Apache的密码管理程序htpasswd来生成用户名/密码对应的文件,就像下面这行代码:

 
htpasswd -c /var/squid/etc/password guest


  在输入两遍guest用户的密码后,一个guest用户就生成了。如果以后需要添加用户,把上面的命令去掉-c参数再运行即可。

  Squid 2.5在认证处理上有了较大的改变,这里就只讨论2.5版本的处理方法,2.4及以下版本请参考squid.conf.default。在2.5版的squid.conf中,包括以下几个相关选项:

#该选项指出了认证方式(basic)、需要的程序(ncsa_auth)和对应的密码文件(password)
auth_param basic program /usr/bin/ncsa_auth /var/squid/etc/password
# 指定认证程序的进程数
auth_param basic children 5
# 浏览器显示输入用户/密码对话框时的领域内容
auth_param basic realm My Proxy Caching Domain
# 基本的认证有效时间
auth_param basic credentialsttl 2 hours
# 普通用户需要通过认证才能访问Internet
acl normal proxy_auth REQUIRED
http_access allow normal


  通过以上的配置即可完成认证工作。有的读者可能要问:认证只针对普通用户,而高级用户是直接上网的,该怎么处理呢?其实,这两种用户是可以共存的。如前所述,Squid是顺序处理http_access的,所以在http_access处理过程中,如果先处理normal用户,那么当前用户无论是否属于高级用户,都会被要求进行认证;相反如果先处理高级用户,剩下的就只有需要认证的普通用户了。例如以下配置代码:


http_access allow normal (需要认证)
http_access allow advance (不需要认证)


  不管是否为noauth用户,都要求进行用户名/密码验证。正确的方法是将二者位置交换,代码如下:

 

http_access allow advance
http_access allow normal


  这时,高级用户不会受到任何影响。

  总结

  下面把整个squid.conf总结一下:

# 服务器配置
http_port 192.168.0.1:3128
cache_mgr netsnake@963.net
cache_dir null /tmp
cache_access_log /var/squid/access.log
cache_log /var/squid/cache.log
cache_store_log /var/squid/store.log
visible_hostname No1.proxy
client_mask 255.255.255.255
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_user_host_header on

# 用户分类
acl advance arp 00:01:02:1f:2c:3e 00:01:02:3c:1a:8b …
acl normal proxy_auth REQUIED
acl all src 0.0.0.0

# 行为分类
acl mmxfile urlpath_regex \.mp3$ \.avi$ \.exe$
acl conncount maxconn 3
acl worktime time MTWHF 8:30-12:00 14:00-18:00
acl sinapage dstdomain sinapage4.sina.com.cn
acl qq dstdomain .tencent.com.cn

# 处理
http_access allow advance
http_access deny conncount normal
http_access deny !worktime
http_access deny mmxfile
http_access deny sinapage
http_access deny qq
http_access allow normal


  配置后的状况是,advance组可以不受任何限制地访问Internet,而normal组则只能在工作时间上网,而且不能下载多媒体文件,不能访问某些特定的站点,而且发送请求不能超过3个。

  通过本文的介绍,它可以了解Squid的基本能力。当然,它的能力远不止此,可以建立强大的代理服务器阵列,可以帮助本地的Web服务器提高性能,可以提高本地网络的安全性等。要想发挥它的功效,还需要进一步控制。

 

 acl advance 192.168.0.2-192.168.0.10/32 acl normal src 192.168.0.11-192.168.0.200/32 acl baduser src 192.168.0.100/32 acl

baddst dst www.somebadsite.com acl all src 0.0.0.0/0 http_access deny baduser http_access allow advance http_access allow normal