学习网安(21)

第20章存在疑问,待开学后和老师求证改动后发布

中间件之一——apache

先说一下http协议——超文本传输协议

全称为:Hyper Text Transfor Protocol

用途:让用户通过浏览器发送请求到服务器端,接收客户端返回的数据,在浏览器展示出来

http协议格式:

http://域名:端口号/路径/文件名

端口号默认为80;https端口号默认为443

客户端向服务端发送请求中的数据包:

http请求报文格式:

第一部分——第一行:GET开头请求行

请求行格式:

第一部分:

请求方法:GET、POST

第二部分:请求URL

第三部分:

所用的http协议版本号:

http 0.9

http 1.0

http 1.1

第二部分——第二行开始到一个空白行结束:请求头

请求头内容主要由键值对格式构成:

Host:主机头,表示向哪个网站发请求,后跟域名/ip

Connection:当前客户端的链接状态

User-Agent(UA头):指定客户端访问网站时使用的浏览器

refer:表示当前请求是直接访问过来的还是从其他网站跳转过来的,用于防盗链

第三部分——空白行下面:请求体

图例为(burp抓包工具抓取的百度的数据包)

请求行开头单词为GET,也有可能没有请求体

http响应报文格式:

第一部分——第一行:POST开头的响应行

响应行格式:

第一部分:http协议版本号

第二部分:客户端此次请求的状态码,通过这个状态码可以判断此次请求为成功还是失败

常见的HTTP状态码包括:

1开头的状态码一般为提示信息

200 OK:请求已成功,请求的数据包含在响应中。

201 Created:请求已完成并导致新资源的创建。

202 Accepted:表示请求已被接受,但处理尚未完成。

203(Non-Authoritative Information)表示服务器已成功处理了请求,但返回的实体头部元信息不是原始服务器的完整资源,而是其副本。

204 No Content:请求已成功处理,但没有内容返回。

301 Moved Permanently:请求的资源已被永久移动到新的URL。(永久重定向)

302 Found:请求的资源临时移动到新的URL。(临时重定向)

303 See Other:表示资源存在于另一个URI,且建议使用GET方法定向获取资源。

304 Not Modified:自上次请求后,请求的资源未修改过。(数据来自于缓存)

4开头表示本次请求失败原因在客户端

400 Bad Request:服务器无法处理请求,因为客户端的请求语法错误。

401 Unauthorized:请求需要用户验证。

402是一个非标准的状态码,通常不被广泛使用

403 Forbidden:服务器拒绝请求。(无权访问)

客户端请求的文件无权查看/客户端没有指定要访问哪个文件,且服务器默认展示给客户端的文件不存在

404 Not Found:服务器无法找到请求的资源。(客户端访问页面不存在)

5开头表示本次请求失败原因在服务端

500 Internal Server Error:服务器遇到意外情况,导致它无法完成请求。

501Not Implemented:这个状态码意味着服务器不支持请求中的功能,客户端应当检查请求的方法是否被服务器识别。

502 Bad Gateway:表示作为网关或者代理的服务器从上游服务器接收到无效响应。

503 Service Unavailable:服务器暂时无法处理请求,可能是因为过载或维护。

第二部分——第二行开始到一个空白行结束:响应头

第三部分——空白行下面:响应体

浏览器的开发者工具(网页按F12进入)可看到数据包的三种首部:

请求首部、响应首部、通用首部

响应首部信息:

Content-Type:返回的数据类型

http返回的数据类型有两种,分别为主类型和子类型,text为主类型,子类型为text中的html。text中的子类型有:JS、css、html

Date:返回时间

Server:从哪里返回的

通用首部信息:

请求URL、请求方法、请求结果

Remote Address:远程地址,图中443前中括号内是ipv6地址        

Referrer Policy:strict-origin-when-cross-ongin(表示此网页无论是否有证书都只能通过域名访问,无法通过ip访问)/unsafe-url

apache

用于开启一个端口,等待客户端通过浏览器访问。

Linux中已内置apache

安装apache命令:

yum install httpd(软件包叫httpd)

在kali等其他系统中apache可能叫做apache2

检查系统是否安装apache命令:

rpm -q httpd

启动apache命令:

systemctl start httpd——临时启动

systemctl enable httpd——开机自动启动

查看apache状态:

systemctl status httpd

或查看端口检查apache状态(apache默认使用80端口):

ss -tunl | grep 80

或查看进程:

ps aux | grep httpd

检查哪个进程占用了指定端口:

lsof -i :80

检查连接80端口的进程:

ss -tunlp | grep 80

浏览器输入虚拟机ip测试apache是否启动:

页面如下,apache测试成功,正常启动

访问某个服务出现异常无法访问,排查步骤:

1、检查网络是否通畅,主机Win+R,执行cmd,ping一下虚拟机ip(网络通畅说明可以访问)

2、检查服务是否启动,上述查看状态命令,任意执行其一(服务启动说明可以被访问)

3、测试是否可以访问服务的端口(telnet):

Xshell中执行命令

telnet 虚拟机ip 服务对应端口

出现Connecting表示正在进行中还未连上

稍后若出现下图提示,表示连接失败

连接失败可能原因:

源ip(自己ip)被加入黑名单

目标主机开启防火墙,源主机数据包发送失败

验证是否是源ip被加入黑名单:换一个ip

4、如果换一个ip还是无法连接,说明目标主机开启防火墙

关闭防火墙

systemctl stop firewalld——临时关闭

systemctl disable firewalld——永久关闭

第一次关闭防火墙会有提示,属于正常现象:

关闭selinux(增强版安全控制软件能让系统更安全,但同时会让系统特难用)步骤:

打开对应的配置文件:/etc/selinux/config

改默认值为disabled:

查看此软件是否开启:getenforce,关闭的结果为Disabled

关闭的命令为:setenforce 0(临时关闭)

sed -i"s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config(永久关闭,同上述关闭步骤一样效果)

相关文件

配置文件:httpd.conf

日志文件:access.log(访问日志)、error.log(报错日志)

若使用yum安装apache,日志文件位于:/var/log/httpd;配置文件位于:/etc/httpd/conf

若使用编译安装apache,日志文件位于:安装位置下/logs/;配置文件位于:安装位置下/conf

配置文件中,此行意思为:加载目标位置下所有后缀为conf的文件

配置文件中的关键信息:(文件中有大小写,但实际不区分大小写)

ServerName(指定域名)

域名解析的优先级为本地缓存→hosts文件→dns(需要联网,且需要购买),如果这三种方式都解析不了域名,则会在cmd框中ping域名时,提示“请求找不到主机”等如下信息

hosts文件位于(此电脑):系统(C:)>Windows>System32>drivers>etc

hosts文件先拖到桌面,再打开编辑,写好后再放回原位

hosts文件自定义解析域名格式:

编辑好文件后,ping的结果:

DocumentRoot:指定网站根目录(启用selinux时,此路径不能随机更改)

Listen(监听)

要监听指定ip,将80改为指定ip;要监听所有ip,则不用更改/改为:80(加冒号)

更改后不会立刻生效,需要重启服务:systemctl restart httpd

注意:更改监听的端口号后,在浏览器中输入ip后需要加上英文冒号:再加上所改的端口号

此篇到此结束,谢谢各位阅读,如有不足,可评论补充,下篇见

  • 39
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值