中国网管论坛's Archiver

iamshiyu 发表于 2008-4-22 09:51

开始写apache学习笔记——第一部分升级

一直没有好好学过apache,从前做网管,只要做好平台的工作就行了。结果这次新工作不得不开始学apache……网站的编辑对apache也不熟悉,而且忙得不能分身,只好我来干了。
回家扫描公司网页,发现提示:
http TRACE 跨站攻击
你的webserver支持TRACE 和/或 TRACK 方式。 TRACE和TRACK是用来调试web服务器连接的HTTP方式。
支持该方式的服务器存在跨站脚本漏洞,通常在描述各种浏览器缺陷的时候,把"Cross-Site-Tracing"简称为XST。
攻击者可以利用此漏洞欺骗合法用户并得到他们的私人信息。
解决方案: 禁用这些方式。
如果你使用的是Apache, 在各虚拟主机的配置文件里添加如下语句:
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
如果你使用的是Microsoft IIS, 使用URLScan工具禁用HTTP TRACE请求,或者只开放满足站点需求和策略的方式。
……
吓坏了,赶紧修改apache的配置文件httpd.conf
竟然提示没有rewrite模块,彻底瞎了,四处询问无果——也不是完全无果,还是有一些提示的。只好自己抓起apache手册仔细研究……从前几次看apache手册,但都没能看进去,看到一大堆的模块介绍,根本不知道是什么意思,所以没看两眼就放弃了。
这次因为火烧眉毛,已经翻了不少资料,另外比从前了解的多了一些,再看的时候终于明白点儿了……个人觉得像要好好研究apache最简单的方法不如自己搭建一个论坛,论坛源代码可以下discuz的或者别的开源社区,比如phpbb之类的,搭建起来就会有趣多了,也会直观许多。建议apache参考手册的这几个部分一定要顺序地,仔细地看下来。看不懂,只能说明你学习能力不强(比如我这样的干看看不懂)或者火候还不够(像我以前没怎么接触的时候):编译与安装 启动 停止与重新启动 运行时配置指令 。
这几个章节掌握了,基本的apache就掌握了——自学能力不强的各位,动手做很重要。
言归正传,说说我怎么处理的。
我们的apache服务器是网站编程人员安装的,或许他接触的版本比较早,安装的时候是用了错误的参数,导致rewrite模块并没有被编译成.so模块,所以根据扫描工具提示修改http.conf的时候会报告没有rewrite模块,仔细看了下手册,做了如下工作:
因为我们的apache是通过tar的源代码方式安装的,所以可以用这样的方式,如果不是源代码方式安装,恐怕得另外想辙咯。
首先在安装目录下——我的/home/www,cp build/config.nice到源程序目录/home/soft/apache/里——因为安装过一次,里面有个,而且与build/下的那个一样,直接把原来那个config.nice备份一个(外一没升级成功呢?),然后修改config.nice,原内容为:
#! /bin/sh
#
# Created by configure
"./configure" \
"--prefix=/home/www" \
"--enable-module=so" \
"--enable-module=rewrite" \
"$@"
修改为
#! /bin/sh
#
# Created by configure
"./configure" \
"--prefix=/home/www" \
"--enable-module=so" \
"--enable-module=rewrite" \
"--enable-rewrite=shared" \
"$@"
原因很简单,--enable-module=rewrite没起作用,只好用--enable-rewrite=shared这个参数从新编译。
然后./config.nice——这个相当于从前的configure哦,可执行的。
一大堆的准备工作,应该不会报错,然后make,又是一大堆,没报错的话make install就行了。再看/home/www/build目录下,亲爱的rewrite.so文件出现了。再次测试新家的那些脚本,依然报告没有rewrite模块,怎么回事?这个时候东问西问的辅助作用就来了,一个哥们提醒过首先要确保httpd.conf中有
LoadModule rewrite_module modules/mod_rewrite.so
这句才行,添上,重新测试,终于顺利通过了。
呵呵。其实说起来很简单,却花费了我整整6个多小时的时间,看来需要恶补了。:PP:

iamshiyu 发表于 2008-4-22 10:04

第二章,虚拟机

其实真的照我说的仔细看懂了:编译与安装 启动 停止与重新启动 运行时配置指令 ,这几个章节,我下面的问题还是很好解决的。
网站的管理后台和主页都在同一个端口上,而且目录没有区分,导致任何人都可以登录到后台——主页是[url]www.xxxx.com[/url],而管理后台是[url]www.xxxx.com/admin[/url],这可是个麻烦,我的经验告诉我,应该把后台转到另外的端口上,然后禁止随意访问,这样会安全的多。然而因为俺apache盲,不知道该怎么下手。源httpd.conf这么写的
Listen 80
<VirtualHost *>
        DocumentRoot /home/www/xxxx/
        ServerName [url]www.xxxx.com[/url]
        DirectoryIndex  index.php index.html
