首页
关于道锋
友情链接
公告栏
麟图图床
Search
1
使用ReDroid打造自己的云手机
9,309 阅读
2
Cloudflare SAAS 接入自选教程
4,630 阅读
3
CloudFront CDN配置教程
3,392 阅读
4
兽装曲腿制作文档
2,943 阅读
5
Frpc使用XTCP不通过服务器传输
2,884 阅读
默认
科学
热力学
Furry
小说
星河野望
手工制作
道具制作
音影
图像工具
计算机
渗透
硬件
编程
网络
记录
AI人工智能
CVE
软件工具
装机教程
C/C++
C#
Go
HTML5+JS+CSS
JAVA
Lua
Rust
PHP
Python2/3
Nodejs
编译
C/C++学习日志
Golang学习日志
Rust开发技巧
Rust学习日志
Rust开发教程
Nonebot2机器人框架
python开发教程
python开发技巧
Python学习日志
ai绘画
电子电路
电路设计
PCB打板
制作实战
无线电
摄影
运维
WEB
KVM云计算
docker
Ansible
代码管理
Kubernetes
Linux
MySQL
shell
集群
Zabbix
Prometheus
数据安全
Redis
istio
ELK
Nginx
Apache
Tomcat
Elasticsearch
Logstash
Kibana
测评
服务器
登录
Search
标签搜索
开源
源码
教程
摄影
服务器
环境搭建
rustlang
Rust
VS CODE
bbr
加速
网络优化
拥塞控制
CloudFront教程
CF教程
AWS教程
CloudFront接入
Frpc
Frps
Frp
道锋潜鳞
累计撰写
450
篇文章
累计收到
139
条评论
首页
栏目
默认
科学
热力学
Furry
小说
星河野望
手工制作
道具制作
音影
图像工具
计算机
渗透
硬件
编程
网络
记录
AI人工智能
CVE
软件工具
装机教程
C/C++
C#
Go
HTML5+JS+CSS
JAVA
Lua
Rust
PHP
Python2/3
Nodejs
编译
C/C++学习日志
Golang学习日志
Rust开发技巧
Rust学习日志
Rust开发教程
Nonebot2机器人框架
python开发教程
python开发技巧
Python学习日志
ai绘画
电子电路
电路设计
PCB打板
制作实战
无线电
摄影
运维
WEB
KVM云计算
docker
Ansible
代码管理
Kubernetes
Linux
MySQL
shell
集群
Zabbix
Prometheus
数据安全
Redis
istio
ELK
Nginx
Apache
Tomcat
Elasticsearch
Logstash
Kibana
测评
服务器
页面
关于道锋
友情链接
公告栏
友人
iMin博客
特资啦!个人资源分享站
三石的记录
咬一口激动的鱼
布丁の小窝
迷失的小K
koto's Site
西西のBlog
锐冰龙小站
Nick的琐碎日常
渣渣120
Suntの小破站
BG5VXJ-无线电
Abyss博客
炽煋的blog
麟图图床
搜索到
65
篇与
的结果
2020-04-11
浅谈HTTP的各种请求方法
早在http1.0时代,最基础的三个请求模式被定义出来,他们分别是GET POST HEAD慢慢到了Http1.1时代,请求基本模型就出来了,这一次,增加了更多的功能类请求OPTIONS, PUT, DELETE, TRACE 和 CONNECTGET那么,先从最最最基础的GET请求开始说起,做为http三巨头之一,顾名思义,他面向于获取类型的请求,比如,向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url,其最明显的特征就是,打开地址栏,你可以非常清楚的看到,他发送了什么。POSTpost作为和get一样古老的东西,作为“邮件”同样顾名思义,它是想服务器发送数据,然后再从服务器那边获取返回数据。向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form,最明显的特征就是,你无法直观的看出,你的客户端对服务器发送了什么,数据内容是存在于body内的,只能通过抓包解析出。HEAD我通常吧head请求看作是get请求的阉割版,他只响应http头部,响应主体不会被发出,这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。是的,心跳检测用head请求再好不过了。OPTIONS返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能PUT向指定资源位置上传其最新内容DELETE请求服务器删除Request-URL所标识的资源TRACE回显服务器收到的请求,主要用于测试或诊断CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。那么,值得注意的,在请求报文里面,请求类型必须是大写的,否则服务器可能将返回405 method not allowdHTTP工作原理HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。HTTP 请求/响应的步骤:客户端连接到Web服务器->发送Http请求->服务器接受请求并返回HTTP响应->释放连接TCP连接->客户端浏览器解析HTML内容1、客户端连接到Web服务器一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.baidu.com2、发送HTTP请求通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。3、服务器接受请求并返回HTTP响应Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。4、释放连接TCP连接若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;5、客户端浏览器解析HTML内容客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。其实就是曾经发表的一篇文章中RTT的说明
2020年04月11日
187 阅读
0 评论
0 点赞
2020-04-05
Nginx中的upstream
upstream参数的相关描述如下:server 反向服务地址和端口weight 权重max_fails 失败多少次,认为主机已挂掉,则踢出fail_timeout 踢出后重新探测时间backup 备用服务max_conns 允许最大连接数slow_start 当节点恢复,不立即加入max_conns可以根据服务的好坏来设置最大连接数,防止挂掉,比如1000,可以设置800upstream tuling { server 127.0.0.1:8050 weight=5 max_conns=800; server 127.0.0.1:8060 weight=1; }max_fails、fail_timeoutmax_fails:失败多少次认为主机已挂掉,则踢出,资源少的话一般设置为2~3次,多的话设置1次max_fails=3, fail_timeout=30s代表在30秒内请求某一应用失败3次,认为该应用宕机,后等待30秒,这期间内不会再把新请求发送到宕机应用,而是直接发到正常的服务器,时间到后再有请求进来继续尝试连接宕机应用且仅尝试1次,如果还是失败,则继续等待30秒……以此循环,直到恢复。upstream tuling { server 127.0.0.1:8080 weight=1 max_fails=1 fail_timeout=20; server 127.0.0.1:8081 weight=1; }关闭掉8080的服务,会发现在20秒内还是访问8080的,20s后才会访问8081
2020年04月05日
238 阅读
0 评论
0 点赞
2020-03-25
【漏洞预警】Nginx/OpenResty 特殊配置下内存泄漏与目录穿越漏洞
漏洞描述Nginx是一个高性能的HTTP和反向代理web服务器,OpenResty是一个基于 Nginx 与 Lua 的高性能Web平台。近日国外安全研究者公开了Nginx/OpenResty在特殊配置下存在内存泄漏或目录穿越漏洞详情。由于Nginx在rewrite功能实现上存在缺陷,以及OpenResty在ngx.req.set_uri()实现上存在缺陷,如果Nginx配置文件中使用了rewrite或者ngx.req.set_uri(),则攻击者可能可以通过构造恶意请求,从而造成内存泄漏或者目录穿越漏洞。影响版本nginx <= v1.17.7openresty <= v1.15.8.2安全建议1. Nginx更新至安全版本>=v1.17.92. 以下是存在漏洞的配置片段,建议用户自检查配置文件,并禁用相关危险配置。location ~ /memleak { rewrite_by_lua_block { ngx.req.read_body(); local args, err = ngx.req.get_post_args(); ngx.req.set_uri( args["url"], true ); } } location ~ /rewrite { rewrite ^.*$ $arg_x; } 相关链接https://www.openwall.com/lists/oss-security/2020/03/18/1https://hackerone.com/reports/513236
2020年03月25日
445 阅读
0 评论
0 点赞
2020-03-22
NGINX防御CC攻击
在讲之前呢,先给大家讲解一下什么是cc攻击:攻击者借助代理服务器生成指向受害主机的合法请求,实现DDOS和伪装就叫:CC(ChallengeCollapsar)。为了防止软件对网站压力测试或者恶意攻击,当服务器遭遇CC攻击时,我们可以快速查看日志,分析其请求的特征,比如User-agent。下面的是某一次CC攻击时的User-agent Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MyIE 3.01)Cache-Control: no-store, must-revalidate几乎没有正常的浏览器会在User-agent中带上“must-revalidate”这样的关键字。所以我们可以以这个为特征进行过滤,将User-agent中带有“must-revalidate”的请求全部拒绝访问:if ($http_user_agent ~ must-revalidate) { return 403; }再用cc攻击软件,全部返回403,用360奇云测访问正常也可以通过以下办法,被动防御Discuz!是使用比较多的一个php论坛程序。以Discuz!7.0为例,程序目录下有比较多的可以直接访问的php文件,但其中最容易受到攻击的一般有index.php(首页)、forumdisplay.php(板块显示)、viewthread.php(帖子显示)。攻击者一般会对这些页面发起大量的请求,导致HTTP服务器连接数耗尽、mysql数据库停止响应,最终导致服务器崩溃。为了防止上述页面被攻击,我们可以设定以下的规则进行防御: http { limit_zone myzone_bbs $binary_remote_addr 10m; limit_req_zone $binary_remote_addr zone=bbs:10m rate=1r/s; … server { … location ~ ^/bbs/(index|forumdisplay|viewthread).php$ { limit_conn myzone_bbs 3; limit_req zone=bbs burst=2 nodelay; root html; fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; include fastcgi_params; } } }应用这条规则后,bbs目录下的index.php、forumdisplay.php和viewthread.php这些页面同一个IP只许建立3个连接,并且每秒只能有1个请求(突发请求可以达到2个)。虽然这样的规则一般来说对正常的用户不会产生影响(极少有人在1秒内打开3个页面),但是为了防止影响那些手快的用户访问,可以在nginx中自定义503页面,503页面对用户进行提示,然后自动刷新。在Nginx中自定义503页面:error_page 503 /errpage/503.html;503页面的源代码:<html> < head> < title>页面即将载入....</title> < meta http-equiv=content-type c> < META NAME="ROBOTS" C> < /head> < body bgcolor="#FFFFFF"> < table cellpadding="0" cellspacing="0" border="0" width="700" align="center" height="85%"> < tr align="center" valign="middle"> < td> < table cellpadding="10" cellspacing="0" border="0" width="80%" align="center" style="font-family: Verdana, Tahoma; color: #666666; font-size: 11px"> < tr> < td valign="middle" align="center" bgcolor="#EBEBEB"> < br /><b style="font-size: 16px">页面即将载入</b> < br /><br />你刷新页面的速度过快。请少安毋躁,页面即将载入... < br /><br />[<a href="javascript:window.location.reload();"><font color=#666666>立即重新载入</font></a>] < br /><br /> < /td> < /tr> < /table> < /td> < /tr> < /table> < /body> < /html> < SCRIPT language=javascript> function update() { window.location.reload(); } setTimeout("update()",2000); < /script>2.被动防御虽然主动防御已经抵挡了大多数HTTP GET FLOOD攻击,但是道高一尺魔高一丈,攻击者会总会找到你薄弱的环节进行攻击。所以我们在这里也要介绍一下被动防御的一些方法。1)封IP地址访问者通过浏览器正常访问网站,与服务器建立的连接一般不会超过20个,我们可以通过脚本禁止连接数过大的IP访问。以下脚本通过netstat命令列举所有连接,将连接数最高的一个IP如果连接数超过150,则通过 iptables阻止访问:#!/bin/sh status=`netstat -na|awk '$5 ~ /[0-9]+:[0-9]+/ {print $5}' |awk -F ":" -- '{print $1}' |sort -n|uniq -c |sort -n|tail -n 1` NUM=`echo $status|awk '{print $1}'` IP=`echo $status|awk '{print $2}'` result=`echo "$NUM > 150" | bc` if [ $result = 1 ] then echo IP:$IP is over $NUM, BAN IT! /sbin/iptables -I INPUT -s $IP -j DROP fi 运行crontab -e,将上述脚本添加到crontab每分钟自动运行: 通过apache自带的ab工具进行服务器压力测试: ab -n 1000 -c 100 http://www.nf139.com 测试完成后,我们就可以看到系统中有IP被封的提示: [root@xxxxxx ~]#tail /var/spool/mail/root Content-Type: text/plain; charset=ANSI_X3.4-1968 Auto-Submitted: auto-generated X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/root> X-Cron-Env: <;PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=root> X-Cron-Env: <USER=root> IP:58.246.xx.xx is over 1047, BAN IT!另外还有一种下下策使用Cloudflare的CDN和云锁抗CC模块双管齐下配置危险ip验证码访问和自动验证,如果遭受的攻击太大,可以考虑临时开启5秒盾和云锁的验证码盾
2020年03月22日
323 阅读
0 评论
0 点赞
2020-03-12
Nginx使用cygwin在Windows下编译和安装
Nginx介绍:nginx("engine x") 是一个高性能的 HTTP 和反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。1.cygwin环境安装到http://www.cygwin.com/下载setup.exe安装程序,具体安装过程请到google找吧。这里需要注意的是:一定要安装上openssl、pcre与zlib这三个包,因为nginx部分源码需要用到这三个库。2.nginx编译与构建下载源代码包并打开cygwin环境,进入到源码存放地址,解压源码包gzip -d nginx-1.4.3.tar.gz得到nginx-1.4.3.tartar xvf nginx-1.4.3.tar得到新目录nginx-1.4.3cd进去,然后执行./configure --prefix=./nginx可以得到Makefile文件与objs子目录下的多个文件;再执行make命令,这时cd进 去objs子目录,然后ls一下,看到有nginx.exe文件,这就是编译构建后生成的nginx程序,接下来就可以安装导出了。3.安装在环境下cd到源码主目录,执行make install这样就可以把可执行导出到和主目录同级的nginx目录里了,这个目录是刚才执行编译configure时指定的(--prefix= ./nginx)4.运行在环境下cd到nginx/sbin目录,运行nginx.exe正常来说,控制台会回显一条错误信息运行错误: [emerg] 2496#0: the maximum number of files supported by select() is 64这表示FD_SETSIZE的值比nginx配置文件中worker_connections指令所指定的值小,那么怎么解决这个问题呢?第一种解决方法:把ngx_select_module事件处理模块去掉,通过在执行configure时指定参数—without-select_module。第二种解决方法:修改nginx的配置文件(conf/nginx.conf),把这个文件第13行的1024改为64(worker_connections指令的值)。第三种解决方法:在执行configure时指定额外的编译选项(--with-cc-opt=”-D FD_SETSIZE=2048”),这同样也可以解决上面的问题。后记:利用上面方法生成的nginx程序,需要依赖cygwin环境才能运行,那么有什么方法可以不用cygwin环境也能让nginx在Windows下独立运行呢?当前我想到的有两种方法:第1种:首先改变执行configure时指定的—prefix=/cygdrive/c/nginx参数为—prefix=.,同时还加上—sbin-path=nginx这个参数,也就是make install时把nginx安装到c:\nginx-\目录下,nginx运行时从当前目录的conf子目录读取配置、写日志到logs子目录。接下来执行configure、make与make install。然后把nginx运行时所需要用到的DLL找出来,我发现有这几个:cygcrypt-0.dll、cygpcre-0.dll、cygwin1.dll和cygz.dll(这些文件都在cygwin安装目录的bin子目录下);如果启用ssl的话,应该还需要cygssl-.dll和cygcrypto-0.9.8.dll,这个我没有实践过,大家可以试试。接下来把cygcrypt-0.dll、cygpcre-0.dll、cygwin1.dll和cygz.dll拷贝到安装主目录下,同时在该目录下创建logs子目录。最后就可以直接双击nginx.exe来运行nginx了。这时打开浏览器,输入地址:http://127.0.0.1/,如果能看到有“Welcome to nginx!”显示出来就表示nginx已经在运行,如果没有的话就打开logs子目录下的error.log文件,看看到底发生了什么错误。第2种:编译时指定-mno-cygwin选项,这可以生成不需要其它DLL的nginx.exe文件,不过我还没试成功,具体原因也还没找到,如果你试成功了要告诉我一声哟!这两种方法都有一个缺点:虽然nginx已经能独立运行了,但要关闭它,还需要打开cygwin环境,然后ps找到nginx主进程的进程ID,kill掉它;当然也可以用任务管理器强制关闭。不过据我了解在cygwin环境下可以把一个程序编译成Windows服务的,具体怎么做的话要再找找咯!
2020年03月12日
159 阅读
0 评论
0 点赞
1
...
5
6