开始写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:
第二章,虚拟机
其实真的照我说的仔细看懂了:编译与安装 启动 停止与重新启动 运行时配置指令 ,这几个章节,我下面的问题还是很好解决的。网站的管理后台和主页都在同一个端口上,而且目录没有区分,导致任何人都可以登录到后台——主页是[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
其实也是很基础很简单的东西,就当个个人的总结吧。
第三章,编译动态加载的模块
上次升级的时候发现,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装上了。 附apache2.2中文手册吧 呵呵,不错啊,我还准备做一些man page的翻译工作的,这两天看cp就开始头疼了。
没想到你这边apache就开始有进展了啊 临时抱佛脚……惭愧啊。:L: 呵呵,没办法,自己英文基础也不行,不过翻译一些基础内容对自己掌握Linux还是有很大的帮助的,不过这个同样是一个见效慢,但好在持久的一个大工程啊。。。 英语?translate.google.com,能节省不少时间……起码语法的问题能节省不少时间。:lol
我现在翻译的大部分文档都是在google辅助下翻译的,并非取巧,在底子不好又没有毅力死啃书的时候,translate.google.com也能潜移默化的提高自己的水平。
前两天做了些英语的考题,感觉比起上学的时候英语水平还是有了一点进步。从前对于语法题目非常茫然,现在居然也有了一些感觉,阅读的正确率也提高了不少呢。:lol Linux有翻译工具,stardict,咱国人自己开发的,而且也有网络翻译功能,主要还是要自己认真去看。工具倒是其次的呵呵。 [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]
