Apache虚拟主机对网站目录或特定文件进行访问控制的小结

这个问题的学习起因于前几天一个叫Mike的马来西亚的ip连续几天往我的博客里灌垃圾评论。一天大概10条,每条大概5屏那么多内容。我用的Akismet反垃圾评论插件还是需要人工核实一下看错杀没有,而且,几乎一半的垃圾评论都会漏掉。我的博客垃圾评论不多,一天就20条左右。一般的短的垃圾评论一分钟就处理了。可那个Mike的垃圾评论太长了。于是,我只好封了他的ip了。几天过去了,再没见他的垃圾评论了。下面说一下我在这个问题上的一些心得小结。

我用的虚拟主机是盘古的linux+cpanel主机,在cpanel控制面板有一个功能叫“IP Deny Manager”,在里面把你要禁止访问你的网站的ip加进去就行了。如果要封一个IP段,把IP段的开始部分填上。如封1.2.3.*这个IP段的所有IP,就填1.2.3.。如果要封来自一个网站的访问,就填上这个网站的域名,系统自动把域名解析成IP再填进禁止列表。如果不作进一步的深研,你要禁止一个IP也就到此为止了。但是我还朝前走了几步。

那么cpanel控制面板是怎么实现对IP的禁止的呢?答案是它把配置信息添加进了网站根目录的.htaccess文件中。假如我禁止了两个IP,1.2.3.4,1.2.3.5,那么cpanel在.htaccess文件的最后添加了下面一段内容:

<Files 403.shtml>
order allow,deny
allow from all
</Files>

deny from 1.2.3.4
deny from 1.2.3.5

相应基础知识请查看我的网摘在apache下实现网站目录的访问控制(links for 2007-10-07)。这里要特别提一下<Files>片断的意思,上面这个片断的意思是允许任何人(包括后面被禁止了的IP)都可以访问403.shtml这个403出错文件。这个403.shtml你可以在cpanel的相应功能中编辑,可以返回给被禁止IP的用户。我的内容是:

Sorry, your IP is forbidden. If you aren't a spams spreader, please contact me with this email: mdx-xx#tom.com(change # to @ for email). Thanks.

被我误禁止IP的朋友可以用其中的邮件和我联系。

另外,同理,如果你想对特定文件名的文件进行访问控制,如禁止IP 1.2.3.4 访问文件test.html,可以再在前面的<Files>...</Files>加上一个片断如下:

<Files test.html>
order allow,deny
allow from all
deny from 1.2.3.4
</Files>

意思是除了IP 1.2.3.4 外,所有人都可以访问系统中名为test.html的文件,片断中间的order指明allow和deny起作用的顺序,如上面,因为“order allow,deny”中deny在allow后面,所以deny就会排除掉allow中允许的IP 1.2.3.4 了。详情见上提的网摘。这里还要特别注意的是,写在这个根目录.htaccess的文件名的设置会对各级目录中相同的文件起作用!例如,在根目录下有个子目录中包含了名为test.html的文件,那么这个文件同样是除了IP 1.2.3.4 不能访问外其余人都可以访问。

写在子目录中的.htaccess文件中的访问控制配置以此类推。

实际上,cpanel的一些配置管理就是通过操作根目录下的.htaccess文件进行的。如:转向设置。所以,如果你同时用手工在对这个文件进行操作的话,在cpanel的操作结束后,最好检查一下你的这个文件。以防止冲突。

Apache的配置功能非常灵活和强大,上面的这点知识只是一点皮毛。

下面是两点存疑:
1、我在上面网摘中的文章中看到可以把域名直接写在.htaccess文件中,从而禁止对应域名的IP。但是我试了一下,手工把域名加进禁止列表如“deny from adomain.com”,并不能实现对这个域名所在IP的禁止。我是通过一个代理服务网站来做测试的。不知道这个是什么原因?是cpanel的虚拟主机对这个直接写域名的方式不允许吗?

2、如何在顶级目录的.htaccess中实现对特定目录的访问控制?如实现对/test/subdir目录的访问控制?我知道可以在/test/subdir目录放一个.htaccess文件的实现方法,但是在根目录下的.htaccess文件中怎么实现呢?我也知道一个叫<Directory>的片断应该可以实现这个的,但是没有进一步去学习了,存疑于此。

