Web安全入门与靶场实战(4)- 搭建LAMP网站平台

时间:2023-01-13 12:02:11

要学习Web安全,首先就必须要对网站有所了解。

搭建网站的方法有很多,很多初学者都是利用phpStudy之类的模拟软件来一键搭建网站,但我还是更加推荐在CentOS系统中搭建一个真实的网站。当然这会涉及大量的操作,整体比较繁琐,但只有这样,才能为我们奠定良好的基础,对网站以及整个服务器才能有更为深入的了解。因为我们所需要的并非仅仅只是一个可以运行的网站,而是需要从整个服务器的角度去了解网站的整体架构,以及如何对网站进行维护和配置。

另外,我也强烈推荐各位能够购买一台云服务器,这将非常有助于提高自己的实践能力。如果我们掌握了搭建网站的方法,那么对云服务器的配置自然也就驾轻就熟了。

因而除了Kali之外,我们还需要再创建一台CentOS虚拟机,并在其中安装LAMP(Linux+Apache+MySQL+PHP)。

什么是LAMP

Web服务器主要由以下四个部分组成:操作系统、Web容器、脚本语言程序、数据库。

操作系统主要是Linux和Windows Server,目前绝大多数的服务器都是采用的Linux系统,尤其是CentOS,因为它本身就是一个专门用于服务器的操作系统。这里推荐使用CentOS7.9。

Web容器是用于提供Web服务的服务程序,就像在客户端必须要借助于浏览器才能访问网站一样,在服务器端也同样要借助于Web容器才能提供Web服务。目前常用的Web容器主要有Apache、Nginx和IIS等,我们这里使用的是Apache。

除了Apache这类Web服务程序之外,我们还需要安装脚本语言程序与之配合。因为Apache或Nginx默认只支持对静态资源的访问,本身并不具备执行脚本程序的能力。而目前的网站则基本都是采用的动态资源,这就必须要借助于外部程序来运行脚本程序,如ASP.NET、PHP或JSP等。我们这里使用的脚本程序是PHP。

数据库也是网站的核心组成部分,因为网站中的绝大部分数据都是存储在数据库中。我们这里使用的是MySQL数据库。

安装LAMP

在部署LAMP时,软件安装的一般顺序是Apache→PHP→MySQL。

首先安装Apache。

Apache的软件名和所对应的服务名都是httpd,执行下面的命令安装启动httpd服务,并将其设为开机自动运行。

 yum install httpd -y              
systemctl start httpd
systemctl enable httpd

由于Apache中已经设置好了一个默认的Web站点,因而这时在客户端输入Web服务器的IP地址就可以访问默认网站了。

Web安全入门与靶场实战(4)- 搭建LAMP网站平台

如果在客户端无法正常访问,那多半是由于防火墙或SELinux的原因,需要将服务端的防火墙和SELinux关闭。

•     关闭防火墙
停止运行服务:systemctl stop firewalld
禁止开机自动运行:systemctl disable firewalld

• 关闭SElinux
临时关闭:setenforce 0
永久关闭:
vim /etc/selinux/config
SELINUX=disabled

Apache本身只支持静态网页,所以下面我们再接着安装PHP。

PHP安装包的名称就是php,CentOS7系统中所提供的PHP版本是5.4.16。需要注意的是,PHP并不是一个独立的服务,而是被视作Apache的一个功能模块,因而在安装完PHP之后,我们只需要重启httpd服务,即可生效。

yum install php
systemctl restart httpd

下面来测试Web服务器是否可以支持PHP动态页面。

首先在网站主目录“/var/www/html”中生成一个PHP的测试网页test.php,页面代码中只有一个phpinfo()函数。当客户端访问test.php页面时,会先在服务器端执行该函数,然后将函数执行结果返回给客户端。

vim /var/www/html/test.php
<?php
phpinfo( );
?>

然后在客户端浏览器中输入URL “http://服务器IP/test.php”访问测试页面,如果成功出现下图所示页面,则证明Apache已经可以支持PHP动态网页了。

Web安全入门与靶场实战(4)- 搭建LAMP网站平台

在下面继续安装MySQL之前,我们还需要再安装一个软件包php-mysql,只有安装了这个软件包之后,PHP才可以操作MySQL数据库。当然这个软件包也可以在安装PHP软件包时一同安装。安装完成后,同样需要重启httpd服务使之生效。

yum install php-mysql
systemctl restart httpd

最后再安装MySQL。在CentOS7系统中默认提供的是MySQL的分支MariaDB,但MariaDB与MySQL完全兼容,所以我们完全可以使用它作为MySQL的替代品。

MariaDB服务的安装包名称为mariadb-server,安装完软件之后,仍是启动服务,并将之设为开机自动运行。

yum install mariadb-server -y
systemctl start mariadb
systemctl enable mariadb

下面还需要对mariaDB做一些初始化的操作,主要是设置mariaDB的管理员密码。mariaDB的管理员账号也叫root,但并非Linux中的根用户,他们只是名字相同而已。

可以利用CentOS中的mysqladmin命令为mariaDB的管理员账号设置密码:

mysqladmin -u root password "123"

然后就可以利用客户端工具mysql来登录mariaDB了,成功登录之后可以进入mariaDB的交互模式,使用quit或exit命令可以退出。

[root@Server ~]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 154
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

下面我们来测试是否可以利用PHP来连接mariaDB数据库。仍然在网站主目录“/var/www/html”中创建一个测试页面test2.php,页面代码如下。

<?php
$conn=mysql_connect("127.0.0.1","root","123");
if ($conn) {
echo "success";
}else{
echo "fail";
}
mysql_close($conn);
?>

这段代码表示以root用户的身份,使用密码“123”来连接位于本地服务器上的mariaDB数据库,如果连接成功,则输出“success”,否则输出“fail”。

在客户端通过URL“http://服务器IP/test2.php”访问该测试页面,如果出现“success”则表示之前的配置全部成功。

至此,一个功能完备的LAMP平台就搭建好了。