欢迎光临
我们一直在努力

几十万换来的Ddos攻击防护经验分享

shenzt@sina.com阅读(203)

本人从事网络安全行业20年。有15年防ddos攻击防护经验。被骗了很多回(都说能防300G,500G,买完就防不住了),本文当然重点给大家说明,ddos攻击是什么,中小企业如何防护,用到成本等。

2004年记得是,晚上我带着螺丝刀,晚上2点去机房维护,有ddos攻击,被警察当贼了,汗,那时华夏黑客同盟天天有攻击,远程连接不上得去机房,机房也不知道ddos是什么只知道流量大,一句话,你中病毒了。电信通机房惠普大厦机房。

言归正传

首先我们说说ddos攻击方式,记住一句话,这是一个世界级的难题并没有解决办法只能缓解

DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是目前最强大、最难防御的攻击之一。这是一个世界级的难题并没有解决办法只能缓解.

按照发起的方式,DDoS可以简单分为三类。

第一类以力取胜,海量数据包从互联网的各个角落蜂拥而来,堵塞IDC入口,让各种强大的硬件防御系统、快速高效的应急流程无用武之地。这种类型的攻击典型代表是ICMP Flood和UDP Flood,现在已不常见。

第二类以巧取胜,灵动而难以察觉,每隔几分钟发一个包甚至只需要一个包,就可以让豪华配置的服务器不再响应。这类攻击主要是利用协议或者软件的漏洞发起,例如Slowloris攻击、Hash冲突攻击等,需要特定环境机缘巧合下才能出现。

第三类是上述两种的混合,轻灵浑厚兼而有之,既利用了协议、系统的缺陷,又具备了海量的流量,例如SYN Flood攻击、DNS Query Flood攻击,是当前的主流攻击方式。

本文将一一描述这些最常见、最具代表性攻击方式,并介绍它们的防御方案。

SYN Flood

SYN Flood是互联网上最经典的DDoS攻击方式之一,最早出现于1999年左右,雅虎是当时最著名的受害者。SYN Flood攻击利用了TCP三次握手的缺陷,能够以较小代价使目标服务器无法响应,且难以追查。

标准的TCP三次握手过程如下:

1、客户端发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号;

2、服务器在收到客户端的SYN报文后,将返回一个SYN+ACK(即确认Acknowledgement)的报文,表示客户端的请求被接受,同时TCP初始序号自动加1;

3、客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加1。

经过这三步,TCP连接就建立完成。TCP协议为了实现可靠传输,在三次握手的过程中设置了一些异常处理机制。第三步中如果服务器没有收到客户端的最终ACK确认报文,会一直处于SYN_RECV状态,将客户端IP加入等待列表,并重发第二步的SYN+ACK报文。重发一般进行3-5次,大约间隔30秒左右轮询一次等待列表重试所有客户端。另一方面,服务器在自己发出了SYN+ACK报文后,会预分配资源为即将建立的TCP连接储存信息做准备,这个资源在等待重试期间一直保留。更为重要的是,服务器资源有限,可以维护的SYN_RECV状态超过极限后就不再接受新的SYN报文,也就是拒绝新的TCP连接建立。

SYN Flood正是利用了上文中TCP协议的设定,达到攻击的目的。攻击者伪装大量的IP地址给服务器发送SYN报文,由于伪造的IP地址几乎不可能存在,也就几乎没有设备会给服务器返回任何应答了。因此,服务器将会维持一个庞大的等待列表,不停地重试发送SYN+ACK报文,同时占用着大量的资源无法释放。更为关键的是,被攻击服务器的SYN_RECV队列被恶意的数据包占满,不再接受新的SYN请求,合法用户无法完成三次握手建立起TCP连接。也就是说,这个服务器被SYN Flood拒绝服务了。

对SYN Flood ddos攻击软件,有兴趣的可以看看

http://www.77169.org/hack/201508/205870.shtm  我写的。

DNS Query Flood

作为互联网最基础、最核心的服务,DNS自然也是DDoS攻击的重要目标之一。打垮DNS服务能够间接打垮一家公司的全部业务,或者打垮一个地区的网络服务。前些时候风头正盛的黑客组织anonymous也曾经宣布要攻击全球互联网的13台根DNS服务器,不过最终没有得手。

UDP攻击是最容易发起海量流量的攻击手段,而且源IP随机伪造难以追查。但过滤比较容易,因为大多数IP并不提供UDP服务,直接丢弃UDP流量即可。所以现在纯粹的UDP流量攻击比较少见了,取而代之的是UDP协议承载的DNS Query Flood攻击。简单地说,越上层协议上发动的DDoS攻击越难以防御,因为协议越上层,与业务关联越大,防御系统面临的情况越复杂。

DNS Query Flood就是攻击者操纵大量傀儡机器,对目标发起海量的域名查询请求。为了防止基于ACL的过滤,必须提高数据包的随机性。常用的做法是UDP层随机伪造源IP地址、随机伪造源端口等参数。在DNS协议层,随机伪造查询ID以及待解析域名。随机伪造待解析域名除了防止过滤外,还可以降低命中DNS缓存的可能性,尽可能多地消耗DNS服务器的CPU资源。

关于DNS Query Flood的代码,我在2011年7月为了测试服务器性能曾经写过一份代码,链接是http://www.icylife.net/yunshu/show.php?id=832。同样的,这份代码人为降低了攻击性,只做测试用途。

HTTP Flood

上文描述的SYN Flood、DNS Query Flood在现阶段已经能做到有效防御了,真正令各大厂商以及互联网企业头疼的是HTTP Flood攻击。HTTP Flood是针对Web服务在第七层协议发起的攻击。它的巨大危害性主要表现在三个方面:发起方便、过滤困难、影响深远。

SYN Flood和DNS Query Flood都需要攻击者以root权限控制大批量的傀儡机。收集大量root权限的傀儡机很花费时间和精力,而且在攻击过程中傀儡机会由于流量异常被管理员发现,攻击者的资源快速损耗而补充缓慢,导致攻击强度明显降低而且不可长期持续。HTTP Flood攻击则不同,攻击者并不需要控制大批的傀儡机,取而代之的是通过端口扫描程序在互联网上寻找匿名的HTTP代理或者SOCKS代理,攻击者通过匿名代理对攻击目标发起HTTP请求。匿名代理是一种比较丰富的资源,花几天时间获取代理并不是难事,因此攻击容易发起而且可以长期高强度的持续。

另一方面,HTTP Flood攻击在HTTP层发起,极力模仿正常用户的网页请求行为,与网站业务紧密相关,安全厂商很难提供一套通用的且不影响用户体验的方案。在一个地方工作得很好的规则,换一个场景可能带来大量的误杀。

最后,HTTP Flood攻击会引起严重的连锁反应,不仅仅是直接导致被攻击的Web前端响应缓慢,还间接攻击到后端的Java等业务层逻辑以及更后端的数据库服务,增大它们的压力,甚至对日志存储服务器都带来影响。

有意思的是,HTTP Flood还有个颇有历史渊源的昵称叫做CC攻击。CC是Challenge Collapsar的缩写,而Collapsar是国内一家著名安全公司的DDoS防御设备。从目前的情况来看,不仅仅是Collapsar,所有的硬件防御设备都还在被挑战着,风险并未解除。

慢速连接攻击

提起攻击,第一反应就是海量的流量、海量的报文。但有一种攻击却反其道而行之,以慢著称,以至于有些攻击目标被打死了都不知道是怎么死的,这就是慢速连接攻击,最具代表性的是rsnake发明的Slowloris。

HTTP协议规定,HTTP Request以\r\n\r\n结尾表示客户端发送结束,服务端开始处理。那么,如果永远不发送\r\n\r\n会如何?Slowloris就是利用这一点来做DDoS攻击的。攻击者在HTTP请求头中将Connection设置为Keep-Alive,要求Web Server保持TCP连接不要断开,随后缓慢地每隔几分钟发送一个key-value格式的数据到服务端,如a:b\r\n,导致服务端认为HTTP头部没有接收完成而一直等待。如果攻击者使用多线程或者傀儡机来做同样的操作,服务器的Web容器很快就被攻击者占满了TCP连接而不再接受新的请求。

很快的,Slowloris开始出现各种变种。比如POST方法向Web Server提交数据、填充一大大Content-Length但缓慢的一个字节一个字节的POST真正数据内容等等。关于Slowloris攻击,rsnake也给出了一个测试代码,参见http://ha.ckers.org/slowloris/slowloris.pl。

DDoS攻击进阶

混合攻击

以上介绍了几种基础的攻击手段,其中任意一种都可以用来攻击网络,甚至击垮阿里、百度、腾讯这种巨型网站。但这些并不是全部,不同层次的攻击者能够发起完全不同的DDoS攻击,运用之妙,存乎一心。

高级攻击者从来不会使用单一的手段进行攻击,而是根据目标环境灵活组合。普通的SYN Flood容易被流量清洗设备通过反向探测、SYN Cookie等技术手段过滤掉,但如果在SYN Flood中混入SYN+ACK数据包,使每一个伪造的SYN数据包都有一个与之对应的伪造的客户端确认报文,这里的对应是指源IP地址、源端口、目的IP、目的端口、TCP窗口大小、TTL等都符合同一个主机同一个TCP Flow的特征,流量清洗设备的反向探测和SYN Cookie性能压力将会显著增大。其实SYN数据报文配合其他各种标志位,都有特殊的攻击效果,这里不一一介绍。对DNS Query Flood而言,也有独特的技巧。

首先,DNS可以分为普通DNS和授权域DNS,攻击普通DNS,IP地址需要随机伪造,并且指明服务器要求做递归解析;但攻击授权域DNS,伪造的源IP地址则不应该是纯随机的,而应该是事先收集的全球各地ISP的DNS地址,这样才能达到最大攻击效果,使流量清洗设备处于添加IP黑名单还是不添加IP黑名单的尴尬处境。添加会导致大量误杀,不添加黑名单则每个报文都需要反向探测从而加大性能压力。

另一方面,前面提到,为了加大清洗设备的压力不命中缓存而需要随机化请求的域名,但需要注意的是,待解析域名必须在伪造中带有一定的规律性,比如说只伪造域名的某一部分而固化一部分,用来突破清洗设备设置的白名单。道理很简单,腾讯的服务器可以只解析腾讯的域名,完全随机的域名可能会直接被丢弃,需要固化。但如果完全固定,也很容易直接被丢弃,因此又需要伪造一部分。

其次,对DNS的攻击不应该只着重于UDP端口,根据DNS协议,TCP端口也是标准服务。在攻击时,可以UDP和TCP攻击同时进行。

HTTP Flood的着重点,在于突破前端的cache,通过HTTP头中的字段设置直接到达Web Server本身。另外,HTTP Flood对目标的选取也非常关键,一般的攻击者会选择搜索之类需要做大量数据查询的页面作为攻击目标,这是非常正确的,可以消耗服务器尽可能多的资源。但这种攻击容易被清洗设备通过人机识别的方式识别出来,那么如何解决这个问题?很简单,尽量选择正常用户也通过APP访问的页面,一般来说就是各种Web API。正常用户和恶意流量都是来源于APP,人机差别很小,基本融为一体难以区分。

之类的慢速攻击,是通过巧妙的手段占住连接不释放达到攻击的目的,但这也是双刃剑,每一个TCP连接既存在于服务端也存在于自身,自身也需要消耗资源维持TCP状态,因此连接不能保持太多。如果可以解决这一点,攻击性会得到极大增强,也就是说Slowloris可以通过stateless的方式发动攻击,在客户端通过嗅探捕获TCP的序列号和确认维护TCP连接,系统内核无需关注TCP的各种状态变迁,一台笔记本即可产生多达65535个TCP连接。

前面描述的,都是技术层面的攻击增强。在人的方面,还可以有一些别的手段。如果SYN Flood发出大量数据包正面强攻,再辅之以Slowloris慢速连接,多少人能够发现其中的秘密?即使服务器宕机了也许还只发现了SYN攻击想去加强TCP层清洗而忽视了应用层的行为。种种攻击都可以互相配合,达到最大的效果。攻击时间的选择,也是一大关键,比如说选择维护人员吃午饭时、维护人员下班堵在路上或者在地铁里无线上网卡都没有信号时、目标企业在举行大规模活动流量飙升时等。

