laravist 群友杂谈 服务器篇
Littlehz
大多数攻击者才不会这么细心找你的漏洞呢,有点耐心的也就是用个通用漏洞扫描器,做做弱口令、SQL注入的。没耐心的,就是找你最重要的域名,看到只解析出来一两个IP知道你没防护,CC + DDoS大流量来.
DDoS用不了太多钱,大多数数据中心,不花钱做额外的防御,都会直接把大于2G的DDoS丢黑洞,所以你2G的DDoS攻击就能直接让对方无法访问。
不管你解析的,直接打IP.遇到DDoS,机房能帮你挡才行,你自己没有任何办法。
DDoS的攻击起步价,大概在300元一次左右。大概就是按 100~200元 每G流量 每小时 这么收费。
遇到DDoS,机房会直接在路由器层面把你的服务器IP丢黑洞,反正你的服务器没有一点流量进来,外网的所有流量直接进黑洞。
Abraham
你们要是用 cdn 话, 源地址千万不要用主站域名(cdn 用同样的域名回源)
而是自定义一个乱七八糟不存在的域名让服务器解析 ,
Zmap,几个小时就能扫遍全球的所有 ip ,
配合一些 host 的手法能直接搞到 cdn 的源站 ip.
http://zone.wooyun.org/content/18058
Littlehz 针对 Abraham 的话题进行回复
@Abraham. 这种方法,也会找出来所有CDN IP和真机IP混一起。CDN IP起码有上百个,分布在至少10个数据中心,从这上百个IP里找出一个真机IP也不容易。
如果所有IP一起攻击的话,每个CDN数据中心能抗10G流量,那攻击成本就高了。
把服务器IP藏到几百个CDN IP放一起,特征不明显难找出来,攻击成本又高的话,他就不会搞了。
他扫描端口的话,CDN回源可以设置非80端口,我就不相信他能把全国所有IP所有端口都扫了。
Abraham 对 Littlehz 回复
@littlehz 我感觉这点也是很重要的, 回源端口和回源用的域名, 不要把外部产品域名直接绑到web server 上
Littlehz好对他刚才的话题继续讲解
而且还有种NB的技术,叫BGP Anycast,国内的IP可以在全国到处漂移。而国外的IP可以在国外很多地方漂移。比如一台香港的主机外网IP是美国的IP通过BGP Anycast漂移到香港来。他就慢慢扫香港的IP段吧,怎么都扫不到这台主机。
CDN本身都有防DDoS功能,但很少CDN能处理动态请求,要么就是动态请求贵很多,只能帮你缓存下静态文件。
Abraham 针对有人提问下面一个问题进行回复
外部产品域名绑定的服务器反向代理到实际的web server上嘛?
Abraham的理解:
我的意思是, 如果你 ping 你的域名, 比如 laravist.com, 返回的应该是 cdn ip。
如果你把本地 host 里的 laravist.com 指向服务器真实 ip,服务器应该像是其它人的机器一样返回 500 之类的。 要是让 web server 响应 foo.com, 黑客就能通过扫描器探测出来你这个机器接受这个域名, 他会弄你啊。。。
简单来说就是 真实的 ip, 不响应网站域名的请求, 让 cdn 和 真实 ip 之间用 另一套端口和域名通信
不知道我猜的对不对啊,这招貌似可以防掉上面乌云的那个 bug
Littlehz 对 Abraham的回复
CDN也不会告诉你他所有的节点IP列表,他们也要保护自己。real server不响应外部的请求有点难度。不响应80端口,换别的端口接收CDN过来的请求比较简单。
群友疑问:
疑问1.备案的时候不是把域名和ip绑定了么?
疑问2.cdn 入口 -> 反向代理服务器-》转发-》real server
Littlehz 解疑惑
你可以理解成 CDN 就是 带缓存的反向代理。CDN更偏向于把 资源复制一份到最接近用户的节点。而反向代理更偏向于 建立了一个接近用户的节点,但是请求通过反向代理节点 最终会回源到 real server,仅仅起一定的跨网加速效果。
存在某些手段可以把一台机器的真实IP挖出来,
这就跟暴力破解一样,你让他们的时间成本足够高,就不会暴力破解了。理论上再复杂的密码也可以被穷举出来的嘛,但是你限制他IP密码错误次数每小时只能尝试10次。他要穷举完所有密码,不是要好多年么。
分割线 -----------------------------------------
某位群友 AS foo 对 zmap的使用的见解
foo表达了该工具并不能在几小时内完成互联网上的ipv4的扫描.
foo 用的ZMAP 大概就是根据一个公开的表换算出全球IP地址段,然后去扫,ZMAP 扫的快,但是准确率相当低,而且实际想当耗带宽 我在AWS上扫的 10M 出发带宽 扫完中国大概需要6个小时
在国内好像全部挂掉 因为会被服务商认为恶意扫描.
正常扫完全球要一周(此数据仅以foo群友的机器为基准).
扫一波 然后组件识别 然后去匹配这个组件有的漏洞 然后再去扫 就看数据量的多少 总有中招的
Abraham 对Zmap的科普贴
https://www.zhihu.com/question/21505586
Littlehz 对常见的攻击的处理科普
SQL注入,上WAF防御,很多CDN都免费提供。可以拦截掉95%以上的SQL注入
分割线 -----------------------
Littlehz 针对 openresty 替换掉 nginx
openresty 用好三大核心即可 nginx + lua + redis。剩下的发挥你们的想象力吧。
lua是很轻量的脚本,完成很多开发语言能做的事情。而redis是非常高效的数据结构丰富的内存数据库。你说能干什么呢。websocket是其中之一。
这是Littlehz 2016.03.20号对改工具的见解
websocket最好不要php直接来做,目前php的websocket包,都是启动一个独立的进程监听端口解析协议,跟 swoole、workerman 这些东西同一种性质,不能确保100%好用及可用。
推荐 借助 openresty(nginx) + lua + redis 来做。
openresty(nginx) 通过 redis 插件 监听websocket,同时挂起一个到 redis 的连接,用 redis 的 sub 方法,订阅某个 key。
php 这边只需要 调用 Redis 的 pub 方法,写入 redis 的 key 即可。
https://github.com/openresty/lua-resty-websocket
如果此系列文章有任何侵害到文中群友的利益的,还请通知方方,方方会把其删除.