如果我的日记中有什么错漏的话,请朋友提示一下。谢谢。

Pidgin IM集成软件及数个网站收藏(links for 2007-10-05)

Ubuntu Forums和ubuntu下不能用ntp服务网络校时的讨论(links for 2007-09-30)

  • Ubuntu Forums

    Ubuntu is a complete Linux-based operating system, freely available with both community and professional support. By JOINING US today you can participate in our active and growing community.

    (tags: linux ubuntu forums 网站收藏)

  • Can't synchronize time with Internet servers - Ubuntu Forums

    I've read a few threads here about trying to get the system clock to sync with Internet servers, and they all seem to go into "nightmare territory" (by my definition). I don't know why this is... if it's not ready, maybe it shouldn't be an option ...

    (tags: linux ubuntu ntp)

Ubuntu下ADSL拨号成功后启动ntpdate网络校时和77个网络相关linux应用小技巧(links for 2007-09-29)

Ubuntu的网络校时怎么不起作用?

我在ubuntu下使用的是ADSL拨号上网,系统启动自动拨号连接。

昨天,我在ubuntu6.0.6下修改系统时间的时候发现可以使用网络校时(即ntp)。点击设置界面上的“立即同步”,系统时间就自动修正了。这个选项上面有一项“定期与internet服务器同步时钟”的选项,我勾选了,默认的服务器有”ntp.ubuntu.comt和127.127.1.0“,我又添加设置了另外两个ntp服务器为“cn.pool.ntp.org和hk.pool.ntp.org”,时区选的是“Asia/Chongqing”。在勾选的时候,系统要求安一个ntp的包,也按照提示安上了。确认后退出。

但是,我发现这个“定期与internet服务器同步时钟”没有起作用!我把时间故意修改成多一个小时,然后重新启动系统。时间还是我修改过的,没有被更正过来!那这个有什么作用呢?!我搜索有关ntp的网页(Linux架设网络校时服务器、Linux和windows操作系统网络校时(links for 2007-09-28)),查看了一下相关的文件。在ntp服务的日志里(/var/log/ntpstats),查看当天的记录,确实每隔一分钟就记录了一次,部分日志记录如下:

54372 35619.638 202.130.120.114 9014 -3596.757066134 0.112971837 0.001455873 3597.447984995
54372 35621.527 127.127.1.0 9014 0.000000000 0.000000000 0.000945000 0.000001907
54372 35622.606 218.75.4.130 9414 0.619085926 0.076016308 0.002438134 1359.704375162
54372 35625.011 91.189.94.145 9614 0.661968500 0.462467000 0.004347983 1359.715265621
54372 35683.702 202.130.120.114 9014 -3596.757066134 0.112971837 0.002246536 3330.589801081
54372 35685.672 218.75.4.130 9414 0.619085926 0.076016308 0.003047042 1922.914781665
54372 35687.585 127.127.1.0 9614 0.000000000 0.000000000 0.000990000 0.000001907
54372 35690.059 91.189.94.145 9014 0.661968500 0.462467000 0.005074957 1922.927712896

其中202.130.120.114(hk.pool.ntp.org)中反映出了一个小时的差异,127.127.1.0是本地的错误的时间中反映的是没有差异,而另外两个服务器却是不到1秒的差异(我猜测数据的第5列是时间差),明显是错的。不知是否这两台服务器当时不能连接?

从日志中看到,ntp系统发现了错误,却没有自动把系统的时间给纠正过来,不知是怎么一回事?是不是我在什么地方没做对?

根据我在前面搜索的资料和这篇文章Bug #48506 in ntp (Ubuntu): “Run ntpdate after ppp interface comes up”,我把原本是在/etc/network/if-up.d下的ntpdate和ntp-server两个文件拷贝到/etc/ppp/ip-up.d目录下,当系统启动后,错误的时间就自动纠正了。我估计前一个目录下的内容是网卡启动执行,后一个目录下的内容才是ADSL连接成功后执行。

根据我的理解,这个纠正是ntpdate 命令的功劳,并不是启动了ntp server的ntpd的功劳。而据文章Time Synchronisation with NTP的内容,ntp server的ntpd可以有规律的根据远程ntp服务器校正本地时间。而我的实验这个ntpd却是不起作用的。前面只拷贝那个ntpdate文件应该就行了。或者,自己写一个包含类似“ntpdate hk.pool.ntp.org”内容的文件放在里面也应该行。