这里描述的只是纯粹的攻击行为,因此不提供代码,也不做深入介绍。

来自P2P网络的攻击

前面的攻击方式,多多少少都需要一些傀儡机,即使是HTTP Flood也需要搜索大量的匿名代理。如果有一种攻击,只需要发出一些指令,就有机器自动上来执行,才是完美的方案。这种攻击已经出现了,那就是来自P2P网络的攻击。

大家都知道,互联网上的P2P用户和流量都是一个极为庞大的数字。如果他们都去一个指定的地方下载数据,使成千上万的真实IP地址连接过来,没有哪个设备能够支撑住。拿BT下载来说,伪造一些热门视频的种子,发布到搜索引擎,就足以骗到许多用户和流量了,但这只是基础攻击。

高级P2P攻击,是直接欺骗资源管理服务器。如迅雷客户端会把自己发现的资源上传到资源管理服务器,然后推送给其他需要下载相同资源的用户,这样,一个链接就发布出去。通过协议逆向,攻击者伪造出大批量的热门资源信息通过资源管理中心分发出去,瞬间就可以传遍整个P2P网络。更为恐怖的是,这种攻击是无法停止的,即使是攻击者自身也无法停止,攻击一直持续到P2P官方发现问题更新服务器且下载用户重启下载软件时为止。

CC

ChallengeCollapsar的名字源于挑战国内知名安全厂商绿盟的抗DDOS设备-“黑洞”,通过botnet的傀儡主机或寻找匿名代理服务器,向目标发起大量真实的http请求,最终消耗掉大量的并发资源,拖慢整个网站甚至彻底拒绝服务。

互联网的架构追求扩展性本质上是为了提高并发能力,各种SQL性能优化措施:消除慢查询、分表分库、索引、优化数据结构、限制搜索频率等本质都是为了解决资源消耗,而CC大有反其道而行之的意味,占满服务器并发连接数,尽可能使请求避开缓存而直接读数据库,读数据库要找最消耗资源的查询,最好无法利用索引,每个查询都全表扫描,这样就能用最小的攻击资源起到最大的拒绝服务效果。

互联网产品和服务依靠数据分析来驱动改进和持续运营,所以除了前端的APP、中间件和数据库这类OLTP系统,后面还有OLAP,从日志收集,存储到数据处理和分析的大数据平台,当CC攻击发生时,不仅OLTP的部分受到了影响,实际上CC会产生大量日志,直接会对后面的OLAP产生影响,影响包括两个层面,一个当日的数据统计完全是错误的。第二个层面因CC期间访问日志剧增也会加大后端数据处理的负担。

CC是目前应用层攻击的主要手段之一,在防御上有一些方法,但不能完美解决这个问题。

反射型

2004年时DRDOS第一次披露,通过将SYN包的源地址设置为目标地址,然后向大量的

真实TCP服务器发送TCP的SYN包,而这些收到SYN包的TCP server为了完成3次握手把SYN|ACK包“应答”给目标地址,完成了一次“反射”攻击,攻击者隐藏了自身,但有个问题是攻击者制造的流量和目标收到的攻击流量是1:1,且SYN|ACK包到达目标后马上被回以RST包,整个攻击的投资回报率不高。

反射型攻击的本质是利用“质询-应答”式协议,将质询包的源地址通过原始套接字伪造设置为目标地址,则应答的“回包”都被发送至目标,如果回包体积比较大或协议支持递归效果,攻击流量会被放大,成为一种高性价比的流量型攻击。

反射型攻击利用的协议目前包括NTP、Chargen、SSDP、DNS、RPC portmap等等。

流量放大型

以上面提到的DRDOS中常见的SSDP协议为例,攻击者将Searchtype设置为ALL,搜索所有可用的设备和服务,这种递归效果产生的放大倍数是非常大的,攻击者只需要以较小的伪造源地址的查询流量就可以制造出几十甚至上百倍的应答流量发送至目标。

防御基础

  攻击流量到底多大,这是一个关键问题。攻击量的大小。用的防护方法不一样。下面给你讲一讲,1G之内的防护方式。费用在,<1万,每月

谈到DDoS防御,首先就是要知道到底遭受了多大的攻击。这个问题看似简单,实际上却有很多不为人知的细节在里面。

以SYN Flood为例,为了提高发送效率在服务端产生更多的SYN等待队列,攻击程序在填充包头时,IP首部和TCP首部都不填充可选的字段,因此IP首部长度恰好是20字节,TCP首部也是20字节,共40字节。

对于以太网来说,最小的包长度数据段必须达到46字节,而攻击报文只有40字节,因此,网卡在发送时,会做一些处理,在TCP首部的末尾,填充6个0来满足最小包的长度要求。这个时候,整个数据包的长度为14字节的以太网头,20字节的IP头,20字节的TCP头,再加上因为最小包长度要求而填充的6个字节的0,一共是60字节。

但这还没有结束。以太网在传输数据时,还有CRC检验的要求。网卡会在发送数据之前对数据包进行CRC检验,将4字节的CRC值附加到包头的最后面。这个时候,数据包长度已不再是40字节,而是变成64字节了,这就是常说的SYN小包攻击,数据包结构如下:

|14字节以太网头部|20字节IP头部|20字节TCP|6字节填充|4字节检验|

|目的MAC|源MAC|协议类型| IP头 |TCP头|以太网填充 | CRC检验 |

到64字节时,SYN数据包已经填充完成,准备开始传输了。攻击数据包很小,远远不够最大传输单元(MTU)的1500字节,因此不会被分片。那么这些数据包就像生产流水线上的罐头一样,一个包连着一个包紧密地挤在一起传输吗?事实上不是这样的。

以太网在传输时,还有前导码(preamble)和帧间距(inter-frame gap)。其中前导码占8字节(byte),即64比特位。前导码前面的7字节都是10101010,1和0间隔而成。但第八个字节就变成了10101011,当主机监测到连续的两个1时,就知道后面开始是数据了。在网络传输时,数据的结构如下:

|8字节前导码|6字节目的MAC地址|6字节源MAC地址|2字节上层协议类型|20字节IP头|20字节TCP头|6字节以太网填充|4字节CRC检验|12字节帧间距|

也就是说,一个本来只有40字节的SYN包,在网络上传输时占的带宽,其实是84字节。

有了上面的基础,现在可以开始计算攻击流量和网络设备的线速问题了。当只填充IP头和TCP头的最小SYN包跑在以太网络上时,100Mbit的网络,能支持的最大PPS(Packet Per Second)是100×106 / (8 * (64+8+12)) = 148809,1000Mbit的网络,能支持的最大PPS是1488090。

SYN Flood防御

前文描述过,SYN Flood攻击大量消耗服务器的CPU、内存资源,并占满SYN等待队列。相应的,我们修改内核参数即可有效缓解。主要参数如下:

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_max_syn_backlog = 8192

net.ipv4.tcp_synack_retries = 2

分别为启用SYN Cookie、设置SYN最大队列长度以及设置SYN+ACK最大重试次数。

SYN Cookie的作用是缓解服务器资源压力。启用之前,服务器在接到SYN数据包后,立即分配存储空间,并随机化一个数字作为SYN号发送SYN+ACK数据包。然后保存连接的状态信息等待客户端确认。启用SYN Cookie之后,服务器不再分配存储空间,而且通过基于时间种子的随机数算法设置一个SYN号,替代完全随机的SYN号。发送完SYN+ACK确认报文之后,清空资源不保存任何状态信息。直到服务器接到客户端的最终ACK包,通过Cookie检验算法鉴定是否与发出去的SYN+ACK报文序列号匹配,匹配则通过完成握手,失败则丢弃。当然,前文的高级攻击中有SYN混合ACK的攻击方法,则是对此种防御方法的反击,其中优劣由双方的硬件配置决定

tcp_max_syn_backlog则是使用服务器的内存资源,换取更大的等待队列长度,让攻击数据包不至于占满所有连接而导致正常用户无法完成握手。net.ipv4.tcp_synack_retries是降低服务器SYN+ACK报文重试次数,尽快释放等待资源。这三种措施与攻击的三种危害一一对应,完完全全地对症下药。但这些措施也是双刃剑,可能消耗服务器更多的内存资源,甚至影响正常用户建立TCP连接,需要评估服务器硬件资源和攻击大小谨慎设置。

除了定制TCP/IP协议栈之外,还有一种常见做法是TCP首包丢弃方案,利用TCP协议的重传机制识别正常用户和攻击报文。当防御设备接到一个IP地址的SYN报文后,简单比对该IP是否存在于白名单中,存在则转发到后端。如不存在于白名单中,检查是否是该IP在一定时间段内的首次SYN报文,不是则检查是否重传报文,是重传则转发并加入白名单,不是则丢弃并加入黑名单。是首次SYN报文则丢弃并等待一段时间以试图接受该IP的SYN重传报文,等待超时则判定为攻击报文加入黑名单。

首包丢弃方案对用户体验会略有影响,因为丢弃首包重传会增大业务的响应时间,有鉴于此发展出了一种更优的TCP Proxy方案。所有的SYN数据报文由清洗设备接受,按照SYN Cookie方案处理。和设备成功建立了TCP三次握手的IP地址被判定为合法用户加入白名单,由设备伪装真实客户端IP地址再与真实服务器完成三次握手,随后转发数据。而指定时间内没有和设备完成三次握手的IP地址,被判定为恶意IP地址屏蔽一定时间。除了SYN Cookie结合TCP Proxy外,清洗设备还具备多种畸形TCP标志位数据包探测的能力,通过对SYN报文返回非预期应答测试客户端反应的方式来鉴别正常访问和恶意行为。

清洗设备的硬件具有特殊的网络处理器芯片和特别优化的操作系统、TCP/IP协议栈,可以处理非常巨大的流量和SYN队列。

HTTP Flood防御

HTTP Flood攻击防御主要通过缓存的方式进行,尽量由设备的缓存直接返回结果来保护后端业务。大型的互联网企业,会有庞大的CDN节点缓存内容。

当高级攻击者穿透缓存时,清洗设备会截获HTTP请求做特殊处理。最简单的方法就是对源IP的HTTP请求频率做统计,高于一定频率的IP地址加入黑名单。这种方法过于简单,容易带来误杀,并且无法屏蔽来自代理服务器的攻击,因此逐渐废止,取而代之的是JavaScript跳转人机识别方案。

HTTP Flood是由程序模拟HTTP请求,一般来说不会解析服务端返回数据,更不会解析JS之类代码。因此当清洗设备截获到HTTP请求时,返回一段特殊JavaScript代码,正常用户的浏览器会处理并正常跳转不影响使用,而攻击程序会攻击到空处。

DNS Flood防御

DNS攻击防御也有类似HTTP的防御手段,第一方案是缓存。其次是重发,可以是直接丢弃DNS报文导致UDP层面的请求重发,可以是返回特殊响应强制要求客户端使用TCP协议重发DNS查询请求。

特殊的,对于授权域DNS的保护,设备会在业务正常时期提取收到的DNS域名列表和ISP DNS IP列表备用,在攻击时,非此列表的请求一律丢弃,大幅降低性能压力。对于域名,实行同样的域名白名单机制,非白名单中的域名解析请求,做丢弃处理。

慢速连接攻击防御

Slowloris攻击防御比较简单,主要方案有两个。

第一个是统计每个TCP连接的时长并计算单位时间内通过的报文数量即可做精确识别。一个TCP连接中,HTTP报文太少和报文太多都是不正常的,过少可能是慢速连接攻击,过多可能是使用HTTP 1.1协议进行的HTTP Flood攻击,在一个TCP连接中发送多个HTTP请求。

第二个是限制HTTP头部传输的最大许可时间。超过指定时间HTTP Header还没有传输完成,直接判定源IP地址为慢速连接攻击,中断连接并加入黑名单。

~~~~~~~~~~~~~~~~~~~~~·

下面我们细说一下,不同攻击量对应对方式

如果超过,>10G 攻击,如果大于10G攻击软件防护就扯蛋,

