天天看点

Apache恶意域名绑定的解决办法

近日接触了一款建站集成软件包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安装成功:

Apache恶意域名绑定的解决办法

该页面默认的URL路径为:http://ip/xampp/splash.php

既然有中文,我们当然就选中文咯,点击进入XAMPP的配置界面:

Apache恶意域名绑定的解决办法

在这个配置页面中,我们可以通过访问状态选项来查看所有软件包中程序的状态信息:

Apache恶意域名绑定的解决办法

在这个配置页面中,我们可以通过访问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 [email protected]

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>

ServerAdmin[email protected]

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或恶意域名的绑定了。

继续阅读