#Forbidden some function;
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
</VirtualHost>
看了手册后得知,首先需要让apache服务器监听希望开通的端口,所以加一句
listen 9000
然后是虚拟机中应该可以规定监听哪个端口,并且可以对系统中的文件和目录进行设定。
所以改成这样:
<VirtualHost IP地址:80>
        DocumentRoot /home/www/xxxx/
        ServerName [url]www.xxxx.com[/url]
<Directory /home/www/xxxx/admin/>
        Order deny,allow
        Deny from all
</Directory>
        DirectoryIndex  index.php index.html
#Forbidden some function;
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
</VirtualHost>
这样就不能通过访问主页来访问后台管理界面了。
再添加一个新的虚拟主机:
<VirtualHost IP地址:9000>
        DocumentRoot /home/www/xxxx/
        ServerName [url]www.xxxx.com[/url]
<Directory /home/www/xxxx/admin/>
        Order deny,allow
        allow from all
</Directory>
        DirectoryIndex  index.php index.html
#Forbidden some function;
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
</VirtualHost>
这样,所有的人可以通过访问[url]www.xxxx.com:9000/admin[/url]访问后台管理页面了。然后我就可以通过iptables在网络层对管理和发布进行分开管理了。:lol
其实也是很基础很简单的东西,就当个个人的总结吧。

iamshiyu 发表于 2008-4-22 10:19

第三章,编译动态加载的模块

上次升级的时候发现,mod_rewrite虽然加入进来了,但是如果再想加入mod_deflate模块——将网页内容压缩后再传输的一个模块,有利于提高带宽利用率,却失败了,config.nice的时候就有点问题,make报错,进行不下去。
高人指点:
看看manual吧
单独编译module是apxs2 -cia mod_xxx.c
一看手册,果然有apxs - Apache 扩展工具这么一章。
首先
# bin/httpd -l
Compiled in modules:
  core.c
  mod_access.c
  mod_auth.c
  mod_include.c
  mod_log_config.c
  mod_env.c
  mod_setenvif.c
  prefork.c
  http_core.c
  mod_mime.c
  mod_status.c
  mod_autoindex.c
  mod_asis.c
  mod_cgi.c
  mod_negotiation.c
  mod_dir.c
  mod_imap.c
  mod_actions.c
  mod_userdir.c
  mod_alias.c
  mod_so.c
~~~~~~~
mod_so.c的存在说明,我的apache是dso方式安装的,可以动态加载模块。
然后
路径/apxs -i -a -c 路径/mod_deflate.c
哗哗提示,最后的提示
[activating module `deflate' in /home/www/conf/httpd.conf]
检查/home/www/modules/
发现已经多了mod_deflate.so,
再看httpd.conf,发现多了一行:
LoadModule deflate_module     modules/mod_deflate.so
运行apachectl -S测试,顺利运行,呵呵。这下子deflate装上了。

iamshiyu 发表于 2008-4-22 10:35

附apache2.2中文手册吧

isbasic 发表于 2008-4-22 13:32

呵呵,不错啊,我还准备做一些man page的翻译工作的,这两天看cp就开始头疼了。

没想到你这边apache就开始有进展了啊

iamshiyu 发表于 2008-4-22 14:23

临时抱佛脚……惭愧啊。:L:

isbasic 发表于 2008-4-23 03:04

呵呵,没办法,自己英文基础也不行,不过翻译一些基础内容对自己掌握Linux还是有很大的帮助的,不过这个同样是一个见效慢,但好在持久的一个大工程啊。。。

iamshiyu 发表于 2008-4-23 09:11

英语?translate.google.com,能节省不少时间……起码语法的问题能节省不少时间。:lol
我现在翻译的大部分文档都是在google辅助下翻译的,并非取巧,在底子不好又没有毅力死啃书的时候,translate.google.com也能潜移默化的提高自己的水平。
前两天做了些英语的考题,感觉比起上学的时候英语水平还是有了一点进步。从前对于语法题目非常茫然,现在居然也有了一些感觉,阅读的正确率也提高了不少呢。:lol

isbasic 发表于 2008-4-24 08:22

Linux有翻译工具,stardict,咱国人自己开发的,而且也有网络翻译功能,主要还是要自己认真去看。工具倒是其次的呵呵。

iamshiyu 发表于 2008-4-24 09:31

[quote]原帖由 [i]isbasic[/i] 于 2008-4-24 08:22 发表 [url=http://bbs.bitscn.com/redirect.php?goto=findpost&pid=1568522&ptid=166518][img]http://bbs.bitscn.com/images/common/back.gif[/img][/url]
Linux有翻译工具,stardict,咱国人自己开发的,而且也有网络翻译功能,主要还是要自己认真去看。工具倒是其次的呵呵。 [/quote]
呵呵,你用用就知道了,translate.google不同于一般的翻译软件……特点是整文的翻译。查单词我一般去水母直接查,水母提供字典。:loveliness:,英语不好,没办法。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 1999-2008 bbs.bitsCN.com