分类目录归档:Linux 服务器

宝塔官方的教程使用的是阿里云的主账号 AccessKeyId。本文所讲述的是通过 RAM 访问管理新建子帐号 AccessKey,对官方教程进行一定的补充。

定时备份到 OSS 的好处:异地容灾备份,一旦机器出现毁灭性故障,网站数据不会丢失。
阿里云 OSS:提供高可用的数据储存服务。

宝塔官方的教程(https://www.bt.cn/bbs/thread-1061-1-1.html)使用的是阿里的主账号 Ac­cessKeyId。而主账号的 Ac­cessKeyId 具有账户的完全控制权限,如果泄露了有很大的安全问题。本文所讲述的是通过 RAM 访问管理新建子帐号 Ac­cessKey,对官方教程进行一定的补充。

一、阿里云的配置

登陆主账号,前往 OSS 资源管理平台。

1.1 新建一个Bucket

名称随便写,地域最好选择离你服务器最近的节点
Tips: 阿里 OSS 储存的费用:
1, 中国大陆无免费额度,按量计费,可以买储存包抵扣。
2, 中国大陆以外地区总共有 5GB 免费储存额度,超出部分按量计费,可以买储存包抵扣。
3, 只是用于备份的话不会产生公网流量的计费。
注意 OSS 的访问权限为私有,落地加密最好开启一下,聊胜于无也不收费。其他功能都不需要开启。

新建储存桶
新建储存桶
私有设置
私有设置

1.2 新建用户组

鼠标移动到头像处,在展开菜单中打开 RAM 访问管理页面:

访问管理的位置
访问管理的位置

新建一个用户组:

新建用户组
新建用户组

创建成功后点击新增用户组后面的“添加权限”,并在系统策略中搜索OSS,添加AliyunOSSFullAccessAliyunOSSReadOnlyAccess权限,并保存。

添加用户组权限
添加用户组权限

1.3 创建用户

创建一个用户,记得勾选编程访问!!!!

创建一个用户,记得勾选编程访问!!!!

创建一个用户,记得勾选编程访问!!!!

创建用户
创建用户

创建成功后保存展示的子用户AsscessKey IDAccessKey Secret到安全的地方,然后将这个用户添加到我们上一步新建的用户组中。如果您有多台服务器需要开启OSS备份功能,请为每一台机器建立一个子用户,并加入到我们建立的用户组中。

至此,阿里云的子用户和用户权限已经配置完成。

二、宝塔面板设置

1. 登陆宝塔面板,在软件管理中安装阿里云 OSS(免费)
2. 点击程序末尾的 “设置”,在如下页面填写您的 OSS 信息。
OSS 信息的填写可以参考宝塔官方教程,这里的 AccessKey ID 和 AccessKey Secret 我们填写刚才所记录的子用户密钥。
如果你有多台服务器需要备份,保存路径建议重命名一下,让每台路径不相同,方便后续的文件查找与管理。

3.最后在每台服务器的计划任务中配置定时备份网站到阿里云OSS即可。
建议的网站备份时间: 每三天一次,深夜进行。保留2份及以上。
建议的数据库备份时间:每天一次,深夜进行。保留5份及以上。

以后每当某台服务器不再计划使用时,您应该前往阿里云控制台停用相关的 Ac­cessKey 或者删除相关的子账户。这样做既能保证安全,也不会影响其他机器自动备份的进行。

通过宝塔面板计划任务自动逻辑备份 RDS MySQL 数据库到 OSS 对象存储

前言

今年双十一我在阿里云买了 ECS 云主机 2H4G3M(三年664.2大洋)和 RDS MySQL 5.7 数据库 1H1G(一年19.9大洋),当然这个活动价格是针对新用户的老用户与狗不得参与。

步骤

如何安装系统和宝塔面板我这里就不多说了,只简单介绍一下我 ECS 主机部署的系统环境:
主机系统:Centos 8.2
管理系统:宝塔面板 7.4.5
网站环境:Nginx 1.19.4 、PHP 7.4 、Redis 6.0.9 、本机无需安装 MySQL 数据库(因为有 RDS MySQL 5.7 数据库站库分离)

部署好主机环境以后把网站迁移到 ECS 新主机跑起来看看,速度还可以。因为主机带宽只有 3M 所以建议套一层 CDN 做个动静分离,把静态资源都缓存到 CDN 边缘节点就近访问。

再来说说如何定时自动备份网站数据,宝塔面板后台软件商店找到阿里云 OSS 插件安装,然后去阿里云官网开通 OSS 对象存储服务,用阿里云 OSS 的内网地域节点添加到宝塔面板刚刚安装到阿里云 OSS 插件中。

阿里云 OSS 插件设置截图

此时我们就可以通过宝塔面板计划任务创建自动备份任务了,但是由于我们的数据库是用的阿里云 RDS MySQL ,所以在宝塔计划任务中只能添加网站文件的备份无法添加 RDS 数据库的备份计划。这时我们需要一个脚本通过 ECS 主机内网把 RDS 数据库备份到 ECS 主机上,然后再通过阿里云 OSS 插件把备份好的 RDS 数据库存储到阿里云 OSSS。

dnf install git -y
cd /www/wwwroot/www.shuohi.com
git clone https://github.com/daniloaz/myphp-backup.git
cd /myphp-backupvi /myphp-backup.php //填写RDS数据库中的连接信息

我把脚本下载到了网站根目录中,编辑 /www/wwwroot/www.shuohi.com/myphp-backup/myphp-backup.php 文件,填写 RDS 数据库的相关信息。
注意:网站根目录下的 /myphp-backup 文件夹此时前台是可以访问的,我们需要设置网站配置文件添加 Nginx 规则禁止前台访问。

#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md|myphp-backup)
{
    return 404;
}

最后添加两条宝塔计划任务,时间相隔1分钟目的是为了先把 RDS 数据库备份到网站根目录 /myphp-backup 文件夹内,然后再打包备份网站整体数据并通过 ECS 内网上传到 OSS 存储。

宝塔面板计划任务截图
//第一条宝塔面板计划任务
//任务类型:Shell脚本,
//任务名称:备份数据库[www_shuohi_com]
//执行周期:每天 3时 59分
//脚本内容:
rm -rf /www/wwwroot/www.shuohi.com/myphp-backup/myphp-backup-files && cd /www/wwwroot/www.shuohi.com/myphp-backup; php myphp-backup.php
//第二条宝塔面板计划任务
//任务类型:备份网站
//任务名称:备份网站[www.shuohi.com]
//执行周期:每天 4时 00分
//备份网站:www.shuohi.com 备份到:阿里云OSS 保留最新:30份
//排除规则:可以不填写

最后

不要忘记修改站点配置文件禁止前台访问 /myphp-backup 文件夹,否则你打包的数据库是有可能被前台访客下载的,当然你也可以把 /myphp-backup 文件夹放在站点根目录之外的其他地方这样更安全。

Github项目地址:https://github.com/daniloaz/myphp-backup

缓慢的Http拒绝服务攻击漏洞的验证(slowhttptest的安装)

目录

0x01 前言

主要记录缓慢的Http拒绝服务攻击漏洞的验证过程。

0x02 什么是Http拒绝服务攻击?

缓慢的http拒绝服务攻击是一种专门针对于Web的应用层拒绝服务攻击,攻击者操纵网络上的肉鸡,对目标Web服务器进行海量http request攻击,直到服务器带宽被打满,造成了拒绝服务。
慢速HTTP拒绝服务攻击经过不断的演变和发展,主要有三种攻击类型,分别是Slow headers、Slow body、Slow read。以Slow headers为例,Web应用在处理HTTP请求之前都要先接收完所有的HTTP头部,因为HTTP头部中包含了一些Web应用可能用到的重要的信息。攻击者利用这点,发起一个HTTP请求,一直不停的发送HTTP头部,消耗服务器的连接和内存资源。抓包数据可见,攻击客户端与服务器建立TCP连接后,每40秒才向服务器发送一个HTTP头部,而Web服务器再没接收到2个连续的rn时,会认为客户端没有发送完头部,而持续的等等客户端发送数据。如果恶意攻击者客户端持续建立这样的连接,那么服务器上可用的连接将一点一点被占满,从而导致拒绝服务。这种攻击类型称为慢速HTTP拒绝服务攻击。

0x02 如何验证(检测)Http拒绝服务攻击?

需要的是slowhttptest这个工具,网上有安装教程,但是安装过程中老是出问题,最后解决,记录一下,过程如下。
首先安装libssl-dev

sudo apt-get install libssl-dev

然后

git clone https://github.com/shekyan/slowhttptest.git
cd slowhttptest
sudo ./configure
sudo make install

到这里时,遇到了问题:
1.png
折腾了半天也没有解决,后来使用官方WIKI(WIKI)的提示安装,依旧出现如下错误:
2.png
提示是缺少OpenSSL-devel,可是确信我是已经安装了的。
到这里想到前一种方法是编译成功了,就是执行编译的时候出错,所以想到一个方法。
直接把slowhttptest-1.7(官方方法)里面的所有内容复制粘帖在slowhttptest(git方法)里面,有重复的全部替换。
最后slowhttptest文件的内容如下:
3.png

然后进入该文件夹内,执行命令

sudo make install

4.png
成功安装。
尝试使用:
5.png

最后白帽子验证该漏洞的语句如下:
slowhttptest -c 1000 -X -g -o -slow_read_stats -r 200 -w 512 -y 1024 -n 5 -z 32 -k 3 -u http://blog.cnpanda.net -p 3

效果如下:

6.png
相关参数还是在附加下吧,虽然网上很多。

—a —开始开始值范围说明符用于范围头测试
-b 将字节限制的范围说明符用于范围头测试

  • c 的连接数限制为65539
  • d proxy host:port 用于指导所有流量通过web代理
  • e proxy host:port 端口用于指导只有探针交通通过web代理
  • h,B,R或x 指定减缓在头部分或在消息体,- R 允许范围检验,使慢读测试- x
  • g 生成统计数据在CSV和HTML格式,模式是缓慢的xxx。csv / html,其中xxx是时间和日期
  • i seconds 秒间隔跟踪数据在几秒钟内,每个连接
  • k 管道因子次数重复请求在同一连接慢读测试如果服务器支持HTTP管道内衬。
  • l 在几秒钟内,秒测试时间
  • n 秒间隔从接收缓冲区读取操作
  • o 文件定义输出文件路径和/或名称,如果指定有效- g
  • p 秒超时等待HTTP响应在探头连接后,服务器被认为是不可访问的
  • r seconds 连接速度
  • s 字节值的内容长度标题详细说明,如果指定- b
  • t verb 自定义
  • u URL 目标URL,相同的格式键入浏览器,e。g https://host[:port]/
  • v level 冗长等级0 – 4的日志
  • w 字节范围广告的窗口大小会选择从
  • x 字节最大长度的跟踪数据结束
  • y 字节范围广告的窗口大小会选择从
  • z 字节从接收缓冲区读取字节与单一的read()操作

0x03 修复建议

针对不同的Server其对慢速http拒绝服务攻击防范方法也不同,建议使用以下措施防范慢速http拒绝服务攻击:

【WebSphere】

1、限制 HTTP 数据的大小
在WebSphere Application Server 中进行如下设置:

任何单个 HTTP 头的默认最大大小为 32768 字节。可以将它设置为不同的值。
HTTP 头的默认最大数量为 50。可以将它设置为不同的限制值。

另一种常见的 DOS 攻击是发送一个请求,这个请求会导致一个长期运行的 GET 请求。WebSphere Application Server Plug-in 中的 ServerIOTimeoutRetry 属性可限制任何请求的重试数量。这可以降低这种长期运行的请求的影响。
设置限制任何请求正文的最大大小。

2、设置keepalive参数

打开ibm http server安装目录,打开文件夹conf,打开文件httpd.conf,查找KeepAlive值,改ON为OFF,其默认为ON。
这个值说明是否保持客户与HTTP SERVER的连接,如果设置为ON,则请求数到达MaxKeepAliveRequests设定值时请求将排队,导致响应变慢。

【Weblogic】

1、在配置管理界面中的协议->一般信息下设置 完成消息超时时间小于400
2、在配置管理界面中的协议->HTTP下设置 POST 超时、持续时间、最大 POST 大小为安全值范围。

【Nginx】

1、通过调整$request_method,配置服务器接受http包的操作限制;
2、在保证业务不受影响的前提下,调整client_max_body_size, client_body_buffer_size, client_header_buffer_size,large_client_header_buffersclient_body_timeout, client_header_timeout的值,必要时可以适当的增加;
3、对于会话或者相同的ip地址,可以使用HttpLimitReqModule and HttpLimitZoneModule参数去限制请求量或者并发连接数;
4、根据CPU和负载的大小,来配置worker_processes 和 worker_connections的值,公式是:max_clients = worker_processes * worker_connections。

【Apache】

建议使用mod_reqtimeout和mod_qos两个模块相互配合来防护。
1、mod_reqtimeout用于控制每个连接上请求发送的速率。配置例如:

请求头部分,设置超时时间初始为10秒,并在收到客户端发送的数据后,每接收到500字节数据就将超时时间延长1秒,但最长不超过40秒。可以防护slowloris型的慢速攻击。

RequestReadTimeout header=10-40,minrate=500

请求正文部分,设置超时时间初始为10秒,并在收到客户端发送的数据后,每接收到500字节数据就将超时时间延长1秒,但最长不超过40秒。可以防护slow message body型的慢速攻击。

RequestReadTimeout body=10-40,minrate=500
需注意,对于HTTPS站点,需要把初始超时时间上调,比如调整到20秒。
2、mod_qos用于控制并发连接数。配置例如:

当服务器并发连接数超过600时,关闭keepalive

QS_SrvMaxConnClose 600

限制每个源IP最大并发连接数为50

QS_SrvMaxConnPerIP 50
这两个数值可以根据服务器的性能调整。

【IHS服务器】
先安装最新补丁包,然后启用mod_reqtimeout模块,在配置文件中加入:
LoadModule reqtimeout_module modules/mod_reqtimeout.so
为mod_reqtimeout模块添加配置:
<IfModule mod_reqtimeout.c>
RequestReadTimeout header=10-40,MinRate=500 body=10-40,MinRate=500
</IfModule>
对于HTTPS站点,建议header=20-40,MinRate=500。
参见:http://www-01.ibm.com/support/docview.wss?uid=swg21652165

【F5负载均衡修复建议】
F5负载均衡设备有相应的防护模块,如无购买可参考附件中的详细配置过程。
关于F5的慢速攻击防护配置,请参考以下链接:
https://support.f5.com/kb/en-us/solutions/public/10000/200/sol10260.html
https://devcentral.f5.com/articles/mitigating-slow-http-post-ddos-attacks-with-irules-ndash-follow-up

其他参考资料:
[*] Slowhttptest Github
[*] HTTP Dos攻击压力测试工具-Slowhttptest 1.5
[*] SlowHTTPTest安装出问题与解决
[*] 怎么装openssl-devel

等保3级-实施手段参考-阿里云 MFA双因素认证设置

阿里云 MFA双因素认证设置

公司内部的网站,都启用的MFA认证,就是你输入你自己登录的密码后,还会弹出一个框,让你输入6位数字。这次自己设置一次MFA。

我是对着这个视频来操作。

https://www.youtube.com/watch?v=QfOFhQb8Wyk

企业MFA,实物就是一个u盘,打开一次,就更改一次数字

MFA

物理安全。现在大家都使用pc端或者手机端。这次我并不是用google的,而是自己搞了一个:keepassXC

https://keepassxc.org/

MFA (also called two-factor authentication or 2FA) is the practice of requiring additional authentication factors beyond the standard username-password combination most authentication mechanisms require.

TOTP (Time-based, One-Time Password) is a form of MFA that uses a randomly generated code as an additional authentication token. TOTP MFA codes are generally created via a smartphone app (e.g. Google Authenticator), so it falls under the “something you have” classification.

我的理解MFA就是TOTP协议的一个实现。

主账号登录阿里云

aliyun-安全设置

找到MFA

MFA

设置

mfa-step1

选择手机验证,其实这块选择人脸识别,也是可以,麻烦一点。

mfa-step2

输入短信的校验码就可以,这个步骤大家很熟悉。

mfa-steop3

直接下一步就可以。后续我们通过keepassXC来实现。

MFA-inputpassword

我是使用keepassXC

KeepassXC启动后,会初始化一个数据库,这个数据库存放的位置,需要注意。

创建一个新的项目,用来实现阿里云的MFA认证

KeepassXC启动后,会初始化一个数据库,这个数据库存放的位置,需要注意。

创建一个新的项目,用来实现阿里云的MFA认证

keepassxc

直接OK就可以,不需要填写任何内容。

TOTP-password

把密钥复制。填入上面的地方。

MFA-toker

搞定。我们现在就需要第一次使用KeepassXC,生成6位的一次性密码,输入到上面。

show-toker

看到我们需要的东西

动态密码

把这个六位数字,复制,粘贴到上面的6位数字的方框。就完成设备绑定。

这个时候,你在阿里云网站登录,输入用户名和密码后,会提示你输入动态密码,并且有一个选项,7天本机登录,也就是7天就只需要一次就可以。

解绑设备,你也是需要输入动态密码。如果你的keepassXC的数据库出现问题,那么你就只能后台找客服,才能搞定。

基于nginx实现web服务器的双机热备

1.适用场景

对于部署重要的服务,会使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。双机热备由备用的服务器解决了在主服务器故障时服务不中断的问题。

2.nginx

nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

3.方法

前提:

  1. nginx环境
  2. 准备两台web服务器
  • 192.168.81.146
  • 192.168.81.147
    在两台机器上部署相同web服务,共用一套存储设备,其中146服务器作为主服务器,147作为备用服务器。yii.nginx.com作为该web服务的域名。

步骤1. 配置nginx.conf文件
在nginx.conf文件里添加如下代码

复制代码
   #双机热备方式  
   upstream yii.nginx.com {  
       server 192.168.81.146:8080;  
       server 192.168.81.147:8080 backup;  
   }  
  
   #反向代理配置  
   server {  
     listen       80;  
     server_name  yii.nginx.com;  
     charset utf-8;  
     location /{  
        proxy_pass http://yii.nginx.com;  
     }  
  } 
复制代码

说明:backup是利用nginx的热备功能,这也是最典型的应用带来的重要好处之一,当非backup Server能够很好的为Client提供服务的时候,backup Server不对外界提供服务,此时backup Server处于冷状态;当所有非backup Server不能很好的为Client提供服务的时候,backup Server为Client提供服务,做到了热备,某台或者所有非backup Web Server宕机不会影响整个Web项目的访问功能,Web项目仍然可以为Client提供服务。

步骤2.启动nginx

1start nginx

步骤3.访问域名http://yii.nginx.com
访问http://yii.nginx.com域名,可以看到我们部署的web服务(我们看到的是146服务器上部署的服务),如果此时192.168.81.146的服务器出现故障,服务器无法连接,nginx自动将请求转发到备用服务器192.168.81.147:8080上。通过nginx的主备机制,使得用户访问的web服务不会因为主服务器的故障而无法访问。

4.测试方法可行性

通过上述步骤,我们可以测试nginx对于双机热备是否可行,我们在146机器上部署tomcat7.0,在147机器上部署tomcat8.0,当146机器没有故障时,访问域名我们可以看到界面是tomcat7.0,当我们关闭146服务,重新访问域名,访问页面是tocmat8.0,因此可以证明,当主服务器出现故障时无法提供服务时,备用服务器能代替主服务器提供服务,保证服务的不中断。

5.其他知识点

5.1关于nginx的反向代理

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

反向代理方式实际上就是一台负责转发的代理服务器,貌似充当了真正服务器的功能,但实际上并不是,代理服务器只是充当了转发的作用,并且从真正的服务器那里取得返回的数据。这样说,其实nginx完成的就是这样的工作。我们让nginx监听一个端口,譬如80端口,但实际上我们转发给在8080端口的tomcat,由它来处理真正的请求,当请求完成后,tomcat返回,但数据此时没直接返回,而是直接给nginx,由nginx进行返回,这里,我们会以为是nginx进行了处理,但实际上进行处理的是tomcat。

5.2关于双机热备

  1. 双机热备

从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。双机热备由备用的服务器解决了在主服务器故障时服务不中断的问题。

  1. 为什么使用双机热备

双机热备针对的是服务器的故障。
服务器的故障可能由各种原因引起,如设备故障、操作系统故障、软件系统故障等等。
而对于一些重要系统而言,用户是很难忍受这样长时间的服务中断的。因此,就需要通过双机热备,来避免长时间的服务中断,保证系统长期、可靠的服务。
决定是否使用双机热备,正确的方法是要分析一下系统的重要性以及对服务中断的容忍程度,以此决定是否使用双机热备。即,你的用户能容忍多长时间恢复服务,如果服务不能恢复会造成多大的影响。

  1. 双机热备的三种实现方案
    组成双机热备的方案主要的三种方式分别为:基于共享存储(磁盘阵列)的方式,全冗余方式和复制方式。
  • (1)基于共享存储(磁盘阵列)的方式
    共享存储方式主要通过磁盘阵列提供切换后,对数据完整性和连续性的保障。用户数据一般会放在磁盘阵列上,当主机宕机后,备机继续从磁盘阵列上取得原有数据。如下图所示
    这种方式因为使用一台存储设备,往往被业内人士称为磁盘单点故障。但一般来讲存储的安全性较高。所以如果忽略存储设备故障的情况下,这种方式也是业内采用最多的热备方式了。
  • (2)全冗余方式
    全冗余方式就是双机双存储,基于单台存储的传统双机热备方式,确实存在存储单点故障的情况,为实现存储冗余,存储高可用也已经越来越多的被用户接受。我们从理解上可以看出,双机热备最早是为解决服务器的计划性停机与非计划性宕机的解决方案,但是我们无法实现存储的计划性停机与非计划性宕机带来的服务器停机,而存储作为双机热备中唯一存储数据的设备,它一旦发生故障往往会造成双机热备系统全面崩溃。
  • (3)
    这种方式主要利用数据的同步方式,保证主备服务器的数据一致性。

宝塔面板谷歌身份认证绑定图文教程

我们经常在使用宝塔面板的时候为了安全开启各种认证,比如这个谷歌身份认证绑定。不过因为比较特殊,我们实际使用经常会出现问题,那怎么关闭呢?下面小白就图文介绍下宝塔面板的Google身份认证绑定。

设置教程
找到面板设置 – 谷歌身份认证 滑块到绿色即可打开,会有如下提示:

  • 必须要用到且了解此功能才决定自己是否要开启!
  • 如果无法验证,命令行输入”bt 24″ 取消谷歌登录认证
  • 请先下载APP,并完成安装和初始化
  • 开启服务后,请立即绑定,以免出现面板不能访问。
  • 开启后导致面板不能访问,可以点击下面链接了解解决方法。
宝塔面板google身份认证绑定

下载google身份认证器APP,或者跟小白一样下载”Authy”这款软件,优点是可以在线保存。可以多设备公用,还可以避免手机更换/重装导致密码丢失。强烈推荐!

宝塔谷歌身份认证

开启之前一定要确认自己能链接谷歌服务,一旦开启就得输入密码才能进入面板。如果不小心开启了,又没有设置谷歌身份认证密码,那么看下面关闭教程。

关闭教程

1、能正常使用谷歌身份验证器,进入面板 – google身份认证,关闭即可。

2、无法使用谷歌身份验证器,SSH进入,输入“bt”,选择24 关闭谷歌认证。

宝塔面板bt命令

宝塔面板安装memcached的误区及正确方法

宝塔面板添加memcached可以有效加速服务器访问速度,提高网站的用户体验。不过在实际使用中,魏艾斯博客发现很多新手有一个误区,就是添加了错误的memcached组件,导致起不到正常加速服务器的效果。本文中魏艾斯博客分享一下误区在哪里以及应该怎么安装是正确的加速组件。

1、错误的memcached组件添加方法

很多人直接安装下图中蓝色M字样的memcached组件。从这里安装后,服务器不会有加速效果,访问网站也不会感觉到比以前快。

2、正确的memcached安装方法

以老魏目前使用的php版本为例,正确安装方法是在“软件管理”的php7.0>设置中,找到“安装扩展”右侧的memcached,安装。这才是正确的memcached组件。安装完成后,再返回看到上图蓝色M字样的memcached已经自动安装上去了,无需人工干预。

也就是说这里有一个顺序问题,老魏测试了一下,如果你先安装上图蓝色M字样的Memcached,那么下图php7.0的memcached不会被安装,同样也起不到加速效果,失败;若先去php7.0中安装memcached,再返回会看到蓝色M字样的Memcached已经被自动安装好了,这时候服务器会加速,网站打开也会成倍提速,这才是正确的安装步骤和效果。请大家一定注意这个顺序不能乱搞,搞错了你会埋怨老魏分享错误、无效的资料,浪费你的时间、精力,却还没效果,其实是你把这个顺序搞颠倒了。

安装memcached组件后,还要安装一个插件,叫 memcached is your friend 这个插件。具体安装过程请移步安装 memcached 和 object-cache.php 中的第二步提到的这个插件,按照要求安装就可以了。宝塔面板如果不安装的话,memcached就不会正常工作了,命中率一直是0。

3、用宝塔面板加速

通过宝塔面板优化服务器速度、性能的参考资料如何设置宝塔面板优化 php 服务器性能,写的很详细了,这里不再啰嗦。

这个memcached是从服务器层面加速,比wordpress插件那种程序层面加速要快上很多,占用资源也小。因为wordpess缓存插件的原理是把数据库内容缓存到硬盘中,而memcached是缓存到内存中。内存的读取速度是几倍于硬盘读取速度的。不过你使用了memcached就必须卸载掉wordpress super cache之类的缓存插件,因为都是缓存插件会互相影响效果。

至于memcached的效果如何检测,有两种方法:一是使用宝塔面板自带的检测功能,不够直观;二是使用第三方php文件,很直观。操作起来很简单,请移步多种方法实时监测 Memcached命中率

http 慢拒绝服务攻击 nginx详细参数配置

Weblogic

============

1、在配置管理界面中的协议->一般信息下设置 完成消息超时时间小于400

2、在配置管理界面中的协议->HTTP下设置 POST 超时、持续时间、最大 POST 大小为安全值范围。

Nginx

============

1、通过调整$request_method,配置服务器接受http包的操作限制;

2、在保证业务不受影响的前提下,调整client_max_body_size, client_body_buffer_size, client_header_buffer_size,large_client_header_buffersclient_body_timeout, client_header_timeout的值,必要时可以适当的增加;

3、对于会话或者相同的ip地址,可以使用HttpLimitReqModule and HttpLimitZoneModule参数去限制请求量或者并发连接数;

4、根据CPU和负载的大小,来配置worker_processes 和 worker_connections的值,公式是:max_clients = worker_processes * worker_connections。

 

nginx 配置详情:

keepalive_timeout 

Nginx 使用 keepalive_timeout 来指定 KeepAlive 的超时时间(timeout)。指定每个 TCP 连接最多可以保持多长时间。Nginx 的默认值是 75 秒,有些浏览器最多只保持 60 秒,所以可以设定为 60 秒。若将它设置为 0,就禁止了 keepalive 连接。

client_body_timeout

指定客户端与服务端建立连接后发送 request body 的超时时间。如果客户端在指定时间内没有发送任何内容,Nginx 返回 HTTP 408(Request Timed Out)。

# 配置段: http, server, location

client_body_timeout 20s;

client_header_timeout

客户端向服务端发送一个完整的 request header 的超时时间。如果客户端在指定时间内没有发送一个完整的 request header,Nginx 返回 HTTP 408(Request Timed Out)。

# 配置段: http, server, location

client_header_timeout 10s;

send_timeout

服务端向客户端传输数据的超时时间。

# 配置段: http, server, location

send_timeout 30s;

client_body_buffer_size


此指令设置用于请求主体的缓冲区大小。 如果主体超过缓冲区大小,则完整主体或其一部分将写入临时文件。 如果NGINX配置为使用文件而不是内存缓冲区,则该指令会被忽略。 默认情况下,该指令为32位系统设置一个8k缓冲区,为64位系统设置一个16k缓冲区。 该指令在NGINX配置的http,server和location区块使用。如下:

  1. server{
  2.       client_body_buffer_size 8k;
  3. }

client_max_body_size


此指令设置NGINX能处理的最大请求主体大小。 如果请求大于指定的大小,则NGINX发回HTTP 413(Request Entity too large)错误。 如果服务器处理大文件上传,则该指令非常重要。

默认情况下,该指令值为1m。 如下:

  1. server{
  2.       client_max_body_size 2m;
  3. }

client_body_in_file_only


此指令禁用NGINX缓冲区并将请求体存储在临时文件中。 文件包含纯文本数据。 该指令在NGINX配置的http,server和location区块使用。 可选值有:
off:该值将禁用文件写入
clean:请求body将被写入文件。 该文件将在处理请求后删除。
on: 请求正文将被写入文件。 处理请求后,将不会删除该文件。
默认情况下,指令值为关闭。 如下:

  1. http{
  2.       client_body_in_file_only clean;
  3. }

client_body_in_single_buffer


该指令设置NGINX将完整的请求主体存储在单个缓冲区中。 默认情况下,指令值为off。 如果启用,它将优化读取$request_body变量时涉及的I/O操作。如下例子:

  1. server{
  2.       client_body_in_single_buffer on;
  3. }

client_body_temp_path


此指令指定存储请求正文的临时文件的位置。 除了位置之外,指令还可以指定文件是否需要最多三个级别的文件夹层次结构。 级别指定为用于生成文件夹的位数。
默认情况下,NGINX在NGINX安装路径下的client_body_temp文件夹创建临时文件。 如下例子:

  1. server{
  2.       client_body_temp_pathtemp_files 1 2;
  3.       }

该指令生成的文件路径如temp_files/1/05/0000003051。

client_header_buffer_size


此指令与client_body_buffer_size类似。 它为请求头分配一个缓冲区。 如果请求头大小大于指定的缓冲区,则使用large_client_header_buffers指令分配更大的缓冲区。如下例子:

  1. http{
  2.       client_header_buffer_size 1m;
  3.       }

large_client_header_buffers


此指令规定了用于读取大型客户端请求头的缓冲区的最大数量和大小。 这些缓冲区仅在缺省缓冲区不足时按需分配。 当处理请求或连接转换到保持活动状态时,释放缓冲区。如下例子:

  1. http{
  2.     large_client_header_buffers 4 8k;
  3.    }

服务器变成不可描述的服务者

更新系统:
yum update -y #CentOS系统命令
apt update -y #Debian系统命令
———ubuntu系统—–
启动bbr
sudo bash -c ‘echo “net.core.default_qdisc=fq” >> /etc/sysctl.conf’
sudo bash -c ‘echo “net.ipv4.tcp_congestion_control=bbr” >> /etc/sysctl.conf’
sysctl -p

查看bbr是否开启成功
lsmod | grep bbr

开放端口
开放所有端口
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
关闭防火墙
apt-get purge netfilter-persistent
reboot
————–centos系统————
关闭防火墙
systemctl stop firewalld.service && systemctl disable firewalld.service
开启bbr
echo “net.core.default_qdisc=fq” >> /etc/sysctl.conf
echo “net.ipv4.tcp_congestion_control=bbr” >> /etc/sysctl.conf
sysctl -p
sysctl -n net.ipv4.tcp_congestion_control
查看bbr是否开启成功
lsmod | grep bbr
—————搭建————–
安装组件
yum install -y wget #CentOS系统命令
apt install -y wget #Debian系统命令

xray一键安装脚本
wget -P /root -N –no-check-certificate “https://raw.githubusercontent.com/mack-a/v2ray-agent/master/install.sh” && chmod 700 /root/install.sh && /root/install.sh