提示:
上述仅仅是客户端用户第一次访问网站的基本过程,连续访问后,系统本地和LDNS层级都会有缓存记录,再访问时流程就会有些变化,会直接取本地缓存记录,这样访问过程就很快了。在上述整个访问流程里,包含了DNS的解析流程以及HTTP协议的通信原理等重要的技术点。
DNS 解析原理流程
(1)DNS解析流程说明
(2)DNS解析流程图
HTTP 方法 |
作用描述 |
GET |
客户端请求指定资源信息,服务器返回指定资源 |
HEAD |
只请求响应报文中的 HTTP 首部 |
POST |
将客户端的数据提交到服务器,例:注册表单 |
PUT |
从客户端向服务器传送的数据取代指定的文档内容 |
DELETE |
请求服务器删除 Request-URI 所标识的资源 |
MOVE |
请求服务器将制定的页面移至另一个网络地址 |
状态码范围 |
作用描述 |
100-199 |
用于指定客户端相应的某些动作 |
200-299 |
用于表示请求成功 |
300-399 |
用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息 |
400-499 |
用于指出客户端的错误 |
500-599 |
用于指出服务器端的错误 |
提示:
http响应的状态码种类很多,但是在实际工作场景中,经常遇到的状态码却不多,我把生产场景常见的重要状态码及对应的作用整理为下表。
状态代码 |
详细描述说明 |
200 ~ OK |
服务器成功返回网页,这是成功的 http 请求,返回的标准状态码 |
301-Moved Permanently |
永久跳转,所有请求的网页将永久跳转到被设定的新的位置,例如:从 baidu.com 跳转到 www.baidu.com |
403-Forbidden |
禁止访问,这个请求是合法的,但是服务器端因为匹配了预先设置的规则而拒绝响应客户端的请求,此类问题一般为服务器或服务权限配置不当所致。 |
404-Not Found |
服务器找不到客户端请求的指定页面,可能是客户端请求了服务器上不存在的资源导致 |
500-Internal Server Error |
内部服务器错误,服务器遇到了意料不到的情况,不能完成客户的请求。这是一个较为笼统地报错,一般为服务器的设置或者内部程序问题导致。例如 SElinux 开启,而又没有为 http 设置规则许可,客户端访问就是 500 |
502-Bad Gateway |
坏的网关,一般是代理服务器请求后端服务时,后端服务不可用或没有完成响应网关服务器。一般为反向代理服务器下面的节点出问题导致。 |
503-Service Unavailable |
服务当前不可用,可能因为服务器超载或停机维护导致,或者是反向代理服务器后面没有可以提供服务的节点 |
504-Gateway Timeout |
网关超时,一般是网关代理服务器请求后端服务时,后端服务没有在特定的时间内完成处理请求,一般是服务器过载导致没有在指定的时间内返回数据给前端代理服务器。 |
[root@master1 ~]# curl -I www.wyasw.com
HTTP/1.1 200 OK
Server: Tengine
Date: Mon, 19 Mar 2018 01:21:46 GMT
Content-Type: text/html;charset=utf-8
Connection: keep-alive
Vary: Accept-Encoding
Set-Cookie: JSESSIONID=4B9A54A9AFF183A7B41202C0057311F2; Path=/; HttpOnly
[root@master1 ~]# curl -I -s -w %{http_code} -o /dev/null www.wyasw.com
200
##200即为状态码
HTTP请求报文由请求行、请求头部(header)、空行和请求报文主体几个部分组成。报文如下表:
报文格式 |
报文信息 |
请求行 |
请求方法 URL 协议版本 |
请求头 |
字段 1: 值 1 字段 2 :值 2 |
空行 |
空白无内容 |
请求报文主体 |
GET 方法没有请求报文主体, POST 方法才有 |
HTTP响应报文由起始行,响应头部,空行和响应报文主体几个部分组成,和HTTP请求报文格式类似。报文如下表:
报文格式 |
报文信息 |
起始行 |
协议及版本号 数字状态码 状态信息 |
响应头部 |
字段 1: 值 1 字段 2 :值 2 |
空行 |
空白内容 |
响应报文主体 |
要返回给客户端的数据,可以是文本,也可以是图片、视频,如 html 网页 |
下面对响应报文的每个部分逐一阐述:
(1 )起始行
响应报文的起始行,也叫状态行,用来说明服务器响应客户端请求的状况。一般为协议及版本号,数字状态码,状态情况。例如:HTTP/1.1 200 OK
(2 )响应头部
和请求报文类似,起始行的后面一般有若干个头部字段。每个头部字段都包含一个名字和一个值,两者之间用冒号分隔。头部结尾也是以一个空行结束。常见的头部信息有:
(3 )空行
最后一个响应头部信息之后是一个空行,发送回车符和换行符,通知客户端空行下文无头部信息。
(4 )响应报文主体
响应报文主体中装载了要返回给客户端的数据。这些数据可以是文本,也可以是二进制的(图片,视频)。
回顾:数据包,传输过程
HTTP协议属于OSI模型中的第七层应用层协议,HTTP协议的重要应用就是WWW服务应用,下面就以WWW服务应用为例介绍HTTP协议的通信原理了,HTTP协议进行通信时,需要有客户端(即终端用户)和服务端(即Web服务器),在Web客户端向Web服务器发送请求报文之前,先要通过TCP/IP协议在Web客户端和服务器之间建立一个TCP/IP连接。整个http协议请求的工作流程如下:
1)终端客户在Web浏览器地址栏输入访问地址http://www.baidu.com
2)Web浏览器请求DNS服务器把域名www.baidu.com转换成Web服务器的IP地址,此处的解析过程就是DNS解析的原理流程,前面已经讲过了,此处不再叙述。
3)Web浏览器将端口号(默认80)从访问地址(URL)中解析出来。
4)Web浏览器通过解析后的IP地址及端口号于Web服务器之间建立一条TCP连接
5)建立TCP连接后,Web浏览器向Web服务器发送一条HTTP请求报文,请求报文内容格式及信息细节前面已经讲过了,此处不在叙述。
6)Web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文,响应报文内容格式及信息细节前文也已经讲过了,此处不在叙述。
7)Web服务器关闭http连接,关闭TCP连接,Web浏览器显示访问的网站内容到屏幕。
上述就是HTTP 协议通信原理过程,整个通信原理的重要知识点有:
事实上,DNS解析原理,http协议原理,tcp/ip协议原理都是高薪面试的重点,是高级运维必备知识,这里对其中的重要知识点进行汇总,如下:
MIME 类型 |
文件类型 |
text/html |
html htm shtml 文本类型 |
text/css |
css 文本类型 |
text/xml |
xml 文本类型 |
image/gif |
gif 图像类型 |
image/jpeg |
jpeg jpg 图像类型 |
application/javascript |
js 文本类型 |
text/plain |
txt 文本类型 |
application/json |
json 文本类型 |
text.plain |
txt 文本类型 |
application/json |
json 文本类型 |
video/mp4 |
mp4 视频类型 |
video/quicktime |
mov 视频类型 |
video/x-flv |
flv 视频类型 |
video/x-ms-wmv |
wmv 视频类型 |
video/x-msvideo |
avi 视频类型 |
可以从www的重要服务软件Nginx的配置文件conf目录下,查看其支持的媒体(MIME)类型,相关命令及内容为:
[root@oldboy conf]# head -10 mime.types
types {
text/html html htm shtml;
text/css css;
text/xml xml;
image/gif gif;
image/jpeg jpeg jpg;
application/javascript js;
application/atom+xml atom;
application/rss+xml rss;
以下内容省略....
URL,全称Uniform Resource Location,中文翻译为统一资源定位符,也被称为网页地址(网址)。如同在网络上的门牌,它是因特网上标准的资源唯一地址。通俗地说,URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户端和服务器程序上。采用URL可以用一种统一的格式来描述各种信息资源,包括文件,服务器的地址和目录等。严格的说,每个URL都是一个URI,它标识一个互联网资源,并指定对其进行操作或取得该资源的方法。
URL 的格式由下列三部分组成:
提示:
第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用"/"符号隔开。第一部分和第二部分是不可缺少的,第三部分可以省略。
标准的URL及说明
协议 |
分隔符号 |
IP 地址域名 |
分隔符号 |
资源目录地址 |
http |
:// |
www.wyasw.com |
/ |
wyasw/index.html |
http |
:// |
www.wyasw.com |
/ |
video/index.html |
网站URI 说明
协议 |
分隔符号 |
IP 地址域名 |
分隔符号 |
资源目录地址 |
http |
:// |
www.wyasw.com |
/ |
wyasw/index.html |
http |
:// |
www.wyasw.com |
/ |
video/index.html |
指向一个用户邮箱的URI
协议(服务形式) |
分隔符号 |
用户名 |
分隔符号 |
域名 |
mailto |
: |
oldboy |
@ |
oldboy.com |
大多数同学都熟悉URL ,而不是URI 。URL 是URI 命名机制的一个子集
1、静态网页资源介绍
在网站设计中,纯粹HTML格式的网页(可以包含图片,视频,JS(前端功能实现),CSS(样式)等)通常被称为“静态网页”,早期的网站大多都是静态的。静态网页是相对于动态网页而言的,是指没有后台数据库,不含程序(如php,jsp,asp)和不可交互的网页。
2、静态网页资源特点
3、静态网页资源有几个重要的特征:
网站静态页面的特点就相当于在餐馆吃火锅,餐馆把原材料和工具都给你准备好,你自己只需要涮着吃就行,不需要饭店大厨给你炒菜做菜了,因此,对于饭店来讲,服务顾客的效率大大提高了。而对于静态页面来讲就是不需要服务器端解析,因此提供网站方服务器的压力也大大减轻了。
3、静态网页语言
常见的静态网页语言有html,js,css,xml,shtml等,具体语言的特点不在这里细说。
回顾一下静态网页的核心特点,如下:
1)程序在客户浏览器端解析,不读取后端数据库,因此性能和效率很高。
2)因为后端没有数据库支持,所以和用户的交互性较差,功能实现也很少。
4、有关静态网页的架构思想
在高并发,高访问量的场景下做架构优化,涉及的关键环节就是把动态网页转成静态网页,而不直接请求数据库和动态服务器,并且可以把静态内容推送到前端缓存(或CDN)中提供服务,这样就可以提升用户体验,节约服务器和维护成本。
1、动态网页资源介绍
所谓的动态网页是与静态网页相对而言的,也就是说,动态网页的URL后缀不是.htm、.html、.shtml、.xml、.js、.css等静态网页的常见后缀扩展名形式,而是以.asp、.aspx、.php、.js、.do、.cgi等形式作为后缀的,并且一般在动态网页网址中会有标志性的符号--“?,&”,此外,在大多数情况下后端都需要有数据库支持等。
2、动态网页资源特点
1)网页扩展名后缀常见为:.asp,.aspx,.php,.jsp,.do,cgi等
2)网页一般以数据库技术为基础,大大降低了网站维护的工作量
3)采用动态网页技术的网站可以实现更多的功能,如用户注册,用户登录,在线调查,投票,用户管理,订单管理,发博文等等
4)动态网页并不是独立存在于服务器上的网页文件,当用户请求服务器上的动态程序时,服务器解析这些程序并可能读取数据库返回一个完整的网页内容。
5)动态网页中的“?”在搜索引擎的收录方面存在一定问题,搜索引擎一般不会从一个网站的数据库中访问全部网页,或者出于技术等方面的考虑,搜索蜘蛛一般不会去抓去网址中“?”后面的内容,因此在企业通过搜索引擎进行推广时,需要针对采用动态网页的网站做一定的技术处理(伪静态技术),以便适应搜索因穷的抓取要求。
6)程序在服务器端解析,这相当于顾客点餐,饭店厨师做饭做菜,耗时长,效率低。由于程序在服务端解析,因此,会消耗大量的CPU和内存,I/O等资源,并且多数还要读取数据库等服务,因此,其访问效率远不如静态网页,在服务端解析动态程序的服务常见的有PHP引擎,Java容器(tomcat,resin,jboss,weblogic)
3、有关动态网页的架构思想
1、伪静态网页介绍
伪静态就是通过某些技术(如:rewrite)把动态网页的URL地址伪装成静态网页URL地址,但实质上用户访问的还是动态网页,只不过看起来是符合静态网页地址特征的,因此,用户及某些搜索引擎会认为是静态网页。
2、从网站的URL看,伪静态表面上看起来是静态内容(如地址结尾带html),但这其实是通过rewrite规则实现的URL地址重写。改写后的URL地址规范、美观,有利于搜索引擎抓取,以及提升用户体验。因为伪静态网页还是动态网页,所以从性能上考虑,伪静态功能不但没有提升网站性能,反而会降低网站的性能。
3、伪静态网站作用
他的作用就是把动态网页URL改写成静态网页的URL,虽然消除了动态网页中的参数,但是并不需要生成任何网页,仅仅是改变了网页地址路径。
4、伪静态网页的缺点
从理论上说会降低网站的性能,没有动态转静态网页效率高。
由于静态网页程序在客户端解析,大大降低了服务器端的访问压力,因此解析效率更高,在实际高并发网站架构中,可以考虑把用户请求的数据解析后存成静态文件放于磁盘中或放于内存中,来降低动态服务器的压力,节约企业成本,提升用户体验。
(1)门户新闻业务
新闻网站的特点是一旦发布完成,几乎不会再改动网页内容。因此,对于新闻业务内容的静态化相对比较简单。
程序===>生成静态页面
(2)视频网站业务
(3)Blog/BBS/SNS/微博社区业务/电商(如淘宝,京东)
这几类业务的动态转静态是比较困难的,因为,用户发布完成内容,可能会随时更新并查看,这种情况一般会通过异步方式,例如消息中间件技术加上NoSQL集群技术实现转换,当然也会改进产品细节,例如:在访问的环节设置延时,异步加载等手段。
IP( 独立IP)即Internet Protocol,这里指独立IP数,独立IP数是指不同IP地址的计算机访问网站时被计算的总次数。独 立IP数是衡量网站流量的一个重要指标。一般一天内(00:00 - 24:00)相同IP地址的客户端访问网站页面只被计算为一次,记录独立IP的时间可为一天或一个月,目前通用的标准为“一天”。
问:如果一个用户要访问赶集网或58同城租房,你觉得用户可能会产生多少PV?
答:平均可能会有十几到几十个PV,一个来访者访问网站的PV数的多少是和网站提供的业务直接相关的。
例如:这些分类网站,用户浏览网站可能是为了找房子,找工作,因此一个用户访问的页面会很多,因此PV就会很多。
PV(Page View)是网站被访问的页面数量的一个指标,但不能直接知道有多少人访问了这个网站。
一个来访者访问网站,可能产生若干PV数,但是独立IP数就只有1个,因此,如果对比一个网站的独立IP数和PV数,不难看出,PV数一定会大于等于独立IP数的,视网站的业务而定,例如,对于分类门户,可能会达到10:1,甚至更多。
1.http请求报文:浏览器版本,OS
2.http响应报文:cookie(id)
##可以使用 腾讯分析、百度统计等工具来查看
IP的统计方法简单,易用,因此,成为了多数网站衡量网站流量的重要指标之一。
PV的统计方法也很简单,易用,因此,也是多数网站衡量网站流量的重要指标之一。
特别提示:
IP和PV概念,统计方法也是Linux运维人员要掌握的重点。
1、网站并发连接:
在面试过程中Linux运维人员经常会被问到:你的公司网站最大并发是多少?
那么到底什么事并发?怎么理解并发呢?
A种理解:网站服务器每秒能够接收的最大用户请求数
B种理解:网站服务器每秒能够响应的最大用户请求数。
C种理解:网站服务器在单位时间内能够处理的最大连接数。
虽然A,B的理解占IT人员中的大多数,但是,C理解更为准确一些。
举个单位时间段的例子说明
我们去餐馆吃饭,餐馆里一共有10张桌子,每张桌最多坐4个人同时吃饭,那么一般人的理解,这个餐馆能够接收的并发吃饭人数为10*4,即40个并发,这里就没有考虑时间问题,1秒并发可以是40个,10分钟内并发也是40个。因为这里还有一个因素,就是每个人吃饭时长的问题,如果平均每个人10分钟吃完,那么可以说10分钟内,这个餐馆的并发为40个,而不是每秒钟并发40个,因为,第一秒可以是40个人同时进来,但是第二秒就无人可进了(满员了),如果说10分钟并发是40个,下一个10分钟还能是40个,第三个10分钟还可以是40个。即网站服务器在单位时间内能够处理的最大连接数。
再举个同一个时刻示例:
高速公路每个方向都有2条车道,那么,同一时刻并发的车辆为两辆,并且并发可以永远为2,如果按秒计算,每秒的并发可能就可以有十几辆,这个例子和餐馆不同,因为高速路处理并发不需要处理时间,但是对于Web服务器来讲,需要花费时间处理请求,这个请求可能是1秒或数秒,因此说,并发不应该只是用户访问的请求数,而是服务器同时处理的并发数,并且单位时间不一定是1秒,可能是一个连接的处理周期内的连接数。
对于网站服务器来说,所谓的并发就是单位时间内,服务器能够同时处理的最大连接数,因为有的请求1秒结束,有的请求可能10秒才结束(业务程序及配置不同),因此,网站并发不是客户端每秒的并发请求数,而是服务器在一段时间内(1秒或者数秒内)可以处理的最大连接数,这个连接既包含正在建立的连接,也包含已经建立的连接。
例如:某网站的并发是5000
意味着:单位时间内(理解为1秒或数秒内),正在处理的连接数,正在建立的连接数。加起来一共是5000个。
1)统计当下时刻的linux的网络连接数并发,netstat -an|grep -i "est"|wc -l
2)nginx web 层 active status
其他服务并发连接:
(1)QPS(Query Per Second)每秒查询率
每秒查询率QPS是用于衡量一个特定的查询服务器在规定时间内所处理流量多少的标准。运维工作中,DNS系统以及数据库等服务的查询性能经常用每秒查询率来衡量。
(2)IOPS(Input/Output Operations Per Second)
IOPS即每秒进行读写(I/O)操作的次数,多用于数据库等场合,衡量随机访问的性能。存储端的IOPS性能和主机端的I/O是不同的,IOPS是指存储每秒可接受多少次主机发出的访问,主机的一次I/O需要多次访问存储才可以完成。例如,主机写入一个最小的数据块,也要经过“发送写入请求,写入数据,收到写入确认”等三个步骤,也就是3个存储访问。
如何测试磁盘的存储性能?
1.连续的读写向磁盘中写入大的文件
dd if=/dev/zero of=/tmp/test01.bin bs=1K count=10000
网站 |
独立 IP 万 / 日 |
PV 数万 / 日 |
网站并发级别 |
www.51cto.com |
582000 |
1338600 |
10000 |
www.ganji.com |
17340000 |
13872000 |
10000-30000 |
www.58.com |
1398000 |
22927200 |
10000-30000 |
www.weibo.com |
30180000 |
166593600 |
几十万 |
www.taobao.com |
46620000 |
489510000 |
几十万 - 百万 |
www.jd.com |
6108000 |
98949600 |
数万 |
www.suning.com |
930000 |
7254000 |
10000-30000 |
提示:以上数据于大约2015年7月从第三方http://alexa.chinaz.com/alexa_more.aspx 网站查找所得,仅供读者参考,不同的统计程序差别也很大,有一定误差,实际最高日访问量要比此表大,因为网站访问量也节假日等有关,另外统计的误差和chinaz.com的统计方法有关,后面的最大并发以及机器数量级别为作者根据访问量及业务类型估算而来,不代表网站的实际情况,仅对初学者是一个参考。
常见面试题如下:
一定要理解IP,PV,并发量这3个点的知识,在回答时才能有的放失,这三个点的多少决定面试时说多大的架构,对于没有经验的新手不能在说有几万的PV时,还说数十台的集群架构,这样就乌龙了。
从上述趋势变化不难发现,Apache虽然份额最大,但是有逐年下降趋势,而这个Nginx后起之秀上升趋势显著,另外,Nginx的分支Tengine也从看不见身影到逐渐占有一定份额了。
常用来提供静态Web 服务的软件:
常用来提供动态服务的软件
官方地址: http://www.apache.org/
Nginx的版本只有一个系列,但是版本更新很快,仅仅半年就有数个版本,这也看出来社区的活跃程序。具体内容参见文档地址: http://www.nginx.org/以及http://www.nginx.org/en/docs/
Resin官方号称是世界上最快的Web服务,是大型动态Web服务主流,为互联网Java程序的解析容器,百度,人人都曾用过Resin
目前企业用的较多的是3.1系列,正在向4.0过度
tomcat一直是中小企业动态Web服务的主流,常用作解析Java的程序的容器,其版本发展变化如下表。
Servlet/JSP Spec |
Apache Tomcat version |
Actual release revision |
Mininum Java Version |
3.0/2.2 |
7.0.x |
7.0.26 |
1.6 |
2.5/2.1 |
6.0.x |
6.0.35 |
1.5 |
2.4/2.0 |
5.5.x |
5.5.35 |
1.4 |
2.3/1.2 |
4.1.x(archived) |
4.1.40(archived) |
1.3 |
2.2/1.1 |
3.3.x(archived) |
3.3.2(archived) |
1.1 |
目前企业使用的主流版本有6系列和7系列,官方也已经推出了更新的8.0系列
tomcat官方地址:
http://tomcat.apache.org/whicheversion.html
http://tomcat.apache.org/
1)请描述DNS系统的解析原理?
2)请描述HTTP协议的工作原理?
3)请问你的公司的网站访问量是多少?
4)请说出http状态吗200,301,403,404,500,502,504代表的意义?
(1 ),原因:
本来在家正常休息,突然远程托管的机房的线上服务器蹦了远程不了,服务启动不了,然后让上海机房重启了一次,还是直接挂了,一直到我远程上才行。
(2 )现象
远程服务器发现出现这类信息
Hi, please view: http://pastie.org/pastes/10800563/text?key=hzzm4hk4ihwx1jfxzfizzq for further information in regards to your files!
Hi, please view: http://pastie.org/pastes/10800563/text?key=hzzm4hk4ihwx1jfxzfizzq for further information in regards to your files!
Hi, please view: http://pastie.org/pastes/10800563/text?key=hzzm4hk4ihwx1jfxzfizzq for further information in regards to your files!
Hi, please view: http://pastie.org/pastes/10800563/text?key=hzzm4hk4ihwx1jfxzfizzq for further information in regards to your files!
Hi, please view: http://pastie.org/pastes/10800563/text?key=hzzm4hk4ihwx1jfxzfizzq for further information in regards to your files!
Hi, please view: http://pastie.org/pastes/10800563/text?key=hzzm4hk4ihwx1jfxzfizzq for further information in regards to your files!
登录信息
然后FQ 去了国外网站查看
Greetings,
Your server has been hacked and your files have been deleted.
Before they were deleted, we backed them up to a server we control.
You must send a total of 3 BTC to the address: 1B1oU6EdREYffif3**********
Failure to do so will result in your files being deleted after 5 days.
We may also leak your files.
You can e-mail onewayout@sigaint.org for support. We will not give any files before a payment has been made.
Goodbye!
发现被黑!!!
(3 ). 开始排查:
首先检查日志,以前做过安全运维,所以写过类似于检查命令和工具,开始一一排查。
#查看是否为管理员增加或者修改
find / -type f -perm 4000
#显示文件中查看是否存在系统以外的文件
rpm -Vf /bin/ls
rpm -Vf /usr/sbin/sshd
rpm -Vf /sbin/ifconfig
rpm -Vf /usr/sbin/lsof
#检查系统是否有elf文件被替换
#在web目录下运行
grep -r "getRuntime" ./
#查看是否有木马
find . -type f -name "*.jsp" | xargs grep -i "getRuntime"
#运行的时候被连接或者被任何程序调用
find . -type f -name "*.jsp" | xargs grep -i "getHostAddress"
#返回ip地址字符串
find . -type f -name "*.jsp" | xargs grep -i "wscript.shell"
#创建WshShell对象可以运行程序、操作注册表、创建快捷方式、访问系统文件夹、管理环境变量
find . -type f -name "*.jsp" | xargs grep -i "gethostbyname"
#gethostbyname()返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针
find . -type f -name "*.jsp" | xargs grep -i "bash"
#调用系统命令提权
find . -type f -name "*.jsp" | xargs grep -i "jspspy"
#Jsp木马默认名字
find . -type f -name "*.jsp" | xargs grep -i "getParameter"
fgrep - R "admin_index.jsp" 20120702.log > log.txt
#检查是否有非授权访问管理日志
#要进中间件所在日志目录运行命令
fgrep - R "and1=1"*.log>log.txt
fgrep - R "select "*.log>log.txt
fgrep - R "union "*.log>log.txt
fgrep - R "../../"*.log >log.txt
fgrep - R "Runtime"*.log >log.txt
fgrep - R "passwd"*.log >log.txt
#查看是否出现对应的记录
fgrep - R "uname -a"*.log>log.txt
fgrep - R "id"*.log>log.txt
fgrep - R "ifconifg"*.log>log.txt
fgrep - R "ls -l"*.log>log.txt
#查看是否有shell攻击
#以root权限执行
cat /var/log/secure
#查看是否存在非授权的管理信息
tail -n 10 /var/log/secure
last cat /var/log/wtmp
cat /var/log/sulog
#查看是否有非授权的su命令
cat /var/log/cron
#查看计划任务是否正常
tail -n 100 ~./bash_history | more
查看临时目录是否存在攻击者入侵时留下的残余文件
ls -la /tmp
ls -la /var/tmp
#如果存在.c .py .sh为后缀的文件或者2进制elf文件。
Apr 17 03:14:56 localhost sshd[11499]: warning: /etc/hosts.deny, line 14: missing ":" separator
Apr 17 03:15:01 localhost sshd[11499]: Address 46.214.146.198 maps to 46-214-146-198.next-gen.ro, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
Apr 17 03:15:01 localhost sshd[11499]: Invalid user ubnt from 46.214.146.198
Apr 17 03:15:01 localhost sshd[11500]: input_userauth_request: invalid user ubnt
Apr 17 03:15:01 localhost sshd[11499]: pam_unix(sshd:auth): check pass; user unknown
Apr 17 03:15:01 localhost sshd[11499]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=46.214.146.198
Apr 17 03:15:01 localhost sshd[11499]: pam_succeed_if(sshd:auth): error retrieving information about user ubnt
Apr 17 03:15:03 localhost sshd[11499]: Failed password for invalid user ubnt from 46.214.146.198 port 34989 ssh2
Apr 17 03:15:03 localhost sshd[11500]: Connection closed by 46.214.146.198
应该就是他了,查看历史记录
日志发现Invalid user ubnt from 46.214.146.198
历史记录和相关访问日志已经删除,痕迹清除
发现没有异常
打开vi /etc/motd 发现
查找不出后门也找不到相关命令,感觉思路受损,晕头转向。
最后查找下单天的web访问日志和相关ip访问
发现一条命令让我好奇,GET /cgi-bin/center.cgi?id=20
HTTP/1.1 ,并且有点异常
感觉很像目前流行的bash shell漏洞,测试一下,果然存在漏洞
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
[root@mall ~]# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test
(4) 修复升级命令
yum -y install yum-downloadonly
yum -y install bash-4.1.2-33.el6_7.1x86_64.rpm
(5) 完成后做了如下措施
(6 )漏洞被利用过程
我发送GET请求-->目标服务器cgi路径
目标服务器解析这个get请求,碰到UserAgent后面的参数,Bash解释器就执行了后面的命令
(7 )Shellshock 介绍
Shellshock,又称Bashdoor,是在Unix中广泛使用的Bash shell中的一个安全漏洞,首次于2014年9月24日公开。许多互联网守护进程,如网页服务器,使用bash来处理某些命令,从而允许攻击者在易受攻击的Bash版本上执行任意代码。这可使攻击者在未授权的情况下访问计算机系统。