下面记住一句话,防ddos攻击大小于取决于你带宽的大小,与软件没关系。

国内现在100M带宽一个月就,便宜的8000,贵的2万多,1G带宽,8万,10G带宽,80万,你确定要自己防护?

业务逻辑很很多种,每家都不太一样,

WEB类型,这个是攻击最多,防护方案更广,可以选择国内,国外,cdn加速等,

游戏类型,这个必须得放在国内,放国外太卡,掉线,没人玩了

解决办法就是找第三方防ddos解决商,

10~50G防护,国内很多机房都可以防护,问题你给的钱够不够idc机房是否给你防护,他们防护示意图,

机房有一个总带宽,如果你攻击带宽太大就影响他正常客户,他就会找各种借口给你ip屏蔽。

很多攻击持续的时间非常短,通常5分钟以内,流量图上表现为突刺状的脉冲。

实际对机房没有什么影响,但是机房就给你ip屏蔽了,这个用于攻击游戏类网站,搞一会一掉线,用户全掉光了,

50G之间,单机防护,浙江,江苏,广东,都可以防都可以防护,月成本,2万左右,(价格说小于1万那就是骗子,已经测试过)

网上很多说无视,320G防护,全是吹牛的,他说的320G,应当就是udp攻击,因为电信上层给屏蔽了udp带宽,

广东有双线,合适放游戏类网站,速度快,防护还可以,

广东有些ip是屏蔽国外的流量,还有屏蔽联通的流量,意思就是除了电信的别的地方的流量都过不来,

就像这个ISP近源清洗

100~200G之个,这个现在是关键了,现在攻击这个是最多的,游戏类网站如果有怎么大攻击放国内,现在能有怎么大防护的,电信,广东,福州,广西,联通,有大连,

福州买过,2万多一个月,说防300G,130G就给封了,骗子,dns防护也不行,10G左右的dns攻击直接搞死了

广东机房买过,3万一个月,100g 就给封了,不过广东可以秒解,买200个ip,还是能防一会,广东的直接访问不了dns,机房做策略了。

广西,这个正测试,前几天放了dns在广西机房,打死了。

DNS攻击防护也是重点,买了dnspod的最贵那个版本3万多/年,封了,dnspod也,老吴不在那了吗?搞别的去了,现在真是垃圾,指着dnspod防护差远了,我给大家介绍一下,google有dns防护,好用,比dnspod便宜很多,还有CF,也非常好,200刀,没打死过。

上面就浪费十来万,测试dns测试100G防护,总结的经验,

游戏的只能放国内,还得看是udp,还是tcp,所以防护范围小。

WEB的防护比较多,可以考虑放国外,

现在国外比较能吹的,

美国SK机房,防100G,买了,安排机器花了2天,这个攻击完了ip,封1小时,真心不行。机房还老掉线,花了1万左右可能一个月,

美国hs机房,防80G,一个月8万,买了,打死了,他防到40G左右就给你封了,也跟骗子差不多,说是要加到200G防护,没看到,

美国CD机房,最后花了>10万每月,找的他们老板防住了,但是dns防护不行。

还有一家机房可以推荐,加拿大机房,单机防160G,集群480G,不封ip,防护还可以,缺点,卡,国内ping掉包,8000左右一个月,20元一个ip,

上面速度最快的是hs机房国内,150ms左右,没攻击的时候用用还行,有攻击防护差点意思。

我不是给机房做广告,我只是总结我最近防护的经验,国内可以放免备案的机房也有,资源联系方式,dns防攻击500G,都可以,你联系我。我可以免费告诉你这些资源的联系方式,

~~~~~~~~~~~~~~~~~~~~~~~~~~

最后说一下,云加速,

国内的云盾,收费死贵,防护不行,别看他家的了。

阿里云防护,单机防4个G,不贵,小企业可以用,缺点得备案,还有如果你有非法信息,他们可以直接给报官了(最垃圾的是这点)

百度云加速,说是防1T攻击,我认真研究了一下,他是联合,国外的CF云加速,电信的云堤(近源清洗)说能防1T,攻击400G他转到CF国外,国内600G攻击,全是云堤防护的,

什么是近源清洗,就是江苏有攻击,到电信江苏的出口的时候,isp,中国电信直接不让他出口,

目前如中国电信的专门做抗DDOS的云堤提供了[近源清洗]和[流量压制]的服务,对于购买其服务的厂商来说可以自定义需要黑洞路由的IP与电信的设备联动,黑洞路由是一种简单粗暴的方法,除了攻击流量,部分真实用户的访问也会被一起黑洞掉,对用户体验是一种打折扣的行为,本质上属于为了保障留给其余用户的链路带宽的弃卒保帅的做法,之所以还会有这种收费服务是因为假如不这么做,全站服务会对所有用户彻底无法访问。对于云清洗厂商而言,实际上也需要借助黑洞路由与电信联动。

百度云加速,还没测试过,不评价,总结国内的厂商全是吹牛B的比较多,行业就这样,

国外的比较可靠,但是收费的确不便宜,

三家,可以推荐,

亚马逊,30G攻击无视,攻击大了,也给你封了,推荐他最大优点,按流量收费,可以按小时收费,不要备案,国内还得先备案,这我买6个节点,用三天死了。

CF加速,这个dns防护无敌,百度云加速就是联合的他家。

akamai,这家是给苹果做防护的,说只有苹果发布会的打死过一次,我没试太贵了,1G,3.5元,一天估计就得5000左右一天,

cdn加速,是防CC的一个主要手段

CDN/Internet层CDN并不是一种抗DDOS的产品,但对于web类服务而言,他却正好有一定的抗DDOS能力,以大型电商的抢购为例,这个访问量非常大,从很多指标上看不亚于DDOS的CC,而在平台侧实际上在CDN层面用验证码过滤了绝大多数请求,最后到达数据库的请求只占整体请求量的很小一部分。

对http CC类型的DDOS,不会直接到源站,CDN会先通过自身的带宽硬抗,抗不了的或者穿透CDN的动态请求会到源站,如果源站前端的抗DDOS能力或者源站前的带宽比较有限,就会被彻底DDOS。

~~~~~~~~~~~~~~~

如果你是正规网站,你别怕有攻击,不会有怎么大攻击的,现在黑客主要攻击那些非正规的网站,H 站,棋牌,菠菜,都是攻击要钱的,

正规网站他不会天天来打死你,攻击你的都是竞争对手。

如果有一天,有人攻击你要钱,下面就是要做的事。

立案和追踪

目前对于流量在100G以上的攻击是可以立案的,这比过去幸福了很多。过去没有本土特色的资源甚至都没法立案,但是立案只是万里长征的第一步,如果你想找到人,必须成功完成以下步骤:

在海量的攻击中,寻找倒推的线索,找出可能是C&C服务器的IP或相关域名等

“黑”吃“黑”,端掉C&C服务器

通过登录IP或借助第三方APT的大数据资源(如果你能得到的话)物理定位攻击者

陪叔叔们上门抓捕

上法庭诉讼

如果这个人没有特殊身份,也许你就能如愿,但假如遇到一些特殊人物,你几个月都白忙乎。而黑吃黑的能力则依赖于安全团队本身的渗透能力比较强,且有闲情逸致做这事。这个过程对很多企业来说成本还是有点高,光有实力的安全团队这条门槛就足以砍掉绝大多数公司。笔者过去也只是恰好有缘遇到了这么一个团队。

是有成功案例,燕郊,黄总,有人攻击他要钱,完了他打了几千,报警抓住了。但不是你报警就有人管你的,还得有关系(国情你懂的)不过,你可以找我呀,我可以告诉你怎么办呀。哈哈。

总结一下,

WEB网站攻击,一般流量,直接syn,udp,打不死,就攻击你的dns,不行还能举报你,

游戏网站,他不直接打死你,让你老掉线,玩不了,目的达到了。所以这类网站需要提前布置防护。

还有支付类网站,

中小企业,主要看攻击量的大小选择方案,如果你们公司不差钱,那就别向下看了,

下面我可是报行业内幕,

<30G攻击, 3000左右一个月,非连续攻击,可用,单机防,

<50G攻击,1万左右一个月,非连续攻击,可用,双机防,

<100G攻击,2~3万,连续攻击/日,需要用集群防,

<300G攻击,5~8万,连续攻击/日,需要集群,加CDN,学习百度云加速,国外的防护让CF帮着防,国内的找云堤防,

所以,总结一下那些公司是骗人的,你们不白花钱去再测试了。我已经测试过了。

时间紧很多点没有写全,写透,今后找个时间再总结分类。

2015年9月

利用Naxsi在Nginx上构建WAF

shenzt@sina.com阅读(151)

在「利用ModSecurity在Nginx上构建WAF」一文中,我们讲了如何以ModSecurity模块来部署一个WAF为其后端的Web应用提供安全防护。本文主要讲一下如何用另一个Nginx WAF模块Naxsi来构建一个可用的WAF。

什么是Naxsi

Naxsi是一个开放源代码、高效、低维护规则的Nginx Web应用防火墙模块,Naxsi的主要目标是帮助人们加固Web应用程序,以抵御SQL注入、跨站脚本、跨域伪造请求、本地和远程文件等包含的漏洞。

Naxsi与其它WAF的区别是,它不靠后签名来检测和阻止攻击。它使用一个简单的模型,而不是试图发现已知的攻击,它在HTTP请求/参数检测意外的字符。

官网:https://github.com/nbs-system/naxsi

安装Naxsi

软件基础环境准备

  • 下载对应软件包
1
2
3
$ cd /root
$ wget 'http://nginx.org/download/nginx-1.9.2.tar.gz'
$ wget -O naxsi-0.55.3.tar.gz https://github.com/nbs-system/naxsi/archive/0.55.3.tar.gz
  • 安装Nginx和Naxsi依赖包

Centos/RHEL

1
$ yum install pcre pcre-devel  libxml2 libxml2-devel zlib zlib-devel openssl openssl-devel

Ubuntu/Debian

1
$ apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl make build-essential

编译安装Nginx并添加Naxsi模块

1
2
3
4
5
$ tar xzvf naxsi-0.55.3.tar.gz
$ tar xzvf nginx-1.9.2.tar.gz
$ cd nginx-1.9.2
$ ./configure --add-module=/root/naxsi-0.55.3/naxsi_src/
$ make && make install

配置Naxsi

  • 引用核心规则

首先需要将Naxsi核心规则文件naxsi_core.rules引入到Nginx主配置文件中。

复制核心规则到Nginx安装目录。

1
$ cp /root/naxsi-0.55.3/naxsi_config/naxsi_core.rules  /usr/local/nginx/conf/

修改Nginx主配置文件,在http区块中插入以下内容:

1
2
3
4
5
6
7
$ vim /usr/local/nginx/conf/nginx.conf

http {
...
include /usr/local/nginx/conf/naxsi_core.rules;
...
}
  • 引用子规则

子规则是配置在Nginx配置文件的Server区块中的,子规则更多是起到配置过滤等级还有白名单的作用。这里我们先新建一个公用的子规则,方便需要用的站点都可以引用进去。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ vim  /usr/local/nginx/conf/naxsi.rules

# 启用Naxsi模块
SecRulesEnabled;

# 拒绝访问时展示的页面
DeniedUrl "/RequestDenied";

# 检查规则
CheckRule "$SQL >= 8" BLOCK;
CheckRule "$RFI >= 8" BLOCK;
CheckRule "$TRAVERSAL >= 4" BLOCK;
CheckRule "$EVADE >= 4" BLOCK;
CheckRule "$XSS >= 8" BLOCK;

以上配置的作用是启用Naxsi模块并拦截指定的非法请求。如果要关闭Naxsi模块,可使用SecRulesDisabled选项。

DeniedUrl是把拒绝的请求发送到内部URL,CheckRule是设置各规则不同的触发阈值。 一旦该阈值触发,请求将被阻塞。

如果对规则产生的影响不太清楚,可以先设置为学习模式。Naxsi在学习模式下不会拒绝被拦截的请求,被拦截的请求会被写入Nginx中error_log选项定义的文件中。

1
2
# 启用学习模式,即拦截请求后不拒绝访问,只将触发规则的请求写入日志。
LearningMode;

