一: Linux 网络服务配置基础
要建立一个安全Linux服务器就首先要了解Linux环境下和网络服务相关的配置文件的含义及如何进行安全的配 置。在Linux系统中,TCP/IP网络是通过若干个文本文件进行配置的,也许你需要编辑这些文件来完成联网工作,但是这些配置文件大都可以通过配置命 令linuxconf(其中网络部分的配置可以通过netconf命令来实现)命令来实现。下面介绍基本的 TCP/IP网络配置文件。
*
/etc/conf.modules 文件
该配置文件定义了各种需要在启动时加载的模块的参数信息。这里主要着重讨论关于网卡的配置。在使用Linux做网关的情况下,Linux服务器至少需要配置两块网卡。为了减少启动时可能出现的问题,Linux内核不会自动检测多个网卡。
对于没有将网卡的驱动编译到内核而是作为模块动态载入的系统若需要安装多块网卡,应该在“conf.modules”文件中进行相应的配置。
若设备驱动被编译为模块(内核的模块):对于PCI设备,模块将自动检测到所有已经安装到系统上的设备;对于ISA卡,则需要向模块提供IO地址,以使模块知道在何处寻找该卡,这些信息在“/etc/conf.modules”中提供。
例如,我们有两块ISA总线的
这是说明
对于PCI卡,仅仅需要alias命令来使ethN和适当的驱动模块名关联,PCI卡的IO地址将会被自动的检测到。对于PCI卡,编辑“conf.modules”文件如下:
若驱动已经被编译进了内核:系统启动时的PCI检测程序将会自动找到所有相关的网卡。ISA卡一般也能够被自动检测到,但是在某些情况下,ISA卡仍然需要做下面的配置工作:
在“/etc/lilo.conf”中增加配置信息,其方法是通过LILO程序将启动参数信息传递给内核。对于ISA卡,编辑“lilo.conf”文件,增加如下内容:
注:先不要在“lilo.conf”中加入启动参数,测试一下你的ISA卡,若失败再使用启动参数。
如果用传递启动参数的方法,eth0和eth1将按照启动时被发现的顺序来设置。
* /etc/HOSTNAME
文件
该文件包含了系统的主机名称,包括完全的域名,如:deep.openarch.com。
*/etc/sysconfig/network-scripts/ifcfg-ethN 文件
在RedHat中,系统网络设备的配置文件保存在“/etc/sysconfig/network-scripts”目录下,ifcfg-eth0包含第一块网卡的配置信息,ifcfg-eth1包含第二块网卡的配置信息。
下面是“/etc/sysconfig/network-scripts/ifcfg-eth
若希望手工修改网络地址或在新的接口上增加新的网络界面,可以通过修改对应的文件(ifcfg-ethN)或创建新的文件来实现。
DEVICE=name
name表示物理设备的名字
IPADDR=addr
addr表示赋给该卡的IP地址
NETMASK=mask
mask表示网络掩码
NETWORK=addr
addr表示网络地址
BROADCAST=addr
addr表示广播地址
ONBOOT=yes/no
启动时是否激活该卡
none:
无须启动协议
bootp:
使用bootp协议
dhcp:
使用dhcp协议
USERCTL=yes/no
是否允许非root用户控制该设备
*/etc/resolv.conf 文件
该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件,示例如下:
表示当提供了一个不包括完全域名的主机名时,在该主机名后添加domainname.com的后缀;“nameserver”表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的。
*/etc/host.conf
文件
该文件指定如何解析主机名。Linux通过解析器库来获得主机名对应的IP地址。下面是一个“/etc/host.conf”的示例:
指定主机名查询顺序,这里规定先使用DNS来解析域名,然后再查询“/etc/hosts”文件(也可以相反)。
“multi on”指定是否“/etc/hosts”文件中指定的主机可以有多个地址,拥有多个IP地址的主机一般称为多穴主机。
“nospoof on”指不允许对该服务器进行IP地址欺骗。IP欺骗是一种攻击系统安全的手段,通过把IP地址伪装成别的计算机,来取得其它计算机的信任。
*/etc/sysconfig/network 文件
该文件用来指定服务器上的网络配置信息,下面是一个示例:
NETWORK=yes
RORWARD_IPV4=yes
HOSTNAME=deep.openarch.com
GAREWAY=
GATEWAYDEV=
NETWORK=yes/no
网络是否被配置;
FORWARD_IPV4=yes/no
是否开启IP转发功能
HOSTNAME=hostname hostname
表示服务器的主机名
GAREWAY=gw-ip
gw-ip表示网络网关的IP地址
GAREWAYDEV=gw-dev
gw-dw表示网关的设备名,如:etho等
注意:为了和老的软件相兼容,“/etc/HOSTNAME”文件应该用和HOSTNAME=hostname相同的主机名。
*/etc/hosts 文件
当机器启动时,在可以查询DNS以前,机器需要查询一些主机名到IP地址的匹配。这些匹配信息存放在/etc/hosts文件中。在没有域名服务器情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址。
下面是一个“/etc/hosts”文件的示例:
最左边一列是主机IP信息,中间一列是主机名。任何后面的列都是该主机的别名。一旦配置完机器的网络配置文件,应该重新启动网络以使修改生效。使用下面的命令来重新启动网络:
*
/etc/inetd.conf 文件
众所周知,作为服务器来说,服务端口开放越多,系统安全稳定性越难以保证。所以提供特定服务的服务器应该尽可能开放提供服务必不可少的端口,而将与服务器
服务无关的服务关闭,比如:一台作为www和ftp服务器的机器,应该只开放80和25端口,而将其他无关的服务如:finger
auth等服务关掉,以减少系统漏洞。
而inetd,也叫作“超级服务器”,就是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。inetd.conf则是inetd的配置文件。inetd.conf文件告诉inetd监听哪些网络端口,为每个端口启动哪个服务。
在任何的网络环境中使用Linux系统,第一件要做的事就是了解一下服务器到底要提供哪些服务。不需要的那些服务应该被禁止掉,最好卸载掉,这样黑客就少了一些攻击系统的机会。
查看“/etc/inetd.conf”文件,了解一下inetd提供哪些服务。用加上注释的方法(在一行的开头加上#号),禁止任何不需要的服务,再给inetd进程发一个SIGHUP信号。
第一步:把文件的许可权限改成600。
第二步:确信文件的所有者是root。
第三步:编辑“inetd.conf”文件(vi /etc/inetd.conf),禁止所有不需要的服务,如:ftp、 telnet、 shell、
login、 exec、talk、ntalk、 imap、 pop-2、pop-3、finger、auth,等等。
如果你觉得某些服务有用,可以不禁止这些服务。但是,把这些服务禁止掉,系统受攻击的可能性就会小很多。改变后的“inetd.conf”文件的内容如下面所示:
注意:改变了“inetd.conf”文件之后,别忘了给inetd进程发一个SIGHUP信号(killall
–HUP inetd)。
第四步:
为了保证“inetd.conf”文件的安全,可以用chattr命令把它设成不可改变。把文件设成不可改变的只要用下面的命令:
这样可以避免“inetd.conf”文件的任何改变(意外或是别的原因)。一个有“i”属性的文件是不能被改动的:不能删除或重命名,不能创建这个文件 的链接,不能往这个文件里写数据。只有系统管理员才能设置和清除这个属性。如果要改变inetd.conf文件,你必须先清除这个不允许改变的标志:
但是对于诸如sendmail,named,www等服务,由于它们不象finger,telnet等服务,在请求到来时由inet守护进程启动相应的进程提供服务,而是在系统启动时,作为守护进程运行的。
而对于redhat linux,提供了一个linuxconfig命令,可以通过它在图形界面下交互式地设置是否在启动时运行相关服务。也可以通过命令来设置是否启动时启动
某个服务,如:[root@deep]# chkconfig –level 35 named off。
二:各种服务的配置
A: DNS服务器的设置
1. 编辑/etc/named.conf
// generated by named-bootconf.pl
options
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
}
//
// a caching only nameserver config
//
controls
inet 127.0.0.1 allow { localhost; }
};
zone "." IN
type hint;
file "named.ca";
}
zone
"mydomain.com" IN
type master;
file "named.mydomain.com";
allow-update { none; }
};
zone
"1.168.192.in-addr.arpa" IN
type master;
file "named.mydomain.com.rev";
allow-update { none; }
};
zone
"localhost" IN
type master;
file "localhost.zone";
allow-update { none; }
};
zone
"0.0.127.in-addr.arpa" IN
type master;
file "named.local";
allow-update { none; }
};
include
"/etc/rndc.key";
2. 编辑正向解析文件/var/named/named.mydomain.com
$TTL 86400
@ IN SOA my.mydomain.com. root.my.mydomain.com. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS my.mydomain.com.
IN MX 10 my.mydomain.com.
my IN A
192.168.1.50
www IN CNAME my.mydomain.com.
ftp IN CNAME my.mydomain.com.
smtp IN CNAME my.mydomain.com.
pop
3. 编辑反向解析文件/var/named/named.mydomain.com.rev
$TTL 86400
@ IN SOA my.mydomain.com. root.ns.mydomain.com. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS my.mydomain.com.
4. 编辑/var/named/named.local文件
$TTL 86400
@ IN SOA my.mydomain.com. root.my.mydomain.com. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS my.mydomain.com.
5. 编辑/etc/resolv.conf
# MADE-BY-RP-PPPOE
domain mydomain.com
nameserver 192.168.1.50
search localdomain
B:
web服务器的设置
只需对/etc/httpd/conf/httpd.conf进行部分修改即可
ServerTokens OS
ServerRoot
"/etc/httpd" 注:指定守护进程httpd的运行目录
PidFile
run/httpd.pid
Timeout
300 注:定义客户程序和服务器连接的超时间隔
KeepAlive
Off 注:定义是否支持一次连接,多次传输功能
MaxKeepAliveRequests
100 注:一次连接可以进行的HTTP请求的最大请求次数
KeepAliveTimeout
15 注:一次连接中的多次请求传输之间的时间
MaxRequestsPerChild
0 注:每个子进程处理服务请求次数 0为无限次
Listen
80
User
apache 注:指定用户和组
Group apache
ServerAdmin
nangshou@mydomain.com此邮件地址受spam bots保护,需要使用 Javascript 功能来查阅。 注:服务器管理员的E_MAIL地址
#ServerName
192.168.1.50:80 注:服务器域名,通常没有dns才需要
UseCanonicalName
Off
DocumentRoot
"/var/www/html" 注:指定网页文件存放位置
<IfModule
mod_userdir.c>
UserDir
user_www 注:用于个人主页,一般为/home/user/网页文件目录
</IfModule>
DirectoryIndex
index.html index.htm index.php 注:指定网站首页名
AccessFileName
.htaccess
Alias
/manual "/var/www/manual"
<Directory
"/var/www/manual">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
注:以上是设置针对目录进行文件的访问控制
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<IfModule
mod_cgid.c>
Scriptsock run/httpd.cgid
</IfModule>
<Directory
"/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
AddDefaultCharset
GB2312 注:网站支持的字符编码
注:以下是设置虚拟主机服务所需配置的地方
#NameVirtualHost 202.101.2.1 注:基于名字的虚拟主机必须,如基于IP地址则不需要
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#注:如果是基于IP地址的虚拟主机只需下面的设置即可
#<VirtualHost 202.101.2.1>
# ServerAdmin webmaster@dummy-host.example此邮件地址受spam bots保护,需要使用 Javascript 功能来查阅。
#
DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>
注:基于名字即一个IP地址对应多个域名
基于IP地址即每一个域名均有与之对应的IP
C: DHCP服务器的安装设置
1. 在安装光盘里找到dhcp-*.rpm,
2. Rpm –ivh
dhcp-*.rpm
3. Setup/system
serviceu将dhcp设为系统自启动
4. 配置/etc/dhcpd.conf文件
subnet 192.168.1.0 netmask 255.255.255.0 {
range dynamic-bootp 192.168.1.60 192.168.1.160; 注:IP地址分配范围
option routers 192.168.1.254; 注:默认网关
option subnet-mask 255.255.255.0; 注:默认子网掩码
option domain-name “mydomain.com”; 注:默认域名
option domain-name-servers 192.168.1.50,202.96.134.133;
D: 电子邮件(sendmail)服务器的设置
4.1 设置Sendmail.cf
请在Cwlocalhost之後加上你那一台机器所有可能用来当收信地址的host name 。 例如我有一台机器叫:ftp.mydoamin.com,而且也叫:email.mydomain.com,而我希望这一台机器这两个名字都能收信,那我要这么作:
Cwlocalhost ftp.mydomain.com
email.mydomain.com
顺便说一下,Cw之後只能写入本机器的名字,千万不能写入其他机器的名字,否则,甚麽地方都能寄,那被写的就 一定不能寄。
上面其实是简略的说法,如果你对DNS 也熟悉的话,可参考这节来作判断,判断是否须要在Cw之後写入东东。否则 请直接跳过这一小节,把本机器所用的所有名字都写上。
1.在一台机器上,如果有多个名字(hostname),而是用CNAME 建立的,如:
$ORIGIN my.mydomain.com
ftp IN A 192.168.1.50
email IN CNAME my.mydomain.com
那麽可以不必在Cw上标明。系统会透过DNS 找到其 Canonical name。
2.如果一台机器有多个名字,可是,每个名字是用A record 建立的。如:
$ORIGIN my.mydomain.com
ftp IN A 192.168.1.50
emial IN A 192.168.1.50
这种情况【一定】要记得在Cw後写上你所要收信的名字。如果这个忘了写,会有怎样的问题呢? 忘了将会有从外面机器寄信来,没有写上的机器名将却收不到信,会提示:
"Local configuration error" 。
如:我的sendmail.cf中的Cw这行是如下: Cw
my.mydomain.com那我将无法使用这个地址: username@my.mydomain此邮件地址受spam bots保护,需要使用 Javascript 功能来查阅。而只能用 username@ftp.mydomain此邮件地址受spam bots保护,需要使用 Javascript 功能来查阅。 否则将出现上述错误。
如果发现了错误,那再加上去也就可以了。
3.如果一台机器有多interface ,各interface有其本身的名字,且要收信。这个情况也要在Cw之後写明所有要收信的hostname。
Fw/etc/sendmail.cw 这一行表示让sendmail去哪里找sendmail.cw这个文件,这个文件很重要。
还有一行你可能也需要改一下:
R$* $#error $@
R$- $@ OK
注意:中间的分隔要用"Tab"键.
4.2 设置Sendmail.cw
修改sendmail.cw文件,设置这个邮件服务器用于发送邮件的主机的名字,可以用你的域名,或主机名。
# sendmail.cw - include all aliases for your machine here.
mydomain.com
mail.mydomain.com
my.mydomain.com
ok!一个标准的sendmail.cf文件就设置完了!
4.3 设置access
打开/etc/mail/access,你会看到 (注意一些系统的access文件不再/etc/mail下,如找不到请用whereis查找或检查是否安装正常)
# Check the /usr/doc/sendmail-8.9.3/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/doc/sendmail-8.9.3/README.cf is part of the sendmail-doc
# package.
#
# by default we allow relaying from localhost...
localhost.localdomain RELAY
localhost RELAY
如果您的IP地址是192.168.1.50的话,这样请在最后一行加上 192.168.1.50
RELAY
其文件的最后三行应是:
localhost.localdomain RELAY
localhost RELAY
192.168.1.50 RELAY
加上这句话您就可以用sendmail发送接收mail了!但是如果您想让别人也可以使用sendmail的话,他的IP是202.168.25.22,这样就在在最后一行加入 202.168.25.22
RELAY
其文件的最后四行应是:
localhost.localdomain RELAY
localhost RELAY
192.168.1.50 RELAY
202.168.25.22 RELAY
我想,您现在一定有个疑问是,如果我想设置50个人用sendmail是不是需要加50个IP啊!?嘿嘿,不用啦,是这样,sendmail考虑到多用户的时候,它准许你添入整个C类地址。其格式如下:
localhost.localdomain RELAY
localhost RELAY
192.168.1 RELAY
这样,您就是把192.168.1这整个C都加入的sendmail中,这个C类地址的用户,如果在你的系统里有账号的话,就可以使用sendmail收发信件了!然后运行:# makemap hash
access.db < access
4.4 设置pop3
如果您需要pop3来接收信件,您需要打开pop3端口,
vi /etc/inetd.conf 查找到
# pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d把#号删掉。vi/etc/services 查找#pop-3 110/tcp # POP version
3把#号删掉。这样,在restart inetd后,pop3 110端口就可以接信了!如果还是不行,请检查是否安装pop3端口!
4.5 sendmail的别名和forward
(1) 关于直接用IP地址发信
mail user@[192.168.IP.Address]
只要用[]将IP地址括起来就行了
(2) 关于alias
sendmail 在/etc下有两个文件 aliases和aliases.db, 后者是前者用newaliases 生成的别名数据库. 你可以手工编辑/etc/aliases, 然后运行newaliases更新数据 库(其实newaliases是个到sendmail的 symlink)
eg: nangshou : user@mydomain.com此邮件地址受spam bots保护,需要使用 Javascript 功能来查阅。
alias-name: real-user-account
则以后mail nangshou就可以将信寄到user@mydomain.com此邮件地址受spam bots保护,需要使用 Javascript 功能来查阅。处 而别人寄给alias-name@your.domain此邮件地址受spam bots保护,需要使用 Javascript 功能来查阅。的信就会转给真正的用户real-user-account
(3) 关于forward
在你的$HOME目录下面编辑一个.forward文件, 里面写上你要forward的目的e-mail 地址或本机的用户名, 就可以自动将信 forward到相应地址
eg: .forward: user@mydomain.com此邮件地址受spam bots保护,需要使用 Javascript 功能来查阅。
或
other-user-account
则给此人的e-mail会forward到mydoamin或other-user-account处
(4) 关于vacation
去 找一个vacation包(如RedHat的contrib中有vacation的rpm), 装上后就一个
/usr/bin/vacation程序和一个man. 先运行vacation, 它会让你编辑$HOME/.vacation.msg文件, 就是要发回给对方 告诉他你现在不看信的东西啦. 然后编辑$HOME/.forward文件, 写这样一句 username,
"|/usr/bin/vacation username", username 要换回你自己的了 然后运行vacation -I建$HOME/.vacation.db就好了。
(5) 关于sendmail的一些文件
/var/log/maillog sendmail的log, 分析错误有用
/var/spool/mail/$USER 进来的信, 每个用户一个文件
/var/spool/mqueue mail queue, 可以用mailq看队列中待发的信
(mailq也是 sendmail的symlink了)
dfxxxxxx 这是信的内容
qfxxxxxx 这是信的subject和别的信息 (反正每信一个号了, 配对的)
/etc/sendmail.cf sendmail的配置文件, 改动它可要小心
/etc/sendmail.cw 假如你的机器有好多alias的话就把名字写在
这个文件中, 这样写哪个都能收到信
4.6 限制邮件的大小
vi /etc/sendmail.cf:
Mlocal, P=/bin/mail, F=lsDFMrmn, S=10, R=20/40,
Maxsize=1000000,
A=mail -d $u
Mprog, P=/usr/local/sendmail/smrsh, F=lsDFMeu, S=10, R=20/40, D=$z:/,
Maxsize=1000000,
其中maxsize=1000000即为限制数
E: MySQL服务器的设置
MySQL是一个多用户、多线程SQL数据库服 务器。可以用于各种流行操作系统平台的关系数据库,它具有客户机/服务器体系结构的分布式数据库管理系统。MySQL完全适用于网络,用其建造的数据库可 以在网上的任意地方访问。MySQL可以使用SQL语言。SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言。MySQL是以一个客户机/服 务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。SQL是一种标准化的语言,它使得存储、更新信息更容易。MySQL 主要目标是快速、健壮和易用。
一. MySQL的安装
所需资源:
在XteamLinux 4.0中,系统已经默认安装了MySQL,版本号是:
二. 升级方法:
第一步:rpm -Uvh MySQL包。
第二步:执行mysql,启动MySQL monitor就可以使用mysql数据库了。
三. MySQL的使用
注意:使用查询语句时,需要在查询语句的结尾处键入一个分号(;)并按Enter键。
启动MySQL守护进程(XteamLinux 4.0默认情况下是未开启的)
/etc/rc.d/init.d/mysql start
关闭MySQL守护进程
/etc/rc.d/init.d/mysql stop
检查MySQL服务器运行情况
1、检查MySQL的属性
/usr/bin/mysqladmin variables
2、检查MySQL的版本信息/usr/bin/mysqladmin version
3、检查MySQL运行状态/usr/bin/mysqladmin status
4、检查MySQL服务器此时正运行的线程信息
/usr/bin/mysqladmin processlist
5、检查MySQL的状态
mysqladmin ping
6、刷新所有的表并重写日志文件
Flush all tables and close and open logfiles
mysqladmin refresh
四. 连接和断开服务器
1、连接服务器
mysql -h host -u user -p
#如果此服务运行在与MySQL相同的机器上,这个选项一般可以省略。
#要求输入口令
2、断开服务器
quit
#进入MySQL之后可以敲help来获取帮助信息
#还可以键入[Ctrl+D]来退出。
F:FTP服务器配置
Linux下的FTP软件有很多,常用的有wu- ftp、tftp、porftpd和Vsftp等。其中proftpd是一个配置方法与Apache相类似的FTP服务器,有两种运行方式,独立服务器与超级服务器的子服务器。无论从安全性和稳定性,还是可配置性来说都是非常好的选择。
安装proftpd
安装命令如下:
# wget
ftp://ftp.proftpd.org/distrib/source/proftpd-
# bunzip2
proftpd-
# tar xvf
proftpd-
# cd
proftpd-
#
./configure --prefix=/usr/local/proftpd
# make
# make
install
设定proftpd
1.几个文件的功能及路径
/usr/local/proftpd/sbin/proftpd
执行程序。
/usr/local/proftpd/etc/proftpd.conf
设置文件。
/usr/local/proftpd/var/proftpd.pid
proftpd 作为一个服务的ID号。
2.设定proftpd.conf文件,启动服务。在默认的/usr/local/proftpd/etc/proftpd.conf/文件中有一行文字 “ServerType standalone”,指定/usr/local/proftpd/sbin/proftpd以一个服务的方式来工作,可以将 /usr/local/proftpd/sbin/proftpd放到/etc/rc.d/rc.local文件中,以便开机时启动。
3.proftpd.conf的一个简单设定及说明(proftpd文件解压后,/doc目录内有proftpd.conf的说明)如下:
ServerName
“ProFTPD Default Installation” #服务器的名称
ServerType
standalone #服务器的服务方法(系统服务/inetd连接)
DefaultServer
on 默认服务
Port 21 服务器使用的port号码
User
nobody
Group ftp
proftpd在做为服务时的用户名和组名
DefaultRoot
~ 根目录设定,可以用/home也可用~,
可以使用户不能向上到根目录下
<Directory
/*> 目录的权力
AllowOverwrite
on
</Directory>
<Anonymous
~ftp> 其本anonymous用户定义
User ftp
Group ftp
UserAlias
anonymous ftp
MaxClients
10
DisplayLogin
welcome.msg
DisplayFirstChdir
.message
RequireValidShell
no 注意最好加上这一行
<Limit
WRITE> 设定为只读
DenyAll
</Limit>
</Anonymous>
CISCO交
三: CISCO交换机配置命令
1.在基于IOS的交换机上设置主机名/系统名:
switch(config)# hostname hostname
在基于CLI的交换机上设置主机名/系统名:
switch(enable) set system name name-string
2.在基于IOS的交换机上设置登录口令:
switch(config)# enable password level 1 password
在基于CLI的交换机上设置登录口令:
switch(enable) set password
switch(enable) set enalbepass
3.在基于IOS的交换机上设置远程访问:
switch(config)# interface vlan 1
switch(config-if)# ip address ip-address netmask
switch(config-if)# ip default-gateway ip-address
在基于CLI的交换机上设置远程访问:
switch(enable) set interface sc0 ip-address netmask broadcast-address
switch(enable) set interface sc0 vlan
switch(enable) set ip route default gateway
4.在基于IOS的交换机上启用和浏览CDP信息:
switch(config-if)# cdp enable
switch(config-if)# no cdp enable
为了查看Cisco邻接设备的CDP通告信息:
switch# show cdp interface [type modle/port]
switch# show cdp neighbors [type module/port] [detail]
在基于CLI的交换机上启用和浏览CDP信息:
switch(enable) set cdp
为了查看Cisco邻接设备的CDP通告信息:
switch(enable) show cdp neighbors[module/port] [vlan|duplex|capabilities|detail]
5.基于IOS的交换机的端口描述:
switch(config-if)# description description-string
基于CLI的交换机的端口描述:
switch(enable)set port name module/number description-string
6.在基于IOS的交换机上设置端口速度:
switch(config-if)# speed
在基于CLI的交换机上设置端口速度:
switch(enable) set port speed moudle/number
switch(enable) set port speed moudle/number
7.在基于IOS的交换机上设置以太网的链路模式:
switch(config-if)# duplex
在基于CLI的交换机上设置以太网的链路模式:
switch(enable) set port duplex module/number
8.在基于IOS的交换机上配置静态VLAN:
switch# vlan database
switch(vlan)# vlan vlan-num name vla
switch(vlan)# exit
switch# configure teriminal
switch(config)# interface interface module/number
switch(config-if)# switchport mode access
switch(config-if)# switchport access vlan vlan-num
switch(config-if)# end
在基于CLI的交换机上配置静态VLAN:
switch(enable) set vlan vlan-num [name name]
switch(enable) set vlan vlan-num mod-num/port-list
9. 在基于IOS的交换机上配置VLAN中继线:
switch(config)# interface interface mod/port
switch(config-if)# switchport mode trunk
switch(config-if)# switchport trunk encapsulation
switch(config-if)# switchport trunk allowed vlan remove vlan-list
switch(config-if)# switchport trunk allowed vlan add vlan-list
在基于CLI的交换机上配置VLAN中继线:
switch(enable) set trunk module/port [on|off|desirable|auto|nonegotiate]
Vlan-range [isl|dotlq|dotl0|lane|negotiate]
10.在基于IOS的交换机上配置VTP管理域:
switch# vlan database
switch(vlan)# vtp domain domain-name
在基于CLI的交换机上配置VTP管理域:
switch(enable) set vtp [domain domain-name]
11.在基于IOS的交换机上配置VTP 模式:
switch# vlan database
switch(vlan)# vtp domain domain-name
switch(vlan)# vtp
switch(vlan)# vtp password password
在基于CLI的交换机上配置VTP 模式:
switch(enable) set vtp [domain domain-name] [mode
12. 在基于IOS的交换机上配置VTP版本:
switch# vlan database
switch(vlan)# vtp v2-mode
在基于CLI的交换机上配置VTP版本:
switch(enable) set vtp v2 enable
13. 在基于IOS的交换机上启动VTP剪裁:
switch# vlan database
switch(vlan)# vtp pruning
在基于CL I 的交换机上启动VTP剪裁:
switch(enable) set vtp pruning enable
14.在基于IOS的交换机上配置以太信道:
switch(config-if)# port group group-number [distribution
在基于CLI的交换机上配置以太信道:
switch(enable) set port channel moudle/port-range mode
15.在基于IOS的交换机上调整根路径成本:
switch(config-if)# spanning-tree [vlan vlan-list] cost cost
在基于CLI的交换机上调整根路径成本:
switch(enable) set spantree portcost moudle/port cost
switch(enable) set spantree portvlancost moudle/port [cost cost][vlan-list]
16.在基于IOS的交换机上调整端口ID:
switch(config-if)# spanning-tree[vlan vlan-list]port-priority port-priority
在基于CLI的交换机上调整端口ID:
switch(enable) set spantree portpri
switch(enable) set spantree portvlanpri
17. 在基于IOS的交换机上修改STP时钟:
switch(config)# spanning-tree [vlan vlan-list] hello-time seconds
switch(config)# spanning-tree [vlan vlan-list] forward-time seconds
` switch(config)# spanning-tree [vlan vlan-list] max-age seconds
在基于CLI的交换机上修改STP时钟:
switch(enable) set spantree hello interval[vlan]
switch(enable) set spantree fwddelay delay [vlan]
switch(enable) set spantree maxage agingtiame[vlan]
18. 在基于IOS的交换机端口上启用或禁用Port Fast 特征:
switch(config-if)#spanning-tree portfast
在基于CLI的交换机端口上启用或禁用Port Fast 特征:
switch(enable) set spantree portfast
19. 在基于IOS的交换机端口上启用或禁用UplinkFast 特征:
switch(config)# spanning-tree uplinkfast [max-update-rate pkts-per-second]
在基于CLI的交换机端口上启用或禁用UplinkFast 特征:
switch(enable) set spantree uplinkfast
20. 为了将交换机配置成一个集群的命令交换机,首先要给管理接口分配一个IP地址,然后使用下列命令: switch(config)# cluster enable cluster-name
21. 为了从一条中继链路上删除VLAN,可使用下列命令:
switch(enable) clear trunk module/port vlan-range
22. 用show vtp domain 显示管理域的VTP参数.
23. 用show vtp statistics显示管理域的VTP参数.
24. 在Catalyst交换机上定义TrBRF的命令如下:
switch(enable) set vlan vlan-name [name name] type trbrf bridge bridge-num[stp
25. 在Catalyst交换机上定义TrCRF的命令如下:
switch (enable) set vlan vlan-num [name name] type trcrf
26. 在创建好TrBRF VLAN之后,就可以给它分配交换机端口.对于以太网交换,可以采用如下命令给VLAN分配端口:
switch(enable) set vlan vlan-num mod-num/port-num
27. 命令show spantree显示一个交换机端口的STP状态.
28. 配置一个ELAN的LES和BUS,可以使用下列命令:
ATM (config)# interface atm number.subint multioint
ATM(config-subif)# lane serber-bus ethernet elan-name
29. 配置LECS:
ATM(config)# lane database database-name
ATM(lane-config-databade)# name elan1-name server-atm-address les1-nsap-address
ATM(lane-config-databade)# name elan2-name server-atm-address les2-nsap-address
ATM(lane-config-databade)# name …
30. 创建完数据库后,必须在主接口上启动LECS.命令如下:
ATM(config)# interface atm number
ATM(config-if)# lane config database database-name
ATM(config-if)# lane config auto-config-atm-address
31. 将每个LEC配置到一个不同的ATM子接口上.命令如下:
ATM(config)# interface atm number.subint multipoint
ATM(config)# lane client ethernet vlan-num elan-num
32. 用show lane server 显示LES的状态.
33. 用show lane bus显示bus的状态.
34. 用show lane database显示LECS数据库可内容.
35. 用show lane client显示LEC的状态.
36. 用show module显示已安装的模块列表.
37. 用物理接口建立与VLAN的连接:
router# configure terminal
router(config)# interface media module/port
router(config-if)# description description-string
router(config-if)# ip address ip-addr subnet-mask
router(config-if)# no shutdown
38. 用中继链路来建立与VLAN的连接:
router(config)# interface module/port.subinterface
router(config-ig)# encapsulation[isl|dotlq] vlan-number
router(config-if)# ip address ip-address subnet-mask
39. 用LANE 来建立与VLAN的连接:
router(config)# interface atm module/port
router(config-if)# no ip address
router(config-if)# atm pvc 1 0 5 qsaal
router(config-if)# atm pvc 2 0 16 ilni
router(config-if)# interface atm module/port.subinterface multipoint
router(config-if)# ip address ip-address subnet-mask
router(config-if)# lane client ethernet elan-num
router(config-if)# interface atm module/port.subinterface multipoint
router(config-if)# ip address ip-address subnet-name
router(config-if)# lane client ethernet elan-name
router(config-if)# …
40. 为了在路由处理器上进行动态路由配置,可以用下列IOS命令来进行:
router(config)# ip routing
router(config)# router ip-routing-protocol
router(config-router)# network ip-network-number
router(config-router)# network ip-network-number
41. 配置默认路由:
switch(enable) set ip route default gateway
42. 为一个路由处理器分配VLANID,可在接口模式下使用下列命令:
router(config)# interface interface number
router(config-if)# mls rp vlan-id vlan-id-num
43. 在路由处理器启用MLSP:
router(config)# mls rp ip
44. 为了把一个外置的路由处理器接口和交换机安置在同一个VTP域中:
router(config)# interface interface number
router(config-if)# mls rp vtp-domain domain-name
45. 查看指定的VTP域的信息:
router# show mls rp vtp-domain vtp domain name
46. 要确定RSM或路由器上的管理接口,可以在接口模式下输入下列命令:
router(config-if)#mls rp management-interface
47. 要检验MLS-RP的配置情况:
router# show mls rp
48. 检验特定接口上的MLS配置:
router# show mls rp interface interface number
49. 为了在MLS-SE上设置流掩码而又不想在任一个路由处理器接口上设置访问列表:
set mls flow [destination|destination-source|full]
50. 为使MLS和输入访问列表可以兼容,可以在全局模式下使用下列命令:
router(config)# mls rp ip input-acl
51. 当某个交换机的第3层交换失效时,可在交换机的特权模式下输入下列命令:
switch(enable) set mls enable
52. 若想改变老化时间的值,可在特权模式下输入以下命令:
switch(enable) set mls agingtime agingtime
53. 设置快速老化:
switch(enable) set mls agingtime fast fastagingtime pkt_threshold
54. 确定那些MLS-RP和MLS-SE参与了MLS,可先显示交换机引用列表中的内容再确定:
switch(enable) show mls include
55. 显示MLS高速缓存记录:
switch(enable) show mls entry
56. 用命令show in arp显示ARP高速缓存区的内容。
57. 要把路由器配置为HSRP备份组的成员,可以在接口配置模式下使用下面的命令:
router(config-if)# standby group-number ip ip-address
58. 为了使一个路由器重新恢复转发路由器的角色,在接口配置模式下:
router(config-if)# standy group-number preempt
59. 访问时间和保持时间参数是可配置的:
router(config-if)# standy group-number timers hellotime holdtime
60. 配置HSRP跟踪:
router(config-if)# standy group-number track type-number interface-priority
61. 要显示HSRP路由器的状态:
router# show standby type-number group brief
62. 用命令show ip igmp确定当选的查询器。
63. 启动IP组播路由选择:
router(config)# ip muticast-routing
64. 启动接口上的PIM:
dalllasr1>(config-if)# ip pim
65. 启动稀疏-稠密模式下的PIM:
router# ip multicast-routing
router# interface type number
router# ip pim sparse-dense-mode
66. 核实PIM的配置:
dallasr1># show ip pim interface[type number] [count]
67. 显示PIM邻居:
dallasr1># show ip neighbor type number
68. 为了配置RP的地址,命令如下:
dallasr1># ip pim rp-address ip-address [group-access-list-number][override]
69. 选择一个默认的RP:
dallasr1># ip pim rp-address
通告RP和它所服务的组范围:
dallasr1># ip pim send-rp-announce type number scope ttl group-list access-list-number
为管理范围组通告RP的地址:
dallasr1># ip pim send-rp-announce ethernet0 scope 16 group-list1
dallasr1># access-list 1 permit 266.0.0.0 0.255.255.255
设定一个RP映像代理:
dallasr1># ip pim send-rp-discovery scope ttl
核实组到RP的映像:
dallasr1># show ip pim rp mapping
dallasr1># show ip pim rp [group-name|group-address] [mapping]
70. 在路由器接口上用命令ip multicast ttl-threshold ttl-value设定TTL阀值:
dallasr1>(config-if)# ip multicast ttl-threshold ttl-value
71. 用show ip pim neighbor显示PIM邻居表。
72. 显示组播通信路由表中的各条记录:
dallasr1>show ip mroute [group-name|group-address][scoure][summary][count][active kbps]
73. 要记录一个路由器接受和发送的全部IP组播包:
dallasr1> #debug ip mpacket [detail] [access-list][group]
74. 要在CISCO路由器上配置CGMP:
dallasr1>(config-if)# ip cgmp
75.配置一个组播路由器,使之加入某一个特定的组播组:
dallasr1>(config-if)# ip igmp join-group group-address
76. 关闭 CGMP:
dallasr1>(config-if)# no ip cgmp
77. 启动交换机上的CGMP:
dallasr1>(enable) set cgmp enable
78. 核实Catalyst交换机上CGMP的配置情况:
catalystla1>(enable) show config
set prompt catalystla1>
set interface sc0 192.168.1.1 255.255.255.0
set cgmp enable
79. CGMP离开的设置:
Dallas_SW(enable) set cgmp leave
80. 在Cisco设备上修改控制端口密码:
R1(config)# line console 0
R1(config-line)# login
R1(config-line)# password Lisbon
R1(config)# enable password Lilbao
R1(config)# login local
R1(config)# username student password cisco
81. 在Cisco设备上设置控制台及vty端口的会话超时:
R1(config)# line console 0
R1(config-line)# exec-timeout 5 10
R1(config)# line vty 0 4
R1(config-line)# exec-timeout 5 2
82. 在Cisco设备上设定特权级:
R1(config)# privilege configure level 3 username
R1(config)# privilege configure level 3 copy run start
R1(config)# privilege configure level 3 ping
R1(config)# privilege configure level 3 show run
R1(config)# enable secret level 3 cisco
83. 使用命令privilege 可定义在该特权级下使用的命令:
router(config)# privilege mode level level command
84. 设定用户特权级:
router(config)# enable secret level 3 dallas
router(config)# enable secret san-fran
router(config)# username student password cisco
85. 标志设置与显示:
R1(config)# banner motd ‘unauthorized access will be prosecuted!’
86. 设置vty访问:
R1(config)# access-list 1 permit 192.168.2.5
R1(config)# line vty 0 4
R1(config)# access-class 1 in
87. 配置HTTP访问:
Router3(config)# access-list 1 permit 192.168.10.7
Router3(config)# ip http sever
Router3(config)# ip http access-class 1
Router3(config)# ip http authentication local
Router3(config)# username student password cisco
88. 要启用HTTP访问,请键入以下命令:
switch(config)# ip http sever
89. 在基于set命令的交换机上用setCL1启动和核实端口安全:
switch(enable) set port security mod_num/port_num…enable mac address
switch(enable) show port mod_num/port_num
在基于CiscoIOS命令的交换机上启动和核实端口安全:
switch(config-if)# port secure [mac-mac-count maximum-MAC-count]
switch# show mac-address-table security [type module/port]
90. 用命令access-list在标准通信量过滤表中创建一条记录:
Router(config)# access-list access-list-number
91. 用命令access-list在扩展通信量过滤表中创建一条记录:
Router(config)# access-list access-list-number
92. 对于带内路由更新,配置路由更新的最基本的命令格式是:
R1(config-router)#distribute-list access-list-number|name in [type number]
93. 对于带外路由更新,配置路由更新的最基本的命令格式是:
R1(config-router)#distribute-list access-list-number|name out [interface-name] routing-process| autonomous-system-number
94. set snmp命令选项:
set snmp community
95. set snmp trap 命令格式如下:
set snmp trap
[all|moudle|classis|bridge|repeater| auth|vtp|ippermit|vmps|config|entity|stpx]
set snmp trap rvcr_addr rcvr_community
96. 启用SNMP chassis 陷阱:
Console>(enable) set snmp trap enable chassis
97. 启用所有SNMP chassis 陷阱:
Console>(enable) set snmp trap enable
四:CISCO路由器基本命令配置
1.1 CISCO
IOS操作环境。
有三种:
ROM
monitor > Failure of password recovery
BootROM
router(boot) > Flash image upgrade
Cisco IOS
router > Normal operation
1.2
Command Modes命令模式。
User EXEC
Router> 普通级别
Privileged
EXEC Router# 系统管理级别(超级用户)
Configuration
mode Router(config)# 修改配置
二、 配置前的准备工作
2.1 用终端或仿真终端接入CONSOLE口 。
终端或仿真终端配置信息如下:
9600 baud
8 data bits no parity 2 stop bits (9600,8/N/2)
2.2 用TELNET命令在网上进行设置。
系统管理员可在网上用telnet address命令进行远程配置。
三、 配置IP地址
3.1
config命令行方式进行设置
键入Enable 进入router # 模式
然后键入config 进入router(config)# 模式
Router(config)
# interface端口号
进入端口设置状态 Router(config-if)
此时用命令IP address <IP地址> <掩码>
设定路由器端口IP地址
四、 配置ip路由协议 (RIP ,OSPF ,BGP ,STATICS)
在图中有路由器A和B,广域网通过router A 的s0/0/0和router B的s2/0/0相连,IP如下:
router A:
E1:202.101.1.1/24
S0/0/0:202.101.3.1/30
router B:
E1:202.101.2.1/24
S2/0/0:202.101.3.2/30
当我们设置路由器协议时,可根据方案的规定设置一种或多种协议。以下动态协议都是按最简单设置,复杂的配置可参考具体手册。
4.1静态路由
IP route 目的网络地址 子网掩码 端口号
在router A上配router B的路由:
IP route
202.101.2.0 255.255.255.0 202.101.3.2
在router A上配router B的路由:
IP route
202.101.1.0 255.255.255.0 202.101.3.1
4.2 RIP2设置
router A进行如下设置:
router
rip ;enable rip
version 2
;选择版本2
network
202.101.1.0 ;相关子网地址
network
202.101.3.0
router B进行如下设置:
router
rip ;enable rip
version 2
;选择版本2
network
202.101.2.0 ;相关子网地址
network
202.101.3.0
4.3 OSPF设置
router A:
router ospf
200 ;enable ospf 进程号为200
network
202.101.1.0
network
202.101.3.0
router B:
router
ospf 200 ;enable ospf 进程号为200
network
202.101.2.0
network
202.101.3.0
4.4 BGP设置
router A:
router
bgp 100 ;enable bgp 设置自治域号
network
202.101.3.0 mask 255.255.255.252 ;相关子网地址及子网掩码
network
202.101.1.0 mask 255.255.255.0 ; 这些地址由bgp发到邻居路由器
neighbor
202.101.3.2 remote-as 200 ;设置远程相连自治域边界路由器端口
router B:
router
bgp 100 ;enable bgp 设置自治域号
network
202.101.2.0 mask 255.255.255.252 ;相关子网地址及子网掩码
network
202.101.1.0 mask 255.255.255.0 ; 这些地址由bgp发到邻居路由器
neighbor
202.101.3.1 remote-as 200 ;设置远程相连自治域边界路由器端口
五、 radius认证的设置
5.1
radius的简述
RADIUS的全称为(Remote Access Dail-In User Service),它是对远程拨号用户访问进行认证的一种协议。主要进行Authentication Authorization
Accounting (AAA) 三方面的工作。
5.2
radius的配置
具体配置如下:
aaa
new-mode ;enable radius
radius-server
host <address> ;指明radius server在网上的地址
radius-server
key <string> ;建立一个网上传输密
作者: AMTO_XY
2005-6-10 19:46 回复此发言
2
CISCO路由器基本命令配置
aaa
authentication login default radius local ;进行login认证,若radius server未找到从本地数据库内查找
aaa
authentication ppp default radius local
aaa
authorization network radius local ;授权检测
aaa
accounting network start-stop radius ;计帐检测
六、 路由器软件升级方法
6.1 改变操作环境
在global config mode设置: config -reg 0x2101
reload 进入Boot Rom 模式:router(boot)>
6.2 运行tftp server
在网上运行tftp server,使升级文件可以传输。
命令如下:
copy tftp
flash ;将tftp server上的文件传入路由器的flash memoy中
copy
flash tftp ; 将flash中的文件备份到tftp server中
七、 路由器配置的其它事项
7.1拨号用户的配置。
cisco
2509/2511的异步串行通讯口在配置modem时,modem需设置成自动应答方式。具体方法如下:
用超级终端进入modem AT 命令方式,键入ats0=1 设置自动应答方式,然后键入at&w 将设置写入寄存器。
7.2 RIP
& BGP的设置
当一个运行RIP路由协议的子网,做为一个自治域,用BGP协议接入另一自治域时。此子网内所有路由器需添加参数: ip classless 。同时在与边界路由器直接相连的路由器上需添加一个缺省网关。
7.3 v.35电缆直连的设置
在相关的端口上设置时钟速率:clock rate < speed> .
7.4
loopback端口的设置
loopback端口是一个虚拟端口,端口状态始终处于UP。通过它可以使由BGP相连的AS之间始终保持连系,不会由于边界路由器端口状态的改变而发生变化。其具体配置如下:
interface
loopback <number>
ip
address IP地址 子网掩码
八、常见问题
8.1如何检测网络是否通畅?
在网络主机上采用命令ping <ip地址> 来逐端检测网端。
8.2如何查看路由器配置信息?
在EXEC模式下用show
config命令。
8.3如何查看路由器路由信息?
在EXEC模式下用show
ip route 命令。
8.4如何查看路由器端口信息?
EXEX模式下用show int <端口号>
命令。
8.5为什么端口协议已经配置,状态仍然是down?
在CONFIG模式下,选择该端口,执行no shutdwon命令。
8.6
config模式有几种状态,对应那些操作?
config模式有以下几种状态:
· globle config 全局配置操作 exec模式键入config
t
· interface config 端口配置操作 config模式键入int
<端口号>
· line config 线路配置操作 config模式键入line
<线路号>
· router config 路由配置操作 config模式键入router<路由协议>
五: WIN2003上的IIS配置
配置 Windows Server 2003 -- IIS 6
Microsoft Knowledge Base Article - 324742
这篇文章中的信息适用于:
Microsoft Windows Server 2003, Datacenter Edition
Microsoft Windows Server 2003, Enterprise Edition
Microsoft Windows Server 2003, Standard Edition
Microsoft Windows Server 2003, Web Edition
Microsoft Windows Server 2003, 64-Bit Datacenter Edition
Microsoft Windows Server 2003, 64-Bit Enterprise Edition
Microsoft Internet Information Services version 6.0
本分步指南介绍了如何在 Windows Server 2003 环境中设置一个用于匿名访问的 WWW 服务器。
安装 Internet 信息服务
Microsoft Internet 信息服务 (IIS) 是与 Windows Server 2003 集成的 Web 服务。
要安装 IIS、添加可选组件或删除可选组件,请按以下步骤操作:
1. 单击开始,指向控制面板,然后单击“添加或删除程序”。
“添加或删除程序”工具就会启动。
2. 单击添加/删除
Windows 组件。
显示“Windows 组件向导”。
3. 在Windows 组件 列表中,单击Web 应用程序服务器。
4. 单击详细信息,然后单击Internet 信息服务 (IIS)。
5. 单击详细信息 ,以查看
IIS 可选组件列表。
6. 选择您要安装的可选组件。默认情况下,下列组件是选中的:
--- 公用文件
--- FrontPage 2002 Server Extentions
--- Internet 信息服务管理单元
--- Internet 信息服务管理器
--- NNTP 服务
--- SMTP 服务
--- World Wide Web 服务
7. 单击“World Wide Web 服务”,然后单击详细信息 ,以查看 IIS 可选子组件(如 Active Server Pages 组件和“远程管理 (HTML) 工具”)的列表。选择您要安装的可选子组件。默认情况下,下列组件是选中的:
--- World Wide Web 服务
8. 单击确定 ,直到返回“Windows
组件向导”。
9. 单击下一步,然后完成“Windows 组件向导”。
配置匿名身份验证
要配置匿名身份验证,请按以下步骤操作:
1. 单击开始,指向管理工具,然后单击Internet 信息服务 (IIS)。
2. 展开“* 服务器名称”(其中服务器名称 为该服务器的名称),右键单击Web 站点,然后单击属性。
3. 在Web 站点属性 对话框中,单击目录安全性 选项卡。
4. 在“身份验证和访问控制”下,单击编辑。
5. 单击“启用匿名访问”复选框,将其选中。
备注:“用户名”框中的用户帐户只用于通过 Windows guest 帐户进行匿名访问。
默认情况下,服务器会创建并使用帐户 IUSR_computername。匿名用户帐户密码仅在 Windows 中使用;匿名用户不使用用户名和密码登录。
6. 在“已验证身份的访问”下,单击“集成的
Windows 身份验证”复选框,将其选中。
7. 单击确定 两次。
基本 Web 站点配置
1. 单击开始,指向管理工具,然后单击Internet 信息服务 (IIS)。
2. 展开“* 服务器名称”(其中服务器名称 为该服务器的名称),然后展开Web 站点。
3. 右键单击默认 Web 站点,然后单击属性。
4. 单击Web 站点 选项卡。如果您已为计算机分配了多个 IP 地址,则请在IP 地址 框中单击您要指定给此 Web 站点的 IP 地址。
5. 单击性能 选项卡。使用Web 站点属性 - 性能 对话框可设置影响内存、带宽使用和 Web 连接数量的属性。
通过配置某个特定站点上的网络带宽,您可以更好地控制该站点的通信量。例如,通过在低优先级的 Web 站点上限制带宽,您可以放宽对他站点的访问量的限制。同样,当您指定到某个 Web 站点的连接数量时,您就可以为其他站点释放资源。设置是站点专用的,应根据网络通信量和使用变化情况进行调整。
--- 单击“限制可用于此 Web 站点的带宽”复选框,将其选中,可配置 IIS 将网络带宽调节到选定的最大带宽量,以千字节每秒 (KB/S) 为单位。
--- 单击Web 服务连接 复选框,将其选中,可选择特定数目或者不限定数目的 Web 服务连接。限制连接可使计算机资源能够用于其他进程。
备注:每个浏览 Web 站点的客户机通常都使用大约三个连接。
6. 单击主目录 选项卡。
--- 如果您想使用存储在本地计算机上的 Web 内容,则单击“此计算机上的目录”然后在本地路径 框中键入您想要的路径。例如,默认路径为 C:\\Inetpub\\wwwroot。
备注:为了增加安全性,请不要在根目录下创建 Web 内容文件夹。
--- 如果要使用存储在另一台计算机上的 Web 内容,则单击“另一计算机上的共享位置”,然后在显示的网络目录 框中键入所需位置。
--- 如果您要使用存储在另一个 Web 地址的 Web 内容,则单击“重定向到 URL”,然后在“重定向到”框中键入所需位置。在“客户会送到”下,单击相应的复选框,将其选中。
7. 单击文档 选项卡。请注意可由 IIS 用作默认启动文档的文档列表。如果您要使用 Index.html 作为启动文档,就必须添加它。添加方法是:
a. 单击添加。
b. 在添加默认文档 对话框中,键入 Index.html,然后单击确定。
c. 单击向上箭头 按钮,直到
Index.html 显示在列表的顶部。
8. 单击确定 ,关闭默认
Web 站点属性 对话框。
9. 右键单击默认 Web 站点,然后单击权限。
10. 请注意在此 Web 站点上具有操作权限的用户帐户。单击添加 添加其他可操作此 Web 站点的用户帐户。
11. 单击确定 ,返回到“Internet
信息服务”窗口。
12. 右键单击默认 Web 站点,然后单击停止。
13. 右键单击默认 Web 站点,然后单击开始。
WINDOWS2003上安装OA系统要注意:
如何启用 ASP 支持:
Windows Server 2003 默认安装,是不安装 IIS 6 的,需要另外安装。安装完 IIS 6,还需要单独开启对于 ASP 的支持。方法是:
控制面板 -> 管理工具 -> Web服务扩展
-> Active Server Pages -> 允许。
Q: ASP文件包含文件的时候提示Active Server Pages 错误
\'ASP 0131\'不允许的父路径,如何解决?
A:在站点属性中选择主目录-配置-应用程序选项,将“启用父目录”选上。
Q:登陆OA系统提示“未发现OA所必需文件”,如何解决?
A:在OASERVER的文件夹上选择属性-安全-选择USER组,将所有权限打开,点击“高级”,把“重置所有对象权限并允许传播可继承权限”勾上,点击“确定”两次,稍后登陆即可
六: windows server 域控制器安装
一、域控制器的概念:
简单说说,多数情况下,公司小型的局域网,不会使用“域”来管理。安装Windows的时候,我们常看到workgroup,安装时的配置选项:不属于“域”,就是指这种方式。
局域网工作于域模式,有几个很明显的特征:
1、你必须有一个域控制器,这通常是一台单独的服务器。需要添加Dns服务器和活动目录两个服务器角色。
2、其他的机器必须加入域,这样,该机器在登录的时候,将可选择是登录到本机还是登录到域。
3、域用户,是由域控制器统一管理的,域外的其他用户将比较难以如以前一般肆无忌惮的访问公司局域网的公开资源。
4、登录到域,同一个域用户可在不同的客户机登录到域,登陆过程中,客户机需要通过域控制器的认证。
二、准备工作:
1、工具的准备:
需要准备好Win2003
sp1、Ghost 8.2版。最好准备两个小工具:矮人纯Dos环境、Daemon3.47版,前者可以为Win2003提供Dos启动使用Ghost的方式(含ghost
8.2),后者是虚拟光驱工具,刻盘是件麻烦的事情。
我们将从全新安装win2003开始配置域控制器,对于数据库服务器,当然也以此为前提。在这个过程中,使用Ghost保留一些镜像是必要的,举例来说,当你在数据库服务器上安装好Sql2005之后,建议就做一个镜像,否则若后续的安装过程失败,从头再来的话,仅安装sql2005估计就需要1个小时。
尤其对于测试版的大型软件安装,ghost可以为我们节省太多时间。
另外的工具是“事件查看器”,在安装过程中,多注意一下其中的应用程序、系统、DNS服务器的日志信息,对我们解决问题的能力有较大的帮助。Sql2005的Profiler,监视数据库动作,也在不同程度上能增加对安装程序行为的理解,从而能找出一些麻烦解决的头绪。
此外,碰到意外情况的时候,多注意异常报告的内容,大多数异常是通过追踪其日志找到出错原因的。我们不必完全确定原因,“联想”这种思维模式常能够节省很多光阴。
最不能忘记的,当然是TFS的安装指南,这个最新的版本在http://www.microsoft.com/downloads/details.aspx?FamilyId=E54BF6FF-026B-43A4-ADE4-A690388F310E&displaylang=en处下载。光盘中的是较老的版本。
2、安装计划:即所谓的路线图,我们将做如下的步骤:
卸载IIS
禁用外网网卡
配置域控制器
卸载Dhcp
安装IIS
修改密码策略
创建三个账户
将数据库服务器和客户机加入到域
三、配置您的服务器向导:
我们以Windows2003安装已经就绪为基础,开始将Tfs配置为域控制器。请注意我们使用administrator登录。
1、删除IIS:
有个金科玉律:活动目录安装之前不要安装任何软件,包括IIS。我理解成仅包括IIS,因为整个安装过程中,我只碰到IIS出现麻烦。
如果你不卸载IIS就配置DC,之后的安装肯定会出现问题。当然,你也可以在配置好DC后,卸载IIS在重新安装。
这个步骤,在控制面板|添加删除程序|添加删除Windows组件解决,我们可在列表中清除“应用服务器”选项即可简单的完成。
2、禁用外网网卡
服务器上有两块网卡,一块接外网,一块接公司内部网。为省事起见,安装过程中我们禁用外网网卡。
3、配置您的服务器
使用控制面板|管理工具|配置您的服务器向导,首先会做一分钟左右的检测,之后出现提示窗体。我们选择“第一台服务器的典型配置”这种模式安装。简单省事。之后,域名窗体,我们将域名设为soft.local;netbios名称,我们不做改变。
此后安装程序将工作约5-10分钟,并自动重新启动机器。我们使用administrator重新登陆,这时实际上已经是“登录到域”了。
由于我们并不使用dhcp,因此可以卸载该组件。
4、重新安装IIS:
同样使用控制面板|添加删除程序|添加删除Windows组件,勾上应用程序服务器,点击“详细信息”,注意勾上“Asp.net”。
这里需要仔细核查的,是不要安装“frontPage 2002扩展”,否则后续步骤中安装wss会出现问题。
5、修改密码策略
这世界,当然懒惰的人居多,我们不愿意记忆太复杂的密码,所以:
控制面板|管理工具|域安全策略,找到账户|密码安全策略,禁用“密码复杂性”,将密码最小长度设为6。
7、增加三个域账户:
TfsSetup:用于安装Tfs的账户,简言之,我们再安装过程中都要使用这个账户登录。该帐户必须设为域管理组成员和数据库服务器本地管理员组的成员。
Tfs:Tfs的运行账户,该帐户必须设为域管理组成员和数据库服务器本地管理员组的成员。
report:ReportService的运行账户。
如何设为域管理员组成员?在DC上,控制面板|管理工具|Active directory用户和计算机,找到该用户,在快捷菜单中选择“添加到组...”,后面的一般只要达到傻瓜级别的智商,总知道怎么做。
如何设为数据库服务器本机管理员组的成员?使用本地管理员登录到本机,在控制面板|管理工具|计算机管理|本地用户与组中,找到adminisrators组,在快捷菜单中选择“添加成员”,然后...
8、将数据库服务器加入到域:
当然,前提是数据库服务器操作系统已经装好。同时,尤其要注意,本地连接的Tcp/ip属性中,需要将Dns地址设为域控制器的IP,我们这里定为192.168.0.1。
我的电脑|属性|计算机名称,选中“域”,输入域的名称“soft.local”。回弹出一个窗体,要求输入有权利将机器加入到域的域账户名称和密码。我们输入域用户soft\administrator和密码,等待一会儿会出现“欢迎加入到
soft.local域”的提示。
之后会要求重启,先别忙,将TfsSetup,Tfs,Report添加到本地管理员组之后,再重新启动。
Tomcat
配置技巧精华详解分析
现在开发Java Web应用,建立和部署Web内容是一件很简单的工作。使用Jakarta Tomcat作为Servlet和JSP容器的人已经遍及全世界。Tomcat具有免费、跨平台等诸多特性,并且更新得很快,现在非常的流行。
你所需要做的就是:按照你的需求配置Tomcat,只要你正确配置,Tomcat一般都能适合你的要求。下面是一系列关于Tomcat的配置技巧,这些技巧源自于Tomcat权威指南》,希望对你有所帮助。—— Jason Brittain
1. 配置系统管理(Admin Web Application)
大多数商业化的J2EE服务器都提供一个功能强大的管理界面,且大都采用易于理解的Web应用界面。Tomcat按照自己的方式,同样提供一个成熟的管理工具,并且丝毫不逊于那些商业化的竞争对手。Tomcat的Admin Web Application最初在4.1版本时出现,当时的功能包括管理context、data source、user和group等。当然也可以管理像初始化参数,user、group、role的多种数据库管理等。在后续的版本中,这些功能将得到很大的扩展,但现有的功能已经非常实用了。
Admin Web Application被定义在自动部署文件:CATALINA_BASE/webapps/admin.xml 。
(译者注:CATALINA_BASE即tomcat安装目录下的server目录)
你必须编辑这个文件,以确定Context中的docBase参数是绝对路径。也就是说,CATALINA_BASE/webapps/admin.xml 的路径是绝对路径。作为另外一种选择,你也可以删除这个自动部署文件,而在server.xml文件中建立一个Admin Web Application的context,效果是一样的。你不能管理Admin Web Application这个应用,换而言之,除了删除CATALINA_BASE/webapps/admin.xml ,你可能什么都做不了。
如果你使用UserDatabaseRealm(默认),你将需要添加一个user以及一个role到CATALINA_BASE/conf/tomcat-users.xml 文件中。你编辑这个文件,添加一个名叫“admin”的role 到该文件中,如下:
<role name="admin"/>
你同样需要有一个用户,并且这个用户的角色是“admin”。象存在的用户那样,添加一个用户(改变密码使其更加安全):
<user name="admin" password="deep_dark_secret"
roles="admin"/>
当你完成这些步骤后,请重新启动Tomcat,访问http://localhost:8080/admin,你将看到一个登录界面。Admin Web Application采用基于容器管理的安全机制,并采用了Jakarta Struts框架。一旦你作为“admin”角色的用户登录管理界面,你将能够使用这个管理界面配置Tomcat。
2.配置应用管理(Manager Web Application)
Manager Web Application让你通过一个比Admin Web Application更为简单的用户界面,执行一些简单的Web应用任务。
Manager Web Application被被定义在一个自动部署文件中:
CATALINA_BASE/webapps/manager.xml 。
你必须编辑这个文件,以确保context的docBase参数是绝对路径,也就是说CATALINA_HOME/server/webapps/manager的绝对路径。
(译者注:CATALINA_HOME即tomcat安装目录)
如果你使用的是UserDatabaseRealm,那么你需要添加一个角色和一个用户到CATALINA_BASE/conf/tomcat-users.xml文件中。接下来,编辑这个文件,添加一个名为“manager”的角色到该文件中:
<role name=”manager”>
你同样需要有一个角色为“manager”的用户。像已经存在的用户那样,添加一个新用户(改变密码使其更加安全):
<user name="manager" password="deep_dark_secret"
roles="manager"/>
然后重新启动Tomcat,访问http://localhost/manager/list,将看到一个很朴素的文本型管理界面,或者访问http://localhost/manager/html/list,将看到一个HMTL的管理界面。不管是哪种方式都说明你的Manager Web Application现在已经启动了。
Manager application让你可以在没有系统管理特权的基础上,安装新的Web应用,以用于测试。如果我们有一个新的web应用位于/home/user/hello下在,并且想把它安装到 /hello下,为了测试这个应用,我们可以这么做,在第一个文件框中输入“/hello”(作为访问时的path),在第二个文本框中输入“file:/home/user/hello”(作为Config URL)。
Manager application还允许你停止、重新启动、移除以及重新部署一个web应用。停止一个应用使其无法被访问,当有用户尝试访问这个被停止的应用时,将看到一个503的错误——“503
- This application is not currently available”。
移除一个web应用,只是指从Tomcat的运行拷贝中删除了该应用,如果你重新启动Tomcat,被删除的应用将再次出现(也就是说,移除并不是指从硬盘上删除)。
3.部署一个web应用
有两个办法可以在系统中部署web服务。
1> 拷贝你的WAR文件或者你的web应用文件夹(包括该web的所有内容)到$CATALINA_BASE/webapps目录下。
2> 为你的web服务建立一个只包括context内容的XML片断文件,并把该文件放到$CATALINA_BASE/webapps目录下。这个web应用本身可以存储在硬盘上的任何地方。
如果你有一个WAR文件,你若想部署它,则只需要把该文件简单的拷贝到CATALINA_BASE/webapps目录下即可,文件必须以“.war”作为扩展名。一旦Tomcat监听到这个文件,它将(缺省的)解开该文件包作为一个子目录,并以WAR文件的文件名作为子目录的名字。接下来,Tomcat将在内存中建立一个context,就好象你在server.xml文件里建立一样。当然,其他必需的内容,将从server.xml中的DefaultContext获得。
部署web应用的另一种方式是写一个Context XML片断文件,然后把该文件拷贝到CATALINA_BASE/webapps目录下。一个Context片断并非一个完整的XML文件,而只是一个context元素,以及对该应用的相应描述。这种片断文件就像是从server.xml中切取出来的context元素一样,所以这种片断被命名为“context片断”。
举个例子,如果我们想部署一个名叫MyWebApp.war的应用,该应用使用realm作为访问控制方式,我们可以使用下面这个片断:
<!--
Context fragment for deploying MyWebApp.war
-->
<Context path="/demo" docBase="webapps/MyWebApp.war"
debug="0"
privileged="true">
<Realm
className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Context>
把该片断命名为“MyWebApp.xml”,然后拷贝到CATALINA_BASE/webapps目录下。
这种context片断提供了一种便利的方法来部署web应用,你不需要编辑server.xml,除非你想改变缺省的部署特性,安装一个新的web应用时不需要重启动Tomcat。
4.配置虚拟主机(Virtual Hosts)
关于server.xml中“Host”这个元素,只有在你设置虚拟主机的才需要修改。虚拟主机是一种在一个web服务器上服务多个域名的机制,对每个域名而言,都好象独享了整个主机。实际上,大多数的小型商务网站都是采用虚拟主机实现的,这主要是因为虚拟主机能直接连接到Internet并提供相应的带宽,以保障合理的访问响应速度,另外虚拟主机还能提供一个稳定的固定IP。
基于名字的虚拟主机可以被建立在任何web服务器上,建立的方法就是通过在域名服务器(DNS)上建立IP地址的别名,并且告诉web服务器把去往不同域名的请求分发到相应的网页目录。因为这篇文章主要是讲Tomcat,我们不准备介绍在各种操作系统上设置DNS的方法,如果你在这方面需要帮助,请参考《DNS and Bind》一书,作者是Paul Albitz and Cricket Liu (O'Reilly)。为了示范方便,我将使用一个静态的主机文件,因为这是测试别名最简单的方法。
在Tomcat中使用虚拟主机,你需要设置DNS或主机数据。为了测试,为本地IP设置一个IP别名就足够了,接下来,你需要在server.xml中添加几行内容,如下:
<Server port="8005" shutdown="SHUTDOWN"
debug="0">
<Service name="Tomcat-Standalone">
<Connector
className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"/>
<Connector
className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8443" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0" scheme="https"
secure="true"/>
<Factory
className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
clientAuth="false" protocol="TLS" />
</Connector>
<Engine name="Standalone"
defaultHost="localhost" debug="0">
<!-- This Host is the default Host -->
<Host name="localhost"
debug="0" appBase="webapps"
unpackWARs="true"
autoDeploy="true">
<Context path=""
docBase="ROOT" debug="0"/>
<Context path="/orders"
docBase="/home/ian/orders" debug="0"
reloadable="true"
crossContext="true">
</Context>
</Host>
<!-- This Host is the first "Virtual
Host": www.example.com -->
<Host name="www.example.com"
appBase="/home/example/webapp">
<Context path=""
docBase="."/>
</Host>
</Engine>
</Service>
</Server>
Tomcat的server.xml文件,在初始状态下,只包括一个虚拟主机,但是它容易被扩充到支持多个虚拟主机。在前面的例子中展示的是一个简单的server.xml版本,其中粗体部分就是用于添加一个虚拟主机。每一个Host元素必须包括一个或多个context元素,所包含的context元素中必须有一个是默认的context,这个默认的context的显示路径应该为空(例如,path=””)。
5.配置基础验证(Basic Authentication)
容器管理验证方法控制着当用户访问受保护的web应用资源时,如何进行用户的身份鉴别。当一个web应用使用了Basic
Authentication(BASIC参数在web.xml文件中auto-method元素中设置),而有用户访问受保护的web应用时,Tomcat将通过HTTP Basic Authentication方式,弹出一个对话框,要求用户输入用户名和密码。在这种验证方法中,所有密码将被以64位的编码方式在网络上传输。
注意:使用Basic Authentication通过被认为是不安全的,因为它没有强健的加密方法,除非在客户端和服务器端都使用HTTPS或者其他密码加密码方式(比如,在一个虚拟私人网络中)。若没有额外的加密方法,网络管理员将能够截获(或滥用)用户的密码。但是,如果你是刚开始使用Tomcat,或者你想在你的web应用中测试一下基于容器的安全管理,Basic Authentication还是非常易于设置和使用的。只需要添加<security-constraint>和<login-config>两个元素到你的web应用的web.xml文件中,并且在CATALINA_BASE/conf/tomcat-users.xml 文件中添加适当的<role>和<user>即可,然后重新启动Tomcat。
下面例子中的web.xml摘自一个俱乐部会员网站系统,该系统中只有member目录被保护起来,并使用Basic Authentication进行身份验证。请注意,这种方式将有效的代替Apache web服务器中的.htaccess文件。
<!--
Define the Members-only area, by defining
a "Security Constraint" on this Application, and
mapping it to the subdirectory (URL) that we want
to restrict.
-->
<security-constraint>
<web-resource-collection>
<web-resource-name>
Entire Application
</web-resource-name>
<url-pattern>/members/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>member</role-name>
</auth-constraint>
</security-constraint>
<!-- Define the Login Configuration for this Application -->
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>My Club Members-only Area</realm-name>
</login-config>
6.配置单点登录(Single Sign-On)
一旦你设置了realm和验证的方法,你就需要进行实际的用户登录处理。一般说来,对用户而言登录系统是一件很麻烦的事情,你必须尽量减少用户登录验证的次数。作为缺省的情况,当用户第一次请求受保护的资源时,每一个web应用都会要求用户登录。如果你运行了多个web应用,并且每个应用都需要进行单独的用户验证,那这看起来就有点像你在与你的用户搏斗。用户们不知道怎样才能把多个分离的应用整合成一个单独的系统,所有他们也就不知道他们需要访问多少个不同的应用,只是很迷惑,为什么总要不停的登录。
Tomcat 4的“single sign-on”特性允许用户在访问同一虚拟主机下所有web应用时,只需登录一次。为了使用这个功能,你只需要在Host上添加一个SingleSignOn
Valve元素即可,如下所示:
<Valve className="org.apache.catalina.authenticator.SingleSignOn"
debug="0"/>
在Tomcat初始安装后,server.xml的注释里面包括SingleSignOn Valve配置的例子,你只需要去掉注释,即可使用。那么,任何用户只要登录过一个应用,则对于同一虚拟主机下的所有应用同样有效。
使用single sign-on valve有一些重要的限制:
1> value必须被配置和嵌套在相同的Host元素里,并且所有需要进行单点验证的web应用(必须通过context元素定义)都位于该Host下。
2> 包括共享用户信息的realm必须被设置在同一级Host中或者嵌套之外。
3> 不能被context中的realm覆盖。
4> 使用单点登录的web应用最好使用一个Tomcat的内置的验证方式(被定义在web.xml中的<auth-method>中),这比自定义的验证方式强,Tomcat内置的的验证方式包括basic、digest、form和client-cert。
5> 如果你使用单点登录,还希望集成一个第三方的web应用到你的网站中来,并且这个新的web应用使用它自己的验证方式,而不使用容器管理安全,那你基本上就没招了。你的用户每次登录原来所有应用时需要登录一次,并且在请求新的第三方应用时还得再登录一次。当然,如果你拥有这个第三方web应用的源码,而你又是一个程序员,你可以修改它,但那恐怕也不容易做。
6> 单点登录需要使用cookies。
7.配置用户定制目录(Customized User Directores)
一些站点允许个别用户在服务器上发布网页。例如,一所大学的学院可能想给每一位学生一个公共区域,或者是一个ISP希望给一些web空间给他的客户,但这又不是虚拟主机。在这种情况下,一个典型的方法就是在用户名前面加一个特殊字符(~),作为每位用户的网站,比如:
http://www.cs.myuniversity.edu/~username
http://members.mybigisp.com/~username
Tomcat提供两种方法在主机上映射这些个人网站,主要使用一对特殊的Listener元素。Listener的className属性应该是org.apache.catalina.startup.UserConfig,userClass属性应该是几个映射类之一。如果你的系统是Unix,它将有一个标准的/etc/passwd文件,该文件中的帐号能够被运行中的Tomcat很容易的读取,该文件指定了用户的主目录,使用PasswdUserDatabase 映射类。
<Listener className="org.apache.catalina.startup.UserConfig"
directoryName="public_html"
userClass="org.apache.catalina.startup.PasswdUserDatabase"/>
web文件需要放置在像/home/users/ian/public_html 或者 /users/jbrittain/public_html一样的目录下面。当然你也可以改变public_html 到其他任何子目录下。
实际上,这个用户目录根本不一定需要位于用户主目录下里面。如果你没有一个密码文件,但你又想把一个用户名映射到公共的像/home一样目录的子目录里面,则可以使用HomesUserDatabase类。
<Listener className="org.apache.catalina.startup.UserConfig"
directoryName="public_html" homeBase="/home"
userClass="org.apache.catalina.startup.HomesUserDatabase"/>
这样一来,web文件就可以位于像/home/ian/public_html 或者
/home/jasonb/public_html一样的目录下。这种形式对Windows而言更加有利,你可以使用一个像c:\home这样的目录。
这些Listener元素,如果出现,则必须在Host元素里面,而不能在context元素里面,因为它们都用应用于Host本身。
8.在Tomcat中使用CGI脚本
Tomcat主要是作为Servlet/JSP容器,但它也有许多传统web服务器的性能。支持通用网关接口(Common Gateway Interface,即CGI)就是其中之一,CGI提供一组方法在响应浏览器请求时运行一些扩展程序。CGI之所以被称为通用,是因为它能在大多数程序或脚本中被调用,包括:Perl,Python,awk,Unix
shell scripting等,甚至包括Java。当然,你大概不会把一个Java应用程序当作CGI来运行,毕竟这样太过原始。一般而言,开发Servlet总要比CGI具有更好的效率,因为当用户点击一个链接或一个按钮时,你不需要从操作系统层开始进行处理。
Tomcat包括一个可选的CGI Servlet,允许你运行遗留下来的CGI脚本。
为了使Tomcat能够运行CGI,你必须做如下几件事:
1. 把servlets-cgi.renametojar (在CATALINA_HOME/server/lib/目录下)改名为servlets-cgi.jar。处理CGI的servlet应该位于Tomcat的CLASSPATH下。
2. 在Tomcat的CATALINA_BASE/conf/web.xml 文件中,把关于<servlet-name> CGI的那段的注释去掉(默认情况下,该段位于第241行)。
3. 同样,在Tomcat的CATALINA_BASE/conf/web.xml文件中,把关于对CGI进行映射的那段的注释去掉(默认情况下,该段位于第299行)。注意,这段内容指定了HTML链接到CGI脚本的访问方式。
4. 你可以把CGI脚本放置在WEB-INF/cgi
目录下(注意,WEB-INF是一个安全的地方,你可以把一些不想被用户看见或基于安全考虑不想暴露的文件放在此处),或者你也可以把CGI脚本放置在context下的其他目录下,并为CGI Servlet调整cgiPathPrefix初始化参数。这就指定的CGI Servlet的实际位置,且不能与上一步指定的URL重名。
5. 重新启动Tomcat,你的CGI就可以运行了。
在Tomcat中,CGI程序缺省放置在WEB-INF/cgi目录下,正如前面所提示的那样,WEB-INF目录受保护的,通过客户端的浏览器无法窥探到其中内容,所以对于放置含有密码或其他敏感信息的CGI脚本而言,这是一个非常好的地方。为了兼容其他服务器,尽管你也可以把CGI脚本保存在传统的/cgi-bin目录,但要知道,在这些目录中的文件有可能被网上好奇的冲浪者看到。另外,在Unix中,请确定运行Tomcat的用户有执行CGI脚本的权限。
9.改变Tomcat中的JSP编译器(JSP
Compiler)
在Tomcat 4.1(或更高版本,大概),JSP的编译由包含在Tomcat里面的Ant程序控制器直接执行。这听起来有一点点奇怪,但这正是Ant有意为之的一部分,有一个API文档指导开发者在没有启动一个新的JVM的情况下,使用Ant。这是使用Ant进行Java开发的一大优势。另外,这也意味着你现在能够在Ant中使用任何javac支持的编译方式,这里有一个关于Apache Ant使用手册的javac page列表。使用起来是容易的,因为你只需要在<init-param> 元素中定义一个名字叫“compiler”,并且在value中有一个支持编译的编译器名字,示例如下:
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>
org.apache.jasper.servlet.JspServlet
</servlet-class>
<init-param>
<param-name>logVerbosityLevel</param-name>
<param-value>WARNING</param-value>
</init-param>
<init-param>
<param-name>compiler</param-name>
<param-value>jikes</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
当然,给出的编译器必须已经安装在你的系统中,并且CLASSPATH可能需要设置,那处决于你选择的是何种编译器。
10.限制特定主机访问(Restricting Access to Specific
Hosts)
有时,你可能想限制对Tomcat web应用的访问,比如,你希望只有你指定的主机或IP地址可以访问你的应用。这样一来,就只有那些指定的的客户端可以访问服务的内容了。为了实现这种效果,Tomcat提供了两个参数供你配置:RemoteHostValve 和RemoteAddrValve。
通过配置这两个参数,可以让你过滤来自请求的主机或IP地址,并允许或拒绝哪些主机/IP。与之类似的,在Apache的httpd文件里有对每个目录的允许/拒绝指定。
例如你可以把Admin Web application设置成只允许本地访问,设置如下:
<Context path="/path/to/secret_files" ...>
<Valve
className="org.apache.catalina.valves.RemoteAddrValve"
allow="127.0.0.1"
deny=""/>
</Context>
如果没有给出允许主机的指定,那么与拒绝主机匹配的主机就会被拒绝,除此之外的都是允许的。与之类似,如果没有给出拒绝主机的指定,那么与允许主机匹配的主机就会被允许,除此之外的都是拒绝的。
tomcat配置web在线后台管理
默认的时候,当我们安装完tomcat后,输入网址:http://localhost:8080/admin/会提示“TOMCAT web Server Administrator"下面是要输入用户和密码,因为默认的时候是没有管理用户的权限的用户,所以我们要创建一个:在你的tomcat/conf/下有个tomcat-users.xml打开: <?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="standard"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
</tomcat-users>
我们看到在tomcat用户配置文件里,有tomcat,manager,admin等几个角色,下面我们增加一个用户,并为他赋予全部权限:
<user username="123" password="123" roles="admin,manager,tomcat"/>保存文件,重新启动tomcat,打开http://localhost:8080/admin/,输入用户名和密码: OK!期待中的tomcat web管理后台出现了,可以用它配置数据源,连接池等,相应的配置,tomcat会自动修改server.xml文件。