这是怎么一回事?

Linux架设网络校时服务器、Linux和windows操作系统网络校时(links for 2007-09-28)

在线新华字典与mplayer的3个问题与解决(links for 2007-09-26)

Ubuntu下用mplayer+firefox+mplayerplug-in+MediaPlayerConnectivity看在线电影碰到的两个问题(links for 2007-09-25)

在ubuntu linux下安装mplayer心得及问题

在网上搜索了一些资料(在linux下使用mplayer播放影音(links for 2007-09-22)linux下screen的使用及Ubuntu下安装firefox插件和MPlayer(links for 2007-09-23)),自己照着做,终于在ubuntu 6.0.6下成功安装了linux下的万能播放器mplayer。自己试着播放avi文件和wmv电影文件和mp3音乐文件效果都很不错。下面把有关心得分享一下。

1、用ubuntu的新得立包管理程序中可以方便的安装这个程序,用安装MPlayer - Ubuntu中文 介绍的方法用apt-get命令也行。但是,我发现一个问题,在我的机器上用来播放清晰度较高的avi文件时,图像缓慢,声音正常。提示好像是什么video设备选择、参数设置、或者机器慢等等。我估计是机器慢了(赛扬1G),ubuntu的二进制包不适合。通过源码安装就一切OK了。

2、通过源码安装mplayer。

1)首先,是到http://www4.mplayerhq.hu/design7/dload.html下载源码,二进制的codecs(解码器,包含各种格式的影音文件的解码)和skin(皮肤),我下载的分别是:MPlayer v1.0rc1 source(http://www1.mplayerhq.hu/MPlayer/releases/MPlayer-1.0rc1.tar.bz2),Linux x86 20061022(http://www1.mplayerhq.hu/MPlayer/releases/codecs/essential-20061022.tar.bz2),Bluehttp://www.mplayerhq.hu/MPlayer/skins/Blue-1.7.tar.bz2

2)然后,是把解压后的essential-20061022.tar.bz2下的文件全部拷贝到目录/usr/local/lib/codecs/下面;

解压MPlayer-1.0rc1.tar.bz2到~/(也可以解压到/tmp,不过开机重启后就自动消失了),先阅读里面的README,按照里面的指令依次用:./configure --enable-gui 配置,用make编译,用sudo make install安装。如果中途提示你少了这样包那样库的,你就在新得立软件包或者用apt-get命令里安装相应的东西,再不清楚就根据相应的出错信息google一下,像这样的错误“Error: The GUI requires PNG support, please install libpng and libpng-dev packages.”

可以用安装这个包解决:sudo apt-get install libpng12-dev

而这个错误:(MPlayer compiling error)“Error: X11 support required for GUI compilation”
可以通过在新得立包管理程序里安装这两个包来解决:
xorg-dev (x windows devel kit)
libgtk2.0-dev (gtk devel kit)

最后,执行的时候会提示:(http://blog.chinaunix.net/u/12859/showart_279548.html)“New_Face failed.Maybe the font path is wrong.
Please supply the text font file(~/.mplayer/subfont.ttf).”,可以这样解决:

cd /usr/share/fonts/chinese/TrueType/
cp ukai.ttf ~/.mplayer/subfont.ttf

还有,如果提示没有声音设备之类的信息,试着把设置里的声音设备改为oss的试试,我的video设备选的是xv。

于是,通过编译安装的mplayer就可以用了。

不过,两个问题依然无法解决,记录在此:

1、realplay10可能由于新安装libgtk2.0-dev之类的原因,在使用打开文件的时候会退出,估计跟字体编码有关,不过,它的功能用mplayer可以代替;下载它的源码不知怎么编译安装;好多文件夹,没有看到REAME或者INSTALL文件。

2、不能用firefox在线看电影,我安装了mplayerplug-in(用源码安装和包管理安装都试过),安装了Firefox 扩展MediaWrap 或者MediaPlayerConnectivity都不能在线看电影(如:http://hnnn.net 的)。

另外,网上的这篇类似的文章可以对照着参考:Ubuntu6.06 Linux安装Mplayer过程解析

linux下screen的使用及Ubuntu下安装firefox插件和MPlayer(links for 2007-09-23)