建议大家在安装时先使用学习模式,规则测试完成后再启用拦截模式。这样可以避免出现对网站、服务器某些不可知的影响。注意在生产环境一定要把学习模式关闭,不然不能起到拦截非法请求的防御的效果。

接下来,我们在Server区块中引入上面定义的Naxsi子规则。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ vim /usr/local/nginx/conf/nginx.conf

server {
  listen  80;
  server_name localhost mike.hi-linux.com;
  access_log /var/log/nginx/access.log;
  error_log  /var/log/nginx/error.log debug;

  location / {

  # 引用Naxsi子规则
  include  /usr/local/nginx/conf/naxsi.rules;
  root   html;
  index  index.html index.htm;
  }

  # 配置拦截后拒绝访问时展示的页面,这里直接返回403。
  location /RequestDenied {
    return 403;
  }
}
  • 验证Nginx配置文件
1
2
3
$ /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
  • 启动Nginx
1
$ /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  • 测试Naxsi

在浏览器中访问默认首页,会看到Nginx默认的欢迎页:

这时我们在网址后面自己加上正常参数,例如:http://mike.hi-linux.com/?id=1。同样会看到Nginx默认的欢迎页:

接下来,我们在前面正常参数的基础上再加上AND 1=1,整个请求变成:http://mike.hi-linux.com/?id=1 AND 1=1

就会看到Nginx返回403 Forbidden的信息了,说明Naxsi成功拦截了此请求。再来看一个XSS的例子,同样会被Naxsi拦截。

查看Naxsi日志

配置Naxsi白名单

社区提供了一些针对常见应用的白名单规则。不过目前还比较少,只有WordPressDrupalDokuwiki等几个应用。

以Wordpress为例,来看看白名单使用:

先将wordpress.ruleswordpress-minimal文件复制到Nginx配置目录中。

1
2
3
$ git clone https://github.com/nbs-system/naxsi-rules.git
$ cp naxsi-rules/wordpress.rules /usr/local/nginx/conf/
$ cp naxsi-rules/wordpress-minimal  /usr/local/nginx/conf/

其次在对应的location中引入对应白名单规则即可。

1
2
3
4
5
6
7
8
9
$ vim /usr/local/nginx/conf/nginx.conf

location /wordpress {

# 引用Wordpress白名单规则
include  /usr/local/nginx/conf/wordpress.rules;
root   html/wordpress;
index  index.html index.htm index.php;
}

白名单基础规则

如果没有找到适合的白名单,就只能自己去配置白名单了。下面讲讲白名单的基础规则的语法。

基础规则(BasicRule)是用来创建白名单的记录。它的语法是

1
BasicRule wl:ID [negative] [mz:[$URL:target_url]|[match_zone]|[$ARGS_VAR:varname]|[$BODY_VARS:varname]|[$HEADERS_VAR:varname]|[NAME]]
  • wl:ID (White List ID)

哪些拦截规则会进入白名单。正确的语法是:

  1. wl:0:把所有拦截规则加入白名单
  2. wl:42:把ID为42的拦截规则加入白名单
  3. wl:42,41,43:把ID为42, 41和43的拦截规则加入白名单
  4. wl:-42:把所有拦截规则加入白名单,除了ID为42的拦截规则
  • mz:(Match Zones)

指定的区域会生效本条白名单。

  1. ARGS: GET的整个参数,如: foo=bar&in=%20
  2. $ARGS_VAR: GET参数的参数名, 如:foo=bar&in=%20中的foo和in
  3. $ARGS_VAR_X: 正则匹配的GET参数的参数名
  4. HEADERS: 整个HTTP协议头
  5. $HEADERS_VAR: HTTP协议头的名字
  6. $HEADERS_VAR_X: 正则匹配的HTTP协议头的名字
  7. BODY: POST的整个参数内容
  8. $BODY_VAR: POST参数的参数名
  9. $BODY_VAR_X: 正则匹配的POST参数的参数名
  10. URL: URL(?前的)
  11. $URL_X: 正则匹配的URL(?前的)
  12. FILE_EXT: 文件名 (POST上传文件时上传的文件名)

白名单配置示例

以规则#1000为例:规则#1000是过滤包含selectupdatedeleteinsert等SQL关键字的规则。

  • 在本子规则中完全禁用拦截规则#1000。因为没有指定区域,所以全部加入白名单。
1
BasicRule wl:1000;
  • 在全部GET参数名为foo的值中禁用拦截规则#1000
1
BasicRule wl:1000 "mz:$ARGS_VAR:foo";

类似http://mike.hi-linux.com/?foo=select * from demo这样的请示就不会被过滤。

  • 在URL为/bar的GET请求中参数名为foo的值中禁用拦截规则#1000
1
BasicRule wl:1000 "mz:$ARGS_VAR:foo|$URL:/bar";

类似http://mike.hi-linux.com/bar?foo=select * from demo不会被过滤。

  • 在URL为/bar的GET请求中的参数禁用拦截规则#1000
1
BasicRule wl:1000 "mz:$URL:/bar|ARGS";

以下类似请求,均不会过滤:

1
2
http://mike.hi-linux.com/bar?my=select * from demo
http://mike.hi-linux.com/bar?from=weibo
  • 在全部GET请求中对所有参数名(只是名,不包含参数值)中禁用拦截规则#1000
1
BasicRule wl:1000 "mz:ARGS|NAME";

以下请求不会过滤:

1
http://mike.hi-linux.com/bar?from=weibo

以下请求会过滤:

1
http://mike.hi-linux.com/bar?foo=select

因为select属于参数值,不在白名单范围内。

  • 在全部请求中对符合^/upload/(.*)\.(.*)$正则规则的URL禁用全部拦截规则
1
BasicRule wl:0 "mz:$URL_X:^/upload/(.*)\.(.*)$|URL";

类似http://mike.hi-linux.com/upload/select.db请求不会被过滤(原本会触发#1000拦截规则)。

利用ModSecurity在Nginx上构建WAF

shenzt@sina.com阅读(216)

ModSecurity原本是Apache上的一款开源WAF模块,可以有效的增强Web安全性。目前已经支持Nginx和IIS,配合Nginx的灵活和高效可以打造成生产级的WAF,是保护和审核Web安全的利器。

在这篇文章中,我们将学习配置ModSecurity与OWASP的核心规则集。

什么是ModSecurity

ModSecurity是一个入侵侦测与防护引擎,它主要是用于Web应用程序,所以也被称为Web应用程序防火墙(WAF)。它可以作为Web服务器的模块或是单独的应用程序来运作。ModSecurity的功能是增强Web Application 的安全性和保护Web application以避免遭受来自已知与未知的攻击。

ModSecurity计划是从2002年开始,后来由Breach Security Inc.收购,但Breach Security Inc.允诺ModSecurity仍旧为Open Source,并开放源代码给大家使用。最新版的ModSecurity开始支持核心规则集(Core Rule Set),CRS可用于定义旨在保护Web应用免受0day及其它安全攻击的规则。

ModSecurity还包含了其他一些特性,如并行文本匹配、Geo IP解析和信用卡号检测等,同时还支持内容注入、自动化的规则更新和脚本等内容。此外,它还提供了一个面向Lua语言的新的API,为开发者提供一个脚本平台以实现用于保护Web应用的复杂逻辑。

官网:https://www.modsecurity.org/

什么是OWASP CRS

OWASP是一个安全社区,开发和维护着一套免费的应用程序保护规则,这就是所谓OWASP的ModSecurity的核心规则集(即CRS)。ModSecurity之所以强大就在于OWASP提供的规则,我们可以根据自己的需求选择不同的规则,也可以通过ModSecurity手工创建安全过滤器、定义攻击并实现主动的安全输入验证。

ModSecurity核心规则集(CRS)提供以下类别的保护来防止攻击。

  • HTTP Protection(HTTP防御)

HTTP协议和本地定义使用的detectsviolations策略。

  • Real-time Blacklist Lookups(实时黑名单查询)

利用第三方IP名单。

  • HTTP Denial of Service Protections(HTTP的拒绝服务保护)

防御HTTP的洪水攻击和HTTP Dos攻击。

  • Common Web Attacks Protection(常见的Web攻击防护)

检测常见的Web应用程序的安全攻击。

  • Automation Detection(自动化检测)

检测机器人,爬虫,扫描仪和其他表面恶意活动。

  • Integration with AV Scanning for File Uploads(文件上传防病毒扫描)

检测通过Web应用程序上传的恶意文件。

  • Tracking Sensitive Data(跟踪敏感数据)

信用卡通道的使用,并阻止泄漏。

  • Trojan Protection(木马防护)

检测访问木马。

  • Identification of Application Defects(应用程序缺陷的鉴定)

检测应用程序的错误配置警报。

  • Error Detection and Hiding(错误检测和隐藏)

检测伪装服务器发送错误消息。

安装ModSecurity

软件基础环境准备

  • 下载对应软件包
1
2
3
$ cd /root
$ wget 'http://nginx.org/download/nginx-1.9.2.tar.gz'
$ wget -O modsecurity-2.9.1.tar.gz https://github.com/SpiderLabs/ModSecurity/releases/download/v2.9.1/modsecurity-2.9.1.tar.gz
  • 安装Nginx和ModSecurity依赖包

Centos/RHEL

1
$ yum install httpd-devel apr apr-util-devel apr-devel  pcre pcre-devel  libxml2 libxml2-devel zlib zlib-devel openssl openssl-devel

Ubuntu/Debian

1
$ apt-get install libreadline-dev libncurses5-dev libssl-dev perl make build-essential git  libpcre3 libpcre3-dev libtool autoconf apache2-dev libxml2 libxml2-dev libcurl4-openssl-dev g++ flex bison curl doxygen libyajl-dev libgeoip-dev dh-autoreconf libpcre++-dev

编译安装ModSecurity

Nginx加载ModSecurity模块有两种方式:一种是编译为Nginx静态模块,一种是通过ModSecurity-Nginx Connector加载动态模块。

方法一:编译为Nginx静态模块

  • 编译为独立模块(modsecurity-2.9.1)
1
2
3
4
5
$ tar xzvf modsecurity-2.9.1.tar.gz
$ cd modsecurity-2.9.1/
$ ./autogen.sh
$ ./configure --enable-standalone-module --disable-mlogc
$ make
  • 编译安装Nginx并添加ModSecurity模块
1
2
3
4
$ tar xzvf nginx-1.9.2.tar.gz
$ cd nginx-1.9.2
$ ./configure --add-module=/root/modsecurity-2.9.1/nginx/modsecurity/
$ make && make install

方法二:编译通过ModSecurity-Nginx Connector加载的动态模块

  • 编译LibModSecurity(modsecurity-3.0)
1
2
3
4
5
6
7
8
9
10
$ cd /root
$ git clone https://github.com/SpiderLabs/ModSecurity
$ cd ModSecurity
$ git checkout -b v3/master origin/v3/master
$ sh build.sh
$ git submodule init
$ git submodule update
$ ./configure
$ make
$ make install

LibModSecurity会安装在/usr/local/modsecurity/lib目录下。

1
2
$ ls /usr/local/modsecurity/lib
libmodsecurity.a  libmodsecurity.la  libmodsecurity.so  libmodsecurity.so.3  libmodsecurity.so.3.0.0
  • 编译安装Nginx并添加ModSecurity-Nginx Connector模块

使用ModSecurity-Nginx模块来连接LibModSecurity

1
2
3
4
5
6
7
$ cd /root
$ git clone https://github.com/SpiderLabs/ModSecurity-nginx.git modsecurity-nginx
$ tar xzvf nginx-1.9.2.tar.gz
$ cd nginx-1.9.2
$ ./configure --add-module=/root/modsecurity-nginx
$ make
$ make && make install

添加OWASP规则

ModSecurity倾向于过滤和阻止Web危险,之所以强大就在于规则。OWASP提供的规则是社区志愿者维护的被称为核心规则CRS,规则可靠强大,当然也可以自定义规则来满足各种需求。

下载OWASP规则并生成配置文件

1
2
3
4
$ git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
$ cp -rf owasp-modsecurity-crs  /usr/local/nginx/conf/
$ cd /usr/local/nginx/conf/owasp-modsecurity-crs
$ cp crs-setup.conf.example  crs-setup.conf

