1. Apache的简介:
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。
2. Apache的安装:
安装apache,命令为dnf -y install httpd
。
等待安装完成后,我们启动服务并设定开机自启:
systemctl start httpd systemctl enable httpd
随后我们通过客户机的浏览器打开,输入自己本机的IP,如果能看到Apache的默认页面,说明安装成功。
随后我们通过客户机的浏览器打开,输入自己本机的IP,如果能看到Apache的默认页面,说明安装成功。
3. Apache的配置文件
Apache主要目录:
/etc/httpd/conf/httpd.conf #apache的主配置文件 /etc/httpd/ #apache配置文件的目录 /var/www/html #apache默认存放网页的目录
/etc/httpd/conf/httpd.conf
文件详解:
34 ServerRoot "/etc/httpd" #定义Apache的配置文件目录 45 Listen 80 #定义Apache的端口 69 User apache #定义启动用户 70 Group apache #定义启动用户组 89 ServerAdmin root@localhost #定义管理员邮箱 98 #ServerName www.example.com:80 #定义服务器的域名 122 DocumentRoot "/var/www/html" #定义网页目录 167 DirectoryIndex index.html #定义默认首页文件
4. Apache的日志
利用tail -f /var/log/httpd/*
监控apache日志。
当我们安装并启动Apache后,Apache会自动生成两个日志文件,在linux系统中他们保存在/var/log/httpd/
下,这两个日志文件分别是访问日志access_log和错误日志error_log。如果使用 SSL 服务的话,还可能存在 ssl_access_log和ssl_error_log 和 ssl_request_log 三种日志文件。
访问日志access_log记录了所有对Web服务器的访问活动,下面是访问日志access_log中的一个标准记录
192.168.10.110 - - [28/Mar/2022:08:29:09 +0800] "GET /login.php HTTP/1.1" 200 1415 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36"
日志字段所代表的内容如下:
-
远程主机IP:表明访问网站的是谁
-
空白(E-mail):为了避免用户的邮箱被垃圾邮件骚扰,第二项就用“-”取代了
-
空白(登录名):用于记录浏览者进行身份验证时提供的名字。
-
请求时间:用方括号包围,而且采用“公用日志格式”或者“标准英文格式”。 时间信息最后的“+0800”表示服务器所处时区位于UTC之后的8小时。
-
方法+资源+协议:服务器收到的是一个什么样的请求。该项信息的典型格式是“METHOD RESOURCE PROTOCOL”,即“方法 资源 协议”。
-
状态码:请求是否成功,或者遇到了什么样的错误。大多数时候,这项值是200,它表示服务器已经成功地响应浏览器的请求,一切正常
-
发送字节数:表示发送给客户端的总字节数。它告诉我们传输是否被打断(该数值是否和文件的大小相同)。把日志记录中的这些值加起来就可以得知服务器在一天、一周或者一月内发送了多少数据。
-
UA信息:访问者的user-agent信息。
下面是错误日志的格式:
5.搭建LAMP体系
LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写: Linux,操作系统 Apache,网页服务器 MariaDB或MySQL,数据库管理系统(或者数据库服务器) PHP、Perl或Python,脚本语言 虽然这些开放源代码程序本身并不是专门设计成同另几个程序一起工作的,但由于它们的廉价和普遍,这个组合开始流行(大多数Linux发行版本捆绑了这些软件)。当一起使用的时候,它们表现的像一个具有活力的“解决方案包”(Solution Packages)。其他的方案包有苹果的WebObjects(最初是应用服务器),Java/J2EE和微软的.NET架构。 “LAMP包”的脚本组件中包括了CGIweb接口,它在90年代初期变得流行。这个技术允许网页浏览器的用户在服务器上执行一个程序,并且和接受静态的内容一样接受动态的内容。程序员使用脚本语言来创建这些程序因为它们能很容易有效的操作文本流,甚至当这些文本流并非源自程序自身时也是。正是由于这个原因系统设计者经常称这些脚本语言为胶水语言。 Michael Kunze在一篇为德国计算机杂志《c't》(1998,第12期,230页)而写的文章中使用了缩略语“LAMP”。这篇文章意在展示一系列的自由软件成为了商业包的替换物。由于IT世界众所周知的对缩写的爱好,Kunze提出“LAMP”这一容易被市场接受的术语来普及自由软件的使用。
一些人借用LAMP来描述一类可定制组成的系统,而不是制造一系列新词,并用它来表示这些系统和统一打包的页面开发环境的不同(例如ASP,.NET和J2EE)。 举例来说,Wikipedia,免费自由的百科全书,运行的一系列软件具有LAMP环境一样的特点。Wikipedia使用MediaWiki软件,主要在Linux下开发,由Apache HTTP服务器提供内容,在MariaDB数据库中存储内容,PHP来实现程序逻辑。
安装apache及其扩展包 dnf -y install httpd httpd-devel
安装mariadb数据库及其扩展包。
dnf -y install mariadb mariadb-server
安装php数据库及其扩展包:
dnf -y install php php-mysqlnd php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash
还原apache配置文件,并重启apache服务,检查是否正常运行
创建一个名为info.php
的文件,将其保存在/var/www/html
,文件内容如下:
<?php phpinfo(); ?>
浏览器访问phpinfo页面。
启动mariadb
数据库并设置开机自启
systemctl start mariadb systemctl enable mariadb
设置mariadb管理员密码并验证密码
mysqladmin -u root password 123456 mysql -u root -p
验证是否可以正确显示库名:
show databases; exit;
一些人借用LAMP来描述一类可定制组成的系统,而不是制造一系列新词,并用它来表示这些系统和统一打包的页面开发环境的不同(例如ASP,.NET和J2EE)。 举例来说,Wikipedia,免费自由的百科全书,运行的一系列软件具有LAMP环境一样的特点。Wikipedia使用MediaWiki软件,主要在Linux下开发,由Apache HTTP服务器提供内容,在MariaDB数据库中存储内容,PHP来实现程序逻辑。
安装apache及其扩展包 dnf -y install httpd httpd-devel
安装mariadb数据库及其扩展包。
dnf -y install mariadb mariadb-server
安装php数据库及其扩展包:
dnf -y install php php-mysqlnd php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash
还原apache配置文件,并重启apache服务,检查是否正常运行
创建一个名为info.php
的文件,将其保存在/var/www/html
,文件内容如下:
<?php phpinfo(); ?>
浏览器访问phpinfo页面。
启动mariadb
数据库并设置开机自启
systemctl start mariadb systemctl enable mariadb
设置mariadb管理员密码并验证密码
mysqladmin -u root password 123456 mysql -u root -p
验证是否可以正确显示库名:
show databases; exit;
DVWA靶机搭建
DVWA简介
Damn Vulnerable Web Application (DVWA), 它的主要目的是帮助安全专业人员在合法的环境中,测试他们的技能和工具,帮助 Web 开发人员更好地了解如何增强 Web 应用程序的安全性,并帮助学生和教师在受控的课堂环境中,了解 Web 应用程序的安全。
DVWA的具体目标是通过简单明了的界面,来演练一些最常见的 Web 漏洞,这些漏洞具有不同的难度级别。 请注意,此软件存在说明和未说明的漏洞。
搭建LAMP环境
要搭建DVWA可以首先搭建一套lamp环境。
yum -y install httpd httpd-devel yum -y install mariadb mariadb-server yum -y install php php-mysqlnd php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash systemctl start mariadb systemctl enable mariadb mysqladmin -u root password 123456 systemctl start httpd systemctl enable httpd
搭建DVWA
将DVWA文件拷贝至apache网页目录:scp -r * root@192.168.1.9:/var/www/html/
请确保您的 config/config.inc.php
文件存在。 只有 config.inc.php.dist
是不够的,您必须编辑它以适应您的环境并将其重命名为 config.inc.php
。
数据库设置:
请确保您在 ./config/config.inc.php
中的数据库凭据是正确的
变量默认设置如下:
$_DVWA[ 'db_user' ] = 'dvwa'; $_DVWA[ 'db_password' ] = 'p@ssw0rd'; $_DVWA[ 'db_database' ] = 'dvwa';
要根据数据库更改其设置。
访问网址根据网页提示完成其他设置:
文件夹权限:
-
./hackable/uploads/
- 需要允许web服务可写(用于文件上传)。 -
./external/phpids/0.6/lib/IDS/tmp/phpids_log.txt
- 需要允许web服务可写(如果你想使用 PHPIDS)。
PHP配置:
-
allow_url_include = on
- 允许远程文件包含 (RFI) [allow_url_include] -
allow_url_fopen = on
- 允许远程文件包含 (RFI) [allow_url_fopen] -
safe_mode = off
- (如果 PHP <= v5.4)允许 SQL 注入(SQLi) [safe_mode] -
magic_quotes_gpc = off
- (如果 PHP <= v5.4)允许 SQL 注入(SQLi) [magic_quotes_gpc] -
display_errors = off
- (可选)隐藏 PHP 警告消息以使其不那么冗长 [display_errors]
文件: config/config.inc.php
:
-
$_DVWA[ 'recaptcha_public_key' ]
&$_DVWA[ 'recaptcha_private_key' ]
- 这些值需要从https://www.google.com/recaptcha/admin/create 生成
一般来说只需要以下命令:
chmod 777 /var/www/html/hackable/uploads/ chmod 777 /var/www/html/external/phpids/0.6/lib/IDS/tmp/phpids_log.txt chmod 777 /var/www/html/config vi /etc/php.ini # 设置allow_url_include=On vi /var/www/html/config/config.inc.php # 设置数据库信息;填写key(可选) systemctl restart httpd.service
当以上设置全部完成后,网页应如下图所示,此时单击Create / Reset Database
按钮。 这将为您创建/重置数据库,并填入一些数据。
安装完成如下图:
初始密码为admin/password 。这个网站将在后续学习过程中被反复使用