近日接触了一款建站集成软件包XAMPP(Apache+MySQL+PHP+PERL)。这个软件包原来的名字是LAMPP,但是为了避免误解,最新的几个版本就改名为 XAMPP 了。它可以在Windows、Linux、Solaris三种操作系统下安装使用,支持多语言:英文、简体中文、繁体中文、韩文、俄文、日文等。
我所试验的环境是RedHat5,安装过程很简单,首先解压软件包。一般我喜欢放在/opt目录下,因为/opt目录通常是用来放应用和软件包的。选择好路径后指定解压目录:
tar zxvf xampp-linux-1.7.7.tar.gz /opt
解压完成后,xampp会在/opt下生成lampp目录,通常该目录的路径为:/opt/lampp,直接运行以下命令对XAMPP软件包进行初始化安装。
/opt/lampp/lampp start
Starting XAMPP for Linux 1.7.7...
XAMPP: Starting Apache with SSL (and PHP5)...
XAMPP: Starting MySQL...
XAMPP: Starting ProFTPD...
XAMPP for Linux started.
XAMPP提示成功启动,在浏览器中输入http://ip,如果打开以下界面说明XAMPP安装成功:
该页面默认的URL路径为:http://ip/xampp/splash.php
既然有中文,我们当然就选中文咯,点击进入XAMPP的配置界面:
在这个配置页面中,我们可以通过访问状态选项来查看所有软件包中程序的状态信息:
在这个配置页面中,我们可以通过访问phpinfo()来查看所有apache与php整合的信息:
http://ip/xampp/phpinfo.php
此软件包还整合了phpMyAdmin数据库管理工具,地址为:
http://ip/phpmyadmin/
其他功能用处不大,我就不详细说明了,主要记住以上两个工具的访问地址即可。软件安装完成后,默认状态下存在着较大的安全隐患。
1、XAMPP页面可以被网络中的任何人访问,该页面未使用任何加密和验证过程,当XAMPP程序安装在互联网服务器中,任何人都可以通过该地址访问XAMPP信息,存在安全隐患。
2、phpMyAdmin的用户未设置密码,phpMyAdmin在MySQL安装时缺省没有设置密码,为了避免触发任何安全问题,在软件包确定使用前,应对数据库所有帐户进行密码设置。
3、在XAMPP安装完成时,会默认安装ProFTPD工具,此FTP帐户默认密码是lampp,在软件包确定使用前,应对FTP帐户的密码进行修改。
4、删除或修改敏感的文件。在XAMPP安装时,集成了两个工具, phpinfo()和 phpMyAdmin,当服务器暴露在互联网时,任何人都可以通过访问这两个工具获取服务器的详细信息,若MySQL未修改初始密码,非法用户就可以通过phpMyAdmin对数据库进行修改、删除操作。因此,在服务器上线前,应尽量删除以上工具,如不能删除,请尽量将文件、文件夹名称设置的较为隐蔽。
说了这么多与恶意域名绑定无关的事,也该言归正传了,XAMPP的默认WEB文档存放路径为:
/opt/lampp/htdocs
在使用http://ip访问该网站时会出现XAMPP的默认欢迎页面,也就是刚才出现的那个页面,下面就用这个页面来当作真正做好的网站首页进行测试:
我要实现的功能是www.a.com www.c.com能够访问该页面;使用网站IP地址和其他域名均不能访问该网站。要实现自定义域名能够顺利访问指定的网站,需要在本机的hosts中添加记录。
C:\Windows\System32\drivers\etc\hosts
101.154.0.224 www.a.com
101.154.0.224 www.b.com
101.154.0.224 www.c.com
101.154.0.224 www.d.com
101.154.0.224 www.e.com
101.154.0.224是我安装XAMPP软件集成包的LINUX服务器,修改完成后,我们使用IE浏览器使用这几个域名访问下试试看,如果配置无误,应该都可以打开XAMPP的主页面。至此我们的准备工作就完成了。
接下来开始配置apache,首先禁止使用IP地址访问欢迎页面,打开apache的配置文件
/opt/lampp/etc/httpd.conf
在该文件结尾加上以下内容:
NameVirtualHost 101.154.0.224:80 //声明虚拟主机监听端口为80
<VirtualHost 101.154.0.224:80> //创建101.154.0.224的虚拟主机
ServerName 101.154.0.224 //虚拟主机名称,当用户使用101.154.0.224访问该站点时,将执行ServerName相同的虚拟主机配置。
<Location /> //设定一个区域,当用户使用101.154.0.224访问站点时,执行下列区域内的配置
Order Allow,Deny //拒绝来自任何地址的访问
Deny from all
</Location>
</VirtualHost>
完成以上配置后,我们用http://ip访问网站主页面时会提示没有权限访问目录。
Forbidden
You don't have permission to access / on this server.
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request
根据上面对apache配置文件httpd.conf的修改,apache禁止了所有访问该网站的方式,也就是说,任何以IP或域名的方式均无法访问该站点了。如果不添加例外虚拟主机,所有域名将无法与这台WEB Server绑定。
为了让www.a.com www.c.com两个域名可以访问该网站,我们需要在httpd.conf中添加例外的虚拟主机,具体如下:
<VirtualHost www.a.com:80>
ServerAdmin wangchen@bjca.org
DocumentRoot /opt/lampp/htdocs
ServerName www.a.com
ServerAlias www.a.com www.c.com a.com w.a.com ww.a.com
<Directory "D:/PHPServer/htdocs">
AllowOverride All
Order allow,deny
Allow from all
Options -Indexes
</Directory>
</VirtualHost>
需要注意的是,如果测试机无法访问互联网,就无法解析域名地址。配置文件修改后需要对apache进行重启操作,apache在重启时需要检测设置的虚拟主机域名是否可以解析,如不能解析,程序也将无法启动。解决办法与Windows相同,使用hosts文件新建自定义域名。Hosts文件在:
/etc/hosts
添加解析地址后,我们使用IE访问www.a.com,如果出现主页的页面,说明配置成功了,根据添加www.a.com的方法继续添加www.c.com
<VirtualHost www.c.com:80>
ServerAdminwangchen@bjca.org
DocumentRoot /opt/lampp/htdocs
ServerName www.c.com
ServerAlias www.c.com c.com w.c.com ww.c.com
<Directory "/opt/lampp/htdocs">
AllowOverride All
Order allow,deny
Allow from all
Options -Indexes
</Directory>
</VirtualHost>
重启apache后,使用www.c.com访问主页的页面,如果www.a.com成功,那么www.c.com基本也不会有问题。www.a.com和www.c.com访问正常后,使用www.b.com和www.d.com对网站进行访问测试,如果出现类似下列信息页面,说明配置成功。
Forbidden
You don't have permission to access / on this server.
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request
最后介绍一下ServerAlias选项,此选项是Server别名,用户通过访问别名也可以访问到该主机,所以,ServerAlias选项可以添加多个域名,将所有可以绑定该主机的域名添加到别名中,可以减少添加ServerName虚拟主机的工作量,但这样做可能存在问题。
根据以上的配置,我们的站点基本可以阻止IP或恶意域名的绑定了。