配置OWASP规则

编辑crs-setup.conf文件

1
2
3
4
$ sed -ie 's/SecDefaultAction "phase:1,log,auditlog,pass"/#SecDefaultAction "phase:1,log,auditlog,pass"/g' crs-setup.conf
$ sed -ie 's/SecDefaultAction "phase:2,log,auditlog,pass"/#SecDefaultAction "phase:2,log,auditlog,pass"/g' crs-setup.conf
$ sed -ie 's/#.*SecDefaultAction "phase:1,log,auditlog,deny,status:403"/SecDefaultAction "phase:1,log,auditlog,deny,status:403"/g' crs-setup.conf
$ sed -ie 's/# SecDefaultAction "phase:2,log,auditlog,deny,status:403"/SecDefaultAction "phase:2,log,auditlog,deny,status:403"/g' crs-setup.conf

默认ModSecurity不会阻挡恶意连接,只会记录在Log里。修改SecDefaultAction选项,默认开启阻挡。

启用ModSecurity模块和CRS规则

复制ModSecurity源码目录下的modsecurity.conf-recommended和unicode.mapping到Nginx的conf目录下,并将modsecurity.conf-recommended重新命名为modsecurity.conf。

modsecurity.conf-recommended是ModSecurity工作的主配置文件。默认情况下,它带有.recommended扩展名。要初始化ModSecurity,我们就要重命名此文件。

1
2
3
$ cd /root/modsecurity-2.9.1/
$ cp modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf  
$ cp unicode.mapping  /usr/local/nginx/conf/

将SecRuleEngine设置为On,默认值为DetectOnly即为观察模式,建议大家在安装时先默认使用这个模式,规则测试完成后在设置为On,避免出现对网站、服务器某些不可知的影响。

1
2
$ vim /usr/local/nginx/conf/modsecurity.conf
SecRuleEngine On

ModSecurity中几个常用配置说明:

1.SecRuleEngine:是否接受来自ModSecurity-CRS目录下的所有规则的安全规则引擎。因此,我们可以根据需求设置不同的规则。要设置不同的规则有以下几种。SecRuleEngine On:将在服务器上激活ModSecurity防火墙,它会检测并阻止该服务器上的任何恶意攻击。SecRuleEngine Detection Only:如果设置这个规则它只会检测到所有的攻击,并根据攻击产生错误,但它不会在服务器上阻止任何东西。SecRuleEngine Off:这将在服务器上上停用ModSecurity的防火墙。

2.SecRequestBodyAccess:它会告诉ModSecurity是否会检查请求,它起着非常重要的作用。它只有两个参数ON或OFF。

3.SecResponseBodyAccess:如果此参数设置为ON,然后ModeSecurity可以分析服务器响应,并做适当处理。它也有只有两个参数ON和Off,我们可以根据求要进行设置。

4.SecDataDir:定义ModSecurity的工作目录,该目录将作为ModSecurity的临时目录使用。

owasp-modsecurity-crs/rules下有很多定义好的规则,将需要启用的规则用Include指令添加进来就可以了。

  • 3.x版本CRS
1
2
3
4
5
$ cd /usr/local/nginx/conf/owasp-modsecurity-crs
# 生成例外排除请求的配置文件
$ cp rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
$ cp rules/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example rules/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
$ cp rules/*.data /usr/local/nginx/conf

为了保持modsecurity.conf简洁,这里新建一个modsec_includes.conf文件,内容为需要启用的规则。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
$ vim /usr/local/nginx/conf/modsec_includes.conf

include modsecurity.conf
include owasp-modsecurity-crs/crs-setup.conf
include owasp-modsecurity-crs/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
include owasp-modsecurity-crs/rules/REQUEST-901-INITIALIZATION.conf
Include owasp-modsecurity-crs/rules/REQUEST-903.9002-WORDPRESS-EXCLUSION-RULES.conf
include owasp-modsecurity-crs/rules/REQUEST-905-COMMON-EXCEPTIONS.conf
include owasp-modsecurity-crs/rules/REQUEST-910-IP-REPUTATION.conf
include owasp-modsecurity-crs/rules/REQUEST-911-METHOD-ENFORCEMENT.conf
include owasp-modsecurity-crs/rules/REQUEST-912-DOS-PROTECTION.conf
include owasp-modsecurity-crs/rules/REQUEST-913-SCANNER-DETECTION.conf
include owasp-modsecurity-crs/rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf
include owasp-modsecurity-crs/rules/REQUEST-921-PROTOCOL-ATTACK.conf
include owasp-modsecurity-crs/rules/REQUEST-930-APPLICATION-ATTACK-LFI.conf
include owasp-modsecurity-crs/rules/REQUEST-931-APPLICATION-ATTACK-RFI.conf
include owasp-modsecurity-crs/rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf
include owasp-modsecurity-crs/rules/REQUEST-933-APPLICATION-ATTACK-PHP.conf
include owasp-modsecurity-crs/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf
include owasp-modsecurity-crs/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf
include owasp-modsecurity-crs/rules/REQUEST-943-APPLICATION-ATTACK-SESSION-FIXATION.conf
include owasp-modsecurity-crs/rules/REQUEST-949-BLOCKING-EVALUATION.conf
include owasp-modsecurity-crs/rules/RESPONSE-950-DATA-LEAKAGES.conf
include owasp-modsecurity-crs/rules/RESPONSE-951-DATA-LEAKAGES-SQL.conf
include owasp-modsecurity-crs/rules/RESPONSE-952-DATA-LEAKAGES-JAVA.conf
include owasp-modsecurity-crs/rules/RESPONSE-953-DATA-LEAKAGES-PHP.conf
include owasp-modsecurity-crs/rules/RESPONSE-954-DATA-LEAKAGES-IIS.conf
include owasp-modsecurity-crs/rules/RESPONSE-959-BLOCKING-EVALUATION.conf
include owasp-modsecurity-crs/rules/RESPONSE-980-CORRELATION.conf
include owasp-modsecurity-crs/rules/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf

注:考虑到可能对主机性能上的损耗,可以根据实际需求加入对应的漏洞的防护规则即可。

配置Nginx支持Modsecurity

启用Modsecurity

  • 使用静态模块加载的配置方法

在需要启用Modsecurity的主机的location下面加入下面两行即可:

1
2
ModSecurityEnabled on;
ModSecurityConfig modsec_includes.conf;

修改Nginx配置文件,在需要启用Modsecurity的location开启Modsecurity。

1
2
3
4
5
6
7
8
9
10
11
12
13
$ vim /usr/local/nginx/conf/nginx.conf

server {
  listen       80;
  server_name  example.com;

  location / {
    ModSecurityEnabled on;
    ModSecurityConfig modsec_includes.conf;
    root   html;
    index  index.html index.htm;
  }
}
  • 使用动态模块加载的配置方法

在需要启用Modsecurity的主机的location下面加入下面两行即可:

1
2
modsecurity on;
modsecurity_rules_file modsec_includes.conf;

修改Nginx配置文件,在需要启用Modsecurity的location开启Modsecurity。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ vim /usr/local/nginx/conf/nginx.conf

server {
  listen  80;
  server_name localhost mike.hi-linux.com;
  access_log /var/log/nginx/yourdomain.log;

  location / {

  modsecurity on;
  modsecurity_rules_file modsec_includes.conf;
  root   html;
  index  index.html index.htm;
}
}

验证Nginx配置文件

1
2
3
$ /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
  • 启动Nginx
1
$ /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

测试Modsecurity

ModSecurity现在已经成功配置了OWASP的规则。现在我们将测试对一些最常见的Web应用攻击。来测试ModSecurity是否挡住了攻击。这里我们启用了XSS和SQL注入的过滤规则,下面的例子中不正常的请求会直接返回403。

在浏览器中访问默认首页,会看到Nginx默认的欢迎页:

这时我们在网址后面自己加上正常参数,例如:http://mike.hi-linux.com/?id=1。同样会看到Nginx默认的欢迎页:

接下来,我们在前面正常参数的基础上再加上AND 1=1,整个请求变成:http://mike.hi-linux.com/?id=1 AND 1=1

就会看到Nginx返回403 Forbidden的信息了,说明Modsecurity成功拦截了此请求。再来看一个XSS的例子,同样会被Modsecurity拦截。

查看Modsecurity日志

所有命中规则的外部攻击均会存在modsec_audit.log,用户可以对这个文件中记录进行审计。Log文件位置在modsecurity.conf中SecAuditLog选项配置,Linux默认在/var/log/modsec_audit.log

1
2
$ cat /usr/local/nginx/conf/modsecurity.conf
SecAuditLog /var/log/modsec_audit.log

Modsecurity主要是规则验证(验证已知漏洞),Nginx下还有另一个功能强大的WAF模块Naxsi。Naxsi最大特点是可以设置学习模式,抓取您的网站产生必要的白名单,以避免误报!Naxsi不依赖于预先定义的签名,Naxsi能够战胜更多复杂/未知/混淆的攻击模式。

在Debian/Ubuntu上使用rclone挂载Google Drive网盘

shenzt@sina.com阅读(194)

安装

本教程只适用Debian/Ubuntu系统,如果你是CentOS,请参考:https://rclone.org/install/,安装rclone。挂载方法和下面差不多。

1、安装rclone

wget https://www.moerats.com/usr/shell/rclone_debian.sh && bash rclone_debian.sh

2、初始化配置

rclone config

会出现以下信息:

n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> Rats  #随便填,后面要用到
Type of storage to configure.
Choose a number from below, or type in your own value
 1 / Amazon Drive
   \ "amazon cloud drive"
 2 / Amazon S3 (also Dreamhost, Ceph, Minio)
   \ "s3"
 3 / Backblaze B2
   \ "b2"
 4 / Box
   \ "box"
 5 / Cache a remote
   \ "cache"
 6 / Dropbox
   \ "dropbox"
 7 / Encrypt/Decrypt a remote
   \ "crypt"
 8 / FTP Connection
   \ "ftp"
 9 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
10 / Google Drive
   \ "drive"
11 / Hubic
   \ "hubic"
12 / Local Disk
   \ "local"
13 / Microsoft Azure Blob Storage
   \ "azureblob"
14 / Microsoft OneDrive
   \ "onedrive"
15 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
16 / Pcloud
   \ "pcloud"
17 / QingCloud Object Storage
   \ "qingstor"
18 / SSH/SFTP Connection
   \ "sftp"
19 / Webdav
   \ "webdav"
20 / Yandex Disk
   \ "yandex"
21 / http Connection
   \ "http"
Storage> 10  #选择10,Google Drive
Google Application Client Id - leave blank normally.
client_id>  #留空 
Google Application Client Secret - leave blank normally.
client_secret>  #留空
Service Account Credentials JSON file path - needed only if you want use SA instead of interactive login.
service_account_file> 
Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine or Y didn't work
y) Yes
n) No
y/n> n  #选择n
If your browser doesn't open automatically go to the following link: https://accounts.google.com/o/oauth2/auth....  #复制到浏览器打开,获取验证码
Log in and authorize rclone for access
Enter verification code>  #填入上面获取到的验证码
Configure this as a team drive?
y) Yes
n) No
y/n> y  #选择y
Fetching team drive list...
No team drives found in your account--------------------
[Rats]
client_id = 
client_secret = 
service_account_file = 
token = {"access_token":"ya29.GltFBd7UJN2qrxdG8FnG_rMuB18ogb8QlujdL7glvXtfV"}
team_drive = 
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y  #选择y
Current remotes:

Name                 Type
====                 ====
Rats                 drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q  #选择q退出

3、挂载为磁盘

#新建本地文件夹,路径自己定,即下面的LocalFolder
mkdir /root/GoogleDrive
#挂载为磁盘
rclone mount DriveName:Folder LocalFolder --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000

DriveName为初始化配置填的nameFolderGoogle Drive里的文件夹,LocalFolderVPS上的本地文件夹。

挂载成功后,输入df -h命令查看即可!
请输入图片描述
4、卸载磁盘

fusermount -qzu LocalFolder

自启动

1、下载并编辑脚本
使用命令:

wget https://www.moerats.com/usr/shell/rcloned && nano rcloned

修改一下内容:

NAME=""  #rclone name名,及配置时输入的Name
REMOTE=''  #远程文件夹,Google Drive网盘里的挂载的一个文件夹
LOCAL=''  #挂载地址,VPS本地挂载目录

2、设置自启
使用命令:

mv rcloned /etc/init.d/rcloned
chmod +x /etc/init.d/rcloned
update-rc.d -f rcloned defaults
bash /etc/init.d/rcloned start

检测信息显示rclone启动成功即可。
请输入图片描述
文章参考:[教程] rclone使用小记

在Debian/Ubuntu上使用rclone挂载OneDrive网盘

shenzt@sina.com阅读(110)

提示:本教程挂载OneDrive for Business和个人版的方法都一样,这里以个人版为参考。

客户端授权

在本地Windows电脑上下载rclone,下载地址:https://rclone.org/downloads/。然后解压出来,比如我解压到D盘,文件夹命名rclone,此时点击Win+R,然后输入cmd,确定。再输入以下命令:

cd /d d:\rclone
rclone authorize "onedrive"

会出现以下信息:

C:\Users\Administrator>cd /d d:\rclone

d:\rclone>rclone authorize "onedrive"
2018/01/23 20:28:56 NOTICE: Config file "C:\\Users\\Administrator\\.config\\rclo
ne\\rclone.conf" not found - using defaults
Choose OneDrive account type?
 * Say b for a OneDrive business account
 * Say p for a personal OneDrive account
b) Business
p) Personal
b/p> p  #这里选择个人版,你想挂载Business就选择b
If your browser doesn't open automatically go to the following link: http://127.
0.0.1:53682/auth  #接下来会弹出浏览器,要求你登录账号进行授权
Log in and authorize rclone for access
Waiting for code...
Got code
Paste the following into your remote machine --->
{"access_token":"xxxx"}  #请复制{xx}整个内容,后面需要用到
<---End paste

安装rclone

本教程只适用Debian/Ubuntu系统,如果你是CentOS,请参考:https://rclone.org/install/,安装rclone。挂载方法和下面差不多。

1、安装rclone

wget https://www.moerats.com/usr/shell/rclone_debian.sh && bash rclone_debian.sh

2、初始化配置

rclone config

会出现以下信息:

n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> Rats  #随便填,后面要用到
Type of storage to configure.
Choose a number from below, or type in your own value
 1 / Amazon Drive
   \ "amazon cloud drive"
 2 / Amazon S3 (also Dreamhost, Ceph, Minio)
   \ "s3"
 3 / Backblaze B2
   \ "b2"
 4 / Box
   \ "box"
 5 / Cache a remote
   \ "cache"
 6 / Dropbox
   \ "dropbox"
 7 / Encrypt/Decrypt a remote
   \ "crypt"
 8 / FTP Connection
   \ "ftp"
 9 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
10 / Google Drive
   \ "drive"
11 / Hubic
   \ "hubic"
12 / Local Disk
   \ "local"
13 / Microsoft Azure Blob Storage
   \ "azureblob"
14 / Microsoft OneDrive
   \ "onedrive"
15 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
16 / Pcloud
   \ "pcloud"
17 / QingCloud Object Storage
   \ "qingstor"
18 / SSH/SFTP Connection
   \ "sftp"
19 / Webdav
   \ "webdav"
20 / Yandex Disk
   \ "yandex"
21 / http Connection
   \ "http"
Storage> 14  #选择14,Microsoft OneDrive
Microsoft App Client Id - leave blank normally.
client_id>  #留空 
Microsoft App Client Secret - leave blank normally.
client_secret>  #留空 
Remote config
Choose OneDrive account type?
 * Say b for a OneDrive business account
 * Say p for a personal OneDrive account
b) Business
p) Personal
b/p> p  #这里选择个人版,你想挂载Business就选择b
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> n  #选择n
For this to work, you will need rclone available on a machine that has a web browser available.
Execute the following on your machine:
    rclone authorize "onedrive"
Then paste the result below:
result> {"access_token":""}  #输入之前在客户端授权的内容
--------------------
[Rats]
client_id = 
client_secret = 
token = {"access_token":""}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y  选择y
Current remotes:

Name                 Type
====                 ====
Rats                 onedrive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q  #选择q退出

挂载

1、挂载为磁盘

#新建本地文件夹,路径自己定,即下面的LocalFolder
mkdir /root/OneDrive
#挂载为磁盘
rclone mount DriveName:Folder LocalFolder --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000

DriveName为初始化配置填的nameFolderOneDrive里的文件夹,LocalFolderVPS上的本地文件夹。

如果挂载过程中出现NOTICE: One drive root 'test': poll-interval is not supported by this remote错误,可以无视该错误。

挂载成功后,输入df -h命令查看即可!
请输入图片描述

2、卸载磁盘

fusermount -qzu LocalFolder

自启动

1、下载并编辑脚本
使用命令:

wget https://www.moerats.com/usr/shell/rcloned && nano rcloned

修改一下内容:

NAME=""  #rclone name名,及配置时输入的Name
REMOTE=''  #远程文件夹,OneDrive网盘里的挂载的一个文件夹
LOCAL=''  #挂载地址,VPS本地挂载目录

2、设置自启
使用命令:

mv rcloned /etc/init.d/rcloned
chmod +x /etc/init.d/rcloned
update-rc.d -f rcloned defaults
bash /etc/init.d/rcloned start

检测信息显示rclone启动成功即可。
请输入图片描述
最后我们就可以利用OneDrive for BusinessLinux VPS增加5TB的空间了。

hetzner安装proxmox开NAT和ipv6小鸡

shenzt@sina.com阅读(123)

虽然说使用Windows用Hyper-v开小鸡全程都是GUI很方便,但是Hyper-v并不提供dhcp等服务,所以在windows下管理小鸡反而难以操作。

所以打算重新安装proxmox后使用NAT v4+ipv6和纯v4ip来创建小鸡,web访问服务可以使用套上CF的CDN来使用V6回源,节省0.84欧的ip费用,而且购买单独ip貌似是不能超过6个?

一、安装proxmox

进入救援系统使用installimage命令选择Other,在选择proxmox*stretch这是在Debian9上安装proxmox5的脚本。不过Hetzner并不提供技术支持,所以安装完后需要进行一些修改。

安装的配置脚本需要进行一些修改

setting

修改硬盘Raid方式,和宿主机hostname。如果不需要raid可以修改SWRAID为0.

setting1

修改空间分配方式,我想要大部分空间到同一个目录下,所以我把/目录的容量修改为50G。按F10保存并进行自动安装。

安装完成进入httpss://ip:8006 输入救援系统的root账号和密码

二、配置网络

首先开启forward

1
2
3
4
vim /etc/sysctl.d/99-hetzner.conf
#加入
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

由于Hetzner并不提供技术支持,所以安装后并为创建网桥,所以需要手动创建。

create Bridge

把默认网卡(我的是enp3s0)的所有配置都写到新的网桥vmbr0中,并删除默认网卡的配置,设置桥接端口为enp3s0

创建NAT用网桥

上面创建的vmbr0是直接连接到外部网络的网桥,下面要创建NAT专用的网桥

创建vmbr1,配置如下

vmbr1

ipv6的地址填写vmbr0上设置的地址。

全部设置如下

network setting

保存完毕后重启主机后就会生效

三、创建小鸡

ISO镜像可以从Web面板上传,proxmox也提供一些模板不过都是lxc的

ISO template

也可以直接进入/var/lib/vz/template/iso/上传到这里,也可以进入Web管理界面创建一个新的目录拿来放iso也行

创建独立IP小鸡

购买完ip后点击ip旁边的reset separate MAC按钮就可以生成一个mac地址,可以直接dhcp设置ipv4

点击右上角创建虚拟机就可以创建KVM机,过程没啥要注意的除了在网络那里选择vmbr0并填入mac,启动之后就可以直接使用了

创建NAT+V6小鸡

创建小鸡,选择vmbr1网卡

主机中输入iptables命令,将vmbr1的IP段流量通过vmbr0跳转到外网去,这样小鸡就能访问外网

iptables -t nat -A POSTROUTING -s '192.168.1.0/24' -o vmbr0 -j MASQUERADE
安装过程需要手动配置ip信息

安装完小鸡后在硬件设置中添加新的网卡连接到vmbr0上,并在小鸡中配置v6的ip信息,并且运行以下命令,小鸡就能通过新的网卡访问ipv6

1
2
3
ip -f inet6 neigh add proxy  2a01:4f8:xxx:xxx::vmbr0IP dev vmbr0
ip -f inet6 neigh add proxy 2a01:4f8:xxx:xxx::小鸡ip dev enp3s0
ip -f inet6 route add 2a01:4f8:xxx:xxx::小鸡ip dev vmbr0

如果想要暴露端口使用
iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 8088 -j DNAT --to 192.168.1.2:80

Caddy最容易上手的Web Server

shenzt@sina.com阅读(181)

Caddy最容易上手的Web Server

Caddy最容易上手的Web Server-自动化HTTPS一分钟部署网站\网盘

2018年01月27日 ⁄ 评论数 1 ⁄ 被围观 455 个+

Caddy服务器(或者Caddy Web)是一个开源的使用 GoLang 编写,支持 HTTP/2 的 Web 服务端。它使用 GoLang 标准库提供 HTTP 功能, Caddy 一个显著的特性是默认启用 HTTPS,它是第一个无需额外配置即可提供 HTTPS 特性的 Web 服务器。

Caddy和我们常用的Nginx、Apache等Web服务器相比,最大的特点就是部署简单,它拥有基本的apache或者nginx有的web server模块,同时还有一些很有特色的功能,比如: HTTP/2、Automatic HTTPS、Multi-core、Websockets、Markdown、IPv6等等。

Caddy可以用于静态和动态网站,当然不少人看到了Caddy易于安装部署的特点,将Caddy与网盘、下载等各类应用整合,这样既发挥了Caddy部署配置简单的优势,同时又可以最大限度地节省服务器资源,专注于第三方应用的开发管理。

本文就来分享一下Caddy服务器的安装与使用,更多的网站建站工具和脚本,还有:

三款优秀的在线文件管理器(目录列表)对比-Directory Lister、h5ai和FileRun

Smokeping安装与配置-免费开源网络性能监控工具可视化主/从部署

OneinStack一键安装脚本-轻松部署Let’s Encrypt证书配置Https站点

一、Caddy安装方法

Caddy官网:

网站:https://caddyserver.com/

下载:https://caddyserver.com/download

Github:https://github.com/mholt/caddy

Caddy安装与部署只有三步。首先,根据你的服务器操作系统选择Caddy版本并下载(Linux和Windows都支持)。

 

 

Caddy提供了丰富的插件可供选择,例如:

http.cache,http.filemanager,http.ipfilter,http.ratelimit等。

其次,将Caddy包下载到VPS主机上并解压,例如我下载的是:caddy_v0.10.10_linux_amd64_custom_personal.tar.gz,将压缩包解压到你的网站根目录下载,即index.html放置的地方。

最后,在 caddy 解压出来的目录(网站根目录)执行 ./caddy ,这时访问 :

xxx.xxx.xxx.xxx:2015你的网站可以正常访问了。

推荐caddy官方一键安装脚本。

脚本如下:

  • curl https://getcaddy.com | bash -s personal
    或者
    wget -qO- https://getcaddy.com | bash -s personal
    如果想要安装插件,请使用以下命令:
    curl https://getcaddy.com | bash -s personal http.git,dns

使用 which caddy,可以看到 caddy 已经被安装到了 /usr/local/bin/caddy 。 进入到网站根目录,然后执行命令:caddy,再打开你的IP:2015,你就可以看到Web页面了。

二、Caddy配置方法

2.1 创建配置文件

首先创建配置文件放到 /etc/caddy 里。

  • sudo mkdir /etc/caddy
    sudo touch /etc/caddy/Caddyfile
    sudo chown -R root:www-data /etc/caddy

除了配置文件,caddy 会自动生成 ssl 证书,需一个文件放置 ssl 证书。

  • sudo mkdir /etc/ssl/caddy
    sudo chown -R www-data:root /etc/ssl/caddy
    sudo chmod 0770 /etc/ssl/caddy

因为 ssl 文件夹里会放置私钥,所以权限设置成 770 禁止其他用户访问。 最后,创建一下放置网站文件的目录,如果已经有了,就不需要创建了。

  • sudo mkdir /var/www
    sudo chown www-data:www-data /var/www

2.2 设置开机启动

创建好这些文件和目录了之后,我们需要把 caddy 配置成一个服务,这样就可以开机自动运行,并且管理起来也方便。因为目前大多数发行版都使用 systemd 了,所以这里只讲一下如何配置 systemd。

  • sudo curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service # 从 github 下载 systemd 配置文件
    sudo systemctl daemon-reload # 重新加载 systemd 配置
    sudo systemctl enable caddy.service # 设置 caddy 服务自启动
    sudo systemctl status caddy.service # 查看 caddy 状态

2.3 编辑Caddyfile。

可以直接 vim /etc/caddy/Caddyfile 来修改 Caddyfile,也可以再自己电脑上改好然后上传到服务器上。如果修改了 Caddyfile 发现没有生效,是需要执行一下 sudo systemctl restart caddy.service 来重启 caddy 。

2.4 Caddyfile 的格式

Caddfile的格式还是比较简单的,首先第一行必须是网站的地址,例如:

  • localhost:8080

  • wzfou.com

地址可以带一个端口号,那么 caddy 只会在这个端口上开启 http 服务,而不会开启 https,如果不写端口号的话,caddy 会默认绑定 80 和 443 端口,同时启动 http 和 https 服务。地址后面可以再跟一大堆指令(directive)。Caddyfile 的基本格式就是这样,由一个网站地址和指令组成。

2.5 指令

指令的作用是为网站开启某些功能。指令的格式有三种,先说一下最简单的不带参数的指令比如:

  • wzfou.com
    gzip

第二行的 gzip 就是一个指令,它表示打开 gzip 压缩功能,这样网站在传输网页是可以降低流量。第二种指令的格式是带简单参数的指令:

  • wzfou.com
    gzip
    log /var/log/caddy/access.log
    tls iwzfou@gmail.com
    root /var/www/

第三行,log 指令会为网站开启 log 功能,log 指令后的参数告诉 caddy log 文件存放的位置。第四行的 tls 指令告诉 caddy 为网站开启 https 并自动申请证书,后面的 email 参数是告知 CA 申请人的邮箱。(caddy 会默认使用 let’s encrypt 申请证书并续约,很方便吧)

另外,简单参数也可能不只一个,比如 redir 指令:

  • wzfou.com
    gzip
    log /var/log/caddy/access.log
    tls /etc/ssl/cert.pem /etc/ssl/key.pem
    root /var/www/
    redir / https://wzfou.com/archive/{uri} 301

上面的 redir 指令带了三个参数,意思是把所有的请求使用 301 重定向,这个指令在给网站换域名的时候很有用。另外 tls 指令变了,不单单传 email一个参数, 而是分别传了证书和私钥的路径,这样的话 caddy 就不会去自动申请证书,而是使用路径给出的证书了。

在这个例子里还使用了 {uri} 这样的占位符(placeholder),详细的列表可以在这里查询到:https://caddyserver.com/docs/placeholders。最后一种指令是带复杂参数的,这种指令包含可能很多参数,所以需要用一对花括号包起来,比如 header 指令:

  • wzfou.com
    gzip
    log /var/log/caddy/access.log
    tls iwzfou@gmail.com
    root /var/www/
    header /api {
    Access-Control-Allow-Origin *
    Access-Control-Allow-Methods “GET, POST, OPTIONS”
    -Server
    }
    fastcgi / 127.0.0.1:9000 php {
    index index.php
    }
    rewrite {
    to {path} {path}/ /index.php?{query}
    }

6-10 行的 header 指令代表为所有的 /api/xxx 的请求加上 Access-Control-Allow-Origin 和 Access-Control-Allow-Methods 这两个 header,从而能支持 javascript 跨域访问 ,第 9 行代表删除 Server header,防止别人看到服务器类型。

11-13 行使用了 fastcgi 指令,代表把请求通过 fastcgi 传给 php,ruby 等后端程序。

14-15 行,使用了 rewrite 指令,这个指令的作用是 服务器内部重定向 在下面的参数 to 后面,又跟了三个参数,这个功能上有点类似 nginx 的 try_files 。告诉 caddy 需要先查看网址根目录 /var/www 里有没有 {path} 对应的文件,如果没有再查看有没有 {path} 对应的目录,如果都没有,则转发给 index.php 入口文件。这个功能一般会用在 PHP 的 MVC 框架上使用。

2.6 多域名网站

上面说的都是单个域名的网址,那么如果在同一个服务器上部署多个域名的网站呢?很简单,只需要在域名后面跟一个花括号扩起来就可以了,如下:

  • wzfou.com {
    gzip
    log /var/log/caddy/wzfou_com.log
    tls iwzfou@gmail.com
    root /var/www/
    header /api {
    Access-Control-Allow-Origin *
    Access-Control-Allow-Methods “GET, POST, OPTIONS”
    -Server
    }
    fastcgi / 127.0.0.1:9000 php {
    index index.php
    }
    rewrite {
    to {path} {path}/ /index.php?{query}
    }
    }
    wzfou.com{
    tls iwzfou@gmail.com
    log /var/log/caddy/wzfou_com.log
    redir / https://wzfou.com/{uri} 301
    }

基本的 caddy 配置就这些,更多的内容需要查阅官网文档:

https://caddyserver.com/docs。

三、Caddy一键建站脚本

看了上面的Caddy的配置,有朋友可能觉得有没有一键建站的Caddy脚本呢?

3.1 Caddy-Web-Server-Installer

项目地址:https://github.com/sayem314/Caddy-Web-Server-Installer

系统要求:Ubuntu 14.x、15.x、16.x,Debian 7.x、8.x、9.x,CentOS 6.8、7.2。

运行以下命令:wget https://git.io/vra5C -O – -o /dev/null|bash

然后使用下列命令进行操作:

  • caddy start #开启Caddy Web Server
    caddy stop #停止Caddy Web Server
    caddy reload #重载Caddy Web Server
    caddy restart #重启Caddy Web Server
    caddy status #查看Caddy Web Server状态
    caddy install #安装Caddy Web Server
    caddy edit #编辑配置文件Caddyfile
    caddy service #使Caddy Web Server成为一项服务(upstart/systemd)
    caddy update #升级Caddy Web Server
    caddy delete #卸载Caddy and data
    caddy about #关于Caddy Web Server
    caddy version #检测脚本/Caddy/PHP5-fpm版本信息

安装插件命令:

  • caddy install http.cache,http.filemanager,http.ipfilter,http.ratelimit

安装caddy的时候会要求你输入域名,邮箱(帮你自动签发ssl),然后使用命令启动caddy即可!

  • 虚拟主机文件夹:/var/caddywww
    配置文件夹:/etc/Caddyfile

这是安装成功的界面:

安装成功后重启Caddy服务。

 

最后,打开你的域名,你就可成功看到Web页面了。

执行:caddy edit就可以编辑配置文件了,默认的配置如下:

这是caddy安装的PHP。

3.2 Caddy FileManager安装脚本

Caddy 有一个扩展FileManager,你可以单独安装,这里介绍一个Caddy FileManager快速部署的脚本,功能没有上面的Caddy-Web-Server-Installer丰富,比较适合利用Caddy FileManager搭建网盘。

运行以下命令:

  • wget -N –no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh install http.filemanager
    #备用地址
    wget -N –no-check-certificate https://www.moerats.com/usr/shell/Caddy/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh install http.filemanager

安装成功后,继续新建一个用于使用的虚拟主机文件夹,例如file(可以自己改):

  • mkdir /usr/local/caddy/www && mkdir /usr/local/caddy/www/file

1、IP访问

  • 绑定虚拟主机为IP(即通过IP访问),HTTP协议(80端口)。
  • # 以下全部内容是一个整体,是一个命令,全部复制粘贴一起执行!
    echo “:80 {
    root /usr/local/caddy/www/file
    timeouts none
    gzip
    filemanager / /usr/local/caddy/www/file {
    database /usr/local/caddy/filemanager.db
    }
    }” > /usr/local/caddy/Caddyfile

2、域名HTTP访问

本示例是,绑定虚拟主机为域名(即通过域名访问),HTTP协议(80端口)。

  • # 以下全部内容是一个整体,是一个命令,全部复制粘贴一起执行(注意替换示例域名)!
    echo “http://wzfou.com {
    root /usr/local/caddy/www/file
    timeouts none
    gzip
    filemanager / /usr/local/caddy/www/file {
    database /usr/local/caddy/filemanager.db
    }
    }” > /usr/local/caddy/Caddyfile

3、域名HTTPS访问

本示例是,绑定虚拟主机为域名(即通过域名访问),HTTPS协议(443端口)。

如果你有SSL证书和密匙的话,把SSL证书(xxx.crt)和密匙(xxx.key)文件放到/root文件夹下(也可以是其他文件夹,自己改下面代码),然后这样做:

  • # 以下全部内容是一个整体,是一个命令,全部复制粘贴一起执行(注意替换示例域名)!
    echo “https://wzfou.com {
    root /usr/local/caddy/www/file
    timeouts none
    tls /root/xxx.crt /root/xxx.key
    gzip
    filemanager / /usr/local/caddy/www/file {
    database /usr/local/caddy/filemanager.db
    }
    }” > /usr/local/caddy/Caddyfile

如果你没有SSL证书和密匙,那么你可以这样做:

下面的xxxx@xxx.xx改成你的邮箱,同时需要注意的是,申请SSL证书前,请务必提前解析好域名记录(解析后最好等一会,以全球生效),否则Caddy会申请并配置失败!

  • # 以下全部内容是一个整体,是一个命令,全部复制粘贴一起执行(注意替换示例域名)!
    echo “https://wzfou.com {
    root /usr/local/caddy/www/file
    timeouts none
    tls xxxx@xxx.xx
    gzip
    filemanager / /usr/local/caddy/www/file {
    database /usr/local/caddy/filemanager.db
    }
    }” > /usr/local/caddy/Caddyfile

 

4、域名HTTP重定向HTTPS

本示例是,域名HTTP重定向为HTTPS。当你是手动指定SSL证书和密匙 来配置的话,Caddy只会监听443端口(https),并不会自动设置80端口(http)的重定向,如果要做重定向的话,可以这样做:

下面的示例代码中,是把http://wzfou.com重定向到了https://wzfou.com。

  • # 以下全部内容是一个整体,是一个命令,全部复制粘贴一起执行(注意替换示例域名)!
    echo “http://wzfou.com {
    timeouts none
    redir https://wzfou.com{url}
    }
    https://wzfou.com {
    root /usr/local/caddy/www/file
    timeouts none
    tls /root/xxx.crt /root/xxx.key
    gzip
    filemanager / /usr/local/caddy/www/file {
    database /usr/local/caddy/filemanager.db
    }
    }” > /usr/local/caddy/Caddyfile

当你已经配置完上面步骤后,那就需要启动Caddy了。

  • /etc/init.d/caddy start
    # 如果启动失败可以看Caddy日志: tail -f /tmp/caddy.log

Caddy 使用说明:

  • 启动:/etc/init.d/caddy start
  • 停止:/etc/init.d/caddy stop
  • 重启:/etc/init.d/caddy restart
  • 查看状态:/etc/init.d/caddy status
  • 查看Caddy启动日志: tail -f /tmp/caddy.log
  • Caddy配置文件位置:/usr/local/caddy/Caddyfile
  • Filemanager数据库位置:/usr/local/caddy/filemanager.db

最后就可以通过ip访问filemanager了,用户名和密码均为admin。如下图:

这是filemanager的界面。

 

这是网盘的文件管理界面。(点击放大)

可以直接在线预览图片。(点击放大)

也可以在线插入音频、视频等。

也可以在线插入音频、视频等。

四、总结

用Caddy作为Web服务器,从安装与运行几乎只需要几分钟的时间,当然Caddy也可以像nginx那样实现缓存、镜像等,Caddy的配置规则也比较简单,你只需要花上几分钟的时间学习官网的文档就可以自己“依葫芦画瓢”了。

Caddy会自动签发Let’s Encrypt免费证书,但是你需要先把域名解析到服务器上,否则你在添加虚拟主机时会出现错误。关于能否将Caddy用作正式的生产环境,目前来看还是有待商榷的,但是Caddy用为简单的Http服务器是没有问题的。

 

 

使用 CloudXNS 接管 Freenom 的免费域名解析,加快国内生效速度!

shenzt@sina.com阅读(130)

本文最后更新于 2016年12月10日 18:22 可能会因为没有更新而失效。如已失效或需要修正,请留言!

我写的那篇 教你申请.tk/.ml/.cf/.gq/.ga等免费域名 好像还挺火的,但是总是会遇到一些人不会解析域名。基本的域名意义也不清楚,还是挺烦的。再加上Freenom自带的DNS对国内解析不友好,往往每次解析都要好几个小时国内DNS才会生效,所以我就写一篇让 国内域名解析管理网站 接管 Freenom的免费域名解析服务!


准备工作

首先你要先有个Freenom注册的免费域名,你可以根据这个文章申请 教你申请.tk/.ml/.cf/.gq/.ga等免费域名

然后你需要注册一个CloudXNS账号官网

至于为什么推荐CloudXNS,而不是DNSPod之类的,主要是我用这个也习惯了,感觉也不错。至于DNSPod,好像对免费域名有限制,不允许使用。

接管域名

准备工作都准备好了之后,我们先去CloudXNS添加一个要接管的域名。以下都以 dou-bi.ml 为例!

首先进入域名控制台,然后点击 添加域名 ,输入你要添加的域名(注意是顶级域名 xxxx.xx,如图)并点 确定 。

然后就会提示你域名未被接管,让你去域名管理处(Freenom)修改DNS为CloudXNS的DNS

然后我们去Freenom域名管理处Domains=> My Domains),找到你要 接管的域名(dou-bi.ml) ,点击最后的 Manage Domain 。

在打开的新页面 翻到下面,找到菜单栏 Management Tools中的 Namesevers,如下图所示,选择第二个自定义DNS服务器,并把默认的DNS改成上面 CloudXNS提醒你要修改的四个DNS服务器。然后点Change Nameserver保存

  • lv3ns1.ffdns.net
  • lv3ns2.ffdns.net
  • lv3ns3.ffdns.net
  • lv3ns4.ffdns.net

到这一步,域名接管就已经完成一半了,剩下的一半只要你这前面步骤正确,只要等1~6个小时CloudXNS就会提示你域名接管成功(当然如果你运气不好的话可能会多一些,DNS服务器更换全球生效时间是48小时,如果你超过48小时还没提示接管成功,那你肯定前面有步骤出现错误,请仔细检查!)。

域名解析

当你域名接管成功的时候,你就不需要去Freenom设置域名解析了,剩下所有的域名解析服务都在CloudXNS执行

这里我再说明一次, dou-bi.ml 是顶级域名, www.dou-bi.ml 是二级域名, www.233.dou-bi.ml 是三级域名,二级域名和三级域名都称为子域名

主机记录 指的是你的子域名文本,比如 www.dou-bi.ml , www 就是这个子域名的主机记录。

那有人会问 dou-bi.ml 是怎么用的?其实 dou-bi.ml 的主机记录是 @ 。

具体的记录类型和记录值 解释,可以看下图,CloudXNS解释的很清楚了。

一般如果你是买的虚拟主机,往往他们都是给你一个共享的IP(域名)让你去解析,这时候你就需要 CNAME记录类型 了。

如果你是自己买的VPS搭建虚拟主机,那一般都是 独立IP,那就是使用 A 记录类型记录值也是填的你的 VPS IP


设置完这些后,你会发现你访问自己的域名还是会提示 DNS找不到 等错误。

这是因为域名解析也是需要时间的,你每 添加/修改/删除 一次域名记录,你的 域名DNS服务器 就会向 全球DNS根服务器 发送你的最新域名记录解析信息,然后各个DNS服务器(就是你自己电脑手机等设备使用的公共DNS服务器)会定时去DNS根服务器获取 最新的DNS 域名解析记录,这时候正在使用这些已经获取到最新的域名记录解析信息的设备,就可以访问你的域名了。

是不是有点绕?那我跟你说一下你平时上网浏览网页的原理。

你打开一个网站(比如www.baidu.com),你的浏览器会先去检查你的本地Hosts文件,看看有没有指定域名的IP,如果有就按照指定的IP访问,如果没有就去向你的DNS服务器获取 www.baidu.com 的IP,DNS查找域名记录信息如果找到了就给你返回IP,找不到就会提示 DNS找不到域名;获取到IP后,你的浏览器就会去访问网站服务器,然后网站服务器把你要获取的网页数据返回回来,浏览器再进行排版显示。

这就是简单的原理说明。什么?你还听不懂?好吧,那你先慢慢理解吧。。。

全球DNS刷新最长时间是72小时,但是一般用不了那么长时间。如果你电脑等设备是用的是网络运营商默认分配的DNS服务器,那么可能DNS刷新比较慢,建议更换其他的公共DNS比如114.114.114.114 。一般快的话几分钟就能刷新到最新的域名记录了(有时候你可以试试清理一下浏览器缓存)

你可以在 站长工具-超级Ping 里面看一下全国的域名解析情况!


 

当然,等待托管成功和域名解析是很无聊的,你可以先本地通过改Hosts文件来先对网站进行调试!

hosts文件添加域名格式:IP+空格+域名,例如:233.233.233.233 www.baidu.com

hosts文件位置一般都在 C:\Windows\System32\drivers\etc\hosts ,如果没有就自行谷歌当前系统的hosts文件位置吧!

教你申请.tk/.ml/.cf/.gq/.ga等免费域名

shenzt@sina.com阅读(113)

本文最后更新于 2018年1月12日 17:39 可能会因为没有更新而失效。如已失效或需要修正,请留言!

很多站长想要建站玩玩,为了降低建站成本,会去找各种免费域名和免费空间。但是百度上搜到的都是很坑的伪免费域名:二级域名。这样的二级域名(甚至三级)你没有最大的控制权。

你需要申请顶级域名,就像doub.io就是顶级域名www.doub.io和abc.doub.io 都是二级域名!顶级域名理论可以无限添加二级域名

所以我就为大家写一个这个教程!

如果你觉得自带的域名DNS服务器不好用,可以看看这个:使用 CloudXNS 接管 Freenom 的免费域名解析,加快国内生效速度!


检查域名是否被占用

先打开域名注册网站:Freenom.com,然后在屏幕中间输入框输入你想要的域名比如:toyo233.ml,然后点击检查可用性

再新页面里看到你想要的域名是否已被注册!

购买免费域名

选择你想要的域名,点击现在获取(如果都被注册了,请换一个)!可以加入购物车。

然后点击完成。在确认页面,Period选项默认选的是3个月的,可以最高调到12个月,然后点击Continue继续下一步。

然后会让你输入邮箱来获取注册链接,点击Verify My Email Address发送邮件。

然后去你的邮箱点他发来的注册链接

注册账号

在页面填上你的资料,按照我的格式填写,记得勾选我已阅读并同意条款和条件。(这里是我翻译了一下页面,让你们看明白,实际是英文的。)

国家请不要乱选,他会记录你的ip,一旦ip对应的国家和你填写的不一致就会不允许你注册购买!

完成订单后就会给出订单号,然后点击下面的Click here to go to your Client Area按钮进入客户中心。

登陆客户中心

登陆用户名是你的注册邮箱。

登陆后,点左上角Domains——My Domains进入我的域名。

可以看到你购买的免费域名都是激活状态,点击后面的Manage Domain可以设置域名解析和DNS服务器。

域名配置

点击Manage Freenom DNS设置域名解析。

Name中填写域名记录(比如@是toyo233.cfwww是www.toyo233.cf等等),Type(类型)根据主机空间商提供的方式选择(如果给你的是一个独立ip那就选A记录,如果是个ipv6的ip那就选AAAA记录,如果是一个共享IP或者域名那就选CNAME记录),在Target中填写主机空间商提供的IP或者域名,然后点击Save Changes保存。如果想要添加更多请点More Records按钮。

如果你域名解析的地方搞不懂,可以看看这篇文章:使用 CloudXNS 接管 Freenom 的免费域名解析,加快国内生效速度!

当然,如果你网站是面向国内用户的,我建议你使用国内的域名解析服务(比如Cloudxns什么的)

Management Tools——Nameserver中可以更改DNS服务器,Use custom nameservers (enter below)是自定义DNS服务器,改完之后点Change Nameservers保存。(切记不要短时间内多次更换dns,容易导致一些解析问题!)

Management Tools——URL Forwarding中也可以设置URL转发,建议选择301重定向。

免费续订域名

在域名到期前14天时,Freenom 就会给你发送邮件通知你域名快到期了,让你续费,当然域名续费也是免费的。

首先我们登陆进去后台:https://my.freenom.com/ ,然后点击 Services – Renew Domains 后进入域名续订页面。

在下图中我们会看到 我有一个域名剩余14天就到期了,点击域名右边的 Renew This Domain 按钮续订。

然后我们就会进入该域名的续订页面,点击右边的列表框,选择要续订的时间(默认是 1个月,图中我选择了 12个月),最多12个月,免费。

选择后就点击 Order Now >> 按钮结算,然后就会跳转到结算成功页面,这时候就续订成功了!


好了,差不多就这样了。有什么问题请留言!

如果你域名解析的地方搞不懂,可以看看这篇文章:使用 CloudXNS 接管 Freenom 的免费域名解析,加快国内生效速度!

使用Aria2+AriaNG+FileManager来进行离线BT下载及在线播放

shenzt@sina.com阅读(127)

说明:Aria2之前介绍过很多了,是一款离线下载BT、磁力等的神器,这里手动发一个通过Aria2+AriaNG+FileManager来进行离线BT下载及在线播放的教程,用起来很方便,对于这样的教程之前发了好多了,有兴趣的也还可以试试:使用docker安装Aria2+AriaNg+filerun/Nextcloud,在线下载BT磁链/在线观看/全功能文件管理/云盘应用,本教程所使用的脚本均来自于逗比根据地。

系统要求:CentOS/Debian/Ubuntu,本教程在Debian 7 x64下完美通过。

安装Aria2

运行以下命令:

wget -N --no-check-certificate https://www.moerats.com/usr/shell/Aria2/aria2.sh && chmod +x aria2.sh && bash aria2.sh

记住默认密匙:doub.io,默认下载地址:/usr/local/caddy/www/file,更多参考:https://www.moerats.com/archives/251/

安装FileManager

运行以下命令:

#安装FileManager
wget -N --no-check-certificate https://www.moerats.com/usr/shell/Caddy/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh install http.filemanager
#建立文件夹
mkdir /usr/local/caddy/www && mkdir /usr/local/caddy/www/file
#配置ip访问,以下全部内容是一个整体,是一个命令,全部复制粘贴到SSH软件中并一起执行!
echo ":80 {
 root /usr/local/caddy/www/file
 timeouts none
 gzip
 filemanager / /usr/local/caddy/www/file {
  database /usr/local/caddy/filemanager.db
 }
}" > /usr/local/caddy/Caddyfile
#运行
/etc/init.d/caddy start

安装完成后可以通过ip访问filemanager网盘了,用户名和密码均为admin

使用方法

服务端Aria2FileManager配置好了后,就可以通过Aria2前端来下载了,网上一堆现成的前端,随便都可以找到,这里推荐AriaNG,使用本博客搭建好的即可!地址:https://www.moerats.com/Aria2

首先我们打开前端地址,填入ip和密匙进行连接。
请输入图片描述
再点击新建进行直链或者种子BT下载。
请输入图片描述

下载完成后就可以通过网盘预览观看了。

注意:当服务器重启后,Aria2FileManager都需要使用命令service aria2 start/etc/init.d/caddy start重新启动方可使用。

顶好爱迪 更专业 更方便

联系我们联系我们