记一次真实的网站被黑经历

news/2024/5/20 2:06:53/文章来源:https://blog.csdn.net/belalds/article/details/80802115

记一次真实的网站被黑经历

前言

距离上次被DDOS×××已经有10天左右的时间,距离上上次已经记不起具体那一天了,每一次都这么不了了只。然而近期一次相对持久的×××,我觉得有必要静下心来,分享一下被黑的那段经历。

在叙述经历之前,先简单的介绍一下服务器配置情况:

  • ECS 1核2G内存1MB带宽,Linux系统
  • RDS 2核240MB内存,最大连接数60
  • Redis 256MB共享实例,搬家之后没用到
  • CDN 按量付费,缓存小文件

以上配置,对于一个日访问量几千的网站来说应该绰绰有余了,并发撑死十几个左右,以下是简单的网站部署情况:

记一次真实的网站被黑经历

经历

前段时间听说过互联网大佬阮一峰博客被DDOS的经历,可谓是持久啊,最终被迫转移服务器,据说还被勒索。然不知道为啥是哪个仙人板板居然盯上了我的小站?难道我比阮大神长得帅?

记一次真实的网站被黑经历

好吧,故事开始,2018年6月14日,凌晨两点三十收到了阿里云系统告警通知,告知网站无法访问,然而那会我还在睡梦中。

跟往常一样,差不多六点左右醒来,习惯性的翻看手机,恰好此时又发来了短信告警。要在平时的话是可以再睡两个小时的,然而此时一个激灵,瞬间困意全无,怎么说我也是有几千访问量的博主了。

于是,赶紧爬起来打开电脑,尝试访问下博客和论坛,果不其然浏览器在一直打转转。

问题排查

尝试远程登录服务器:

  • 查看Nginx 和 PHP-FPM,ps -ef|grep xxxx

  • 查看系统剩余内存 free -m

  • 查看CPU使用情况 top

  • 查看Nginx错误日志 tail -f error.log

  • 查看日志容量 ll -h

  • 查看并发连接数 netstat -nat|grep ESTABLISHED|wc -l

一顿骚操作之后,并没有什么异常,内存和CPU平稳,Nginx和PHP 进程没问题。然后分别重启了一下 PHP 和 Nginx,开始网站还可以访问,进入社区首页就被卡死。

查看错误日志,后台使劲的刷日志,随便查看了几个IP,有印度的,美国的,菲律宾的等等,当然大多数还是国内的IP。一晚上的时间居然刷了上百兆日志(上次被D我清理过一次),反正我觉得是不少了,对比网站平时的访问量来说。

之前有过几次×××,但都是三三俩俩的过来,使用Nginx禁掉IP就是了。然而此次,显然不是禁掉IP可以解决问题的了,这么多IP收集是个问题(当然可以通过正则匹配获取),还有可能造成误伤。

上班途中

然而上班才是正事,心思着一时半会解决不了问题,瞄了一眼错误日志,还在使劲的刷着,然后顺手发了个朋友圈然后去洗漱:

记一次真实的网站被黑经历

路上一路嘟念,心想是不是到了9点,他们准时下夜班然后就可以正常访问了,自我开解一下。

记一次真实的网站被黑经历

上班中

到了公司,第一件事当然是远程登录下服务器,看了一下,错误日志还在使劲刷。正常来说这个是时间点是不会有用户来访问的。

重启了服务多次,访问一下首页就被卡死,然后瞬间瘫痪,整个网站(社区+博客)都不能访问了。既然这样,还是老实上班,坐等×××停止吧。

期间群里的小伙伴们问网站怎么了,打不开了椰?将近中午的时候,查看了一下错误日志,还有那么几个IP再尝试请求不同的地址,一瞅就不是什么好东西,果断deny了一下。话说,现在请求没那么多了,重启了一些Nginx 和 PHP 进程,访问首页还是卡死?真是怪了个蛋。

心想是不是RDS数据库的问题,查看了监控报警面板,CPU和内存利用率和当前总连接数都正常,没有什么异常,凌晨两点-六点左右的确有波动,但是不至于被D死。既然都登录了,要不顺便把 ECS 和 RDS 都重启了吧。

果然,重启一下居然神奇的好了,吃午饭的时候还用手机访问了一下,正常,可以安心吃饭了。

记一次真实的网站被黑经历

问题解决

其实,最终问题怎么解决的,我并不清楚,说几个比较疑惑的点:

  • ECS 服务器 CPU 和内存也在正常阈值
  • Nginx 和 PHP-FPM 进程都分别重启过
  • RDS 数据库连接数尽管有所波动,但是并没有占满未释放
  • 看错误日志请求都是来自上百个不同的IP,并且大多都是访问的社区URL
  • 还有这些肉鸡为什么都是晚上?晚上便宜?还是说在西半球组织×××
  • 此次是有针对性的,还是随机的?但愿是随机的
  • 中间停止过一次社区,博客是可以一直正常访问的,怀疑是首页数据库查询的问题,基于连接数应该不是这个问题,难道是Discuz的Bug?但是后来重启数据库后的确可以正常访问了。

记一次真实的网站被黑经历

其实阿里云有基础的DDOS防护,清洗触发值:

  • 每秒请求流量:300M
  • 每秒报文数量:70000

对于一般小站来说,是万万不可能达到300M的流量阈值的,博客的CDN峰值才3M而已。

所以说,这些小波流的×××只能自身去默默承受,而机器配置不高,买不起带宽只能任×××自由的撒欢,还不如直接关站,扔给他一个Nginx + 静态页面让它D去吧。

记一次真实的网站被黑经历

防御策略

如果有人真D你的站点,你还真没有办法,当然我所说的群体是针对中小站长而言,你连DDOS基础防护的清洗阈值都达不到。

如果你只是一个默默无闻的小站,根本不需要想那么多。尽管现在DDOS成本很低,但谁不是无利不起早,除非你得罪了什么人。

当然对于一般的×××我们也不能坐以待毙,这里总结了几个小技巧,分享给大家,反向代理使用的是openresty。

Nginx优化

Nginx号称最大并发5W,实际上对于中小站点来说几十或者上百个并发就不错了,最基本的参数就可以满足需求。但是为了安全期间,我们最好隐藏其版本号。

# 隐藏版本,防止已知漏洞被利用
server_tokens off; #在http 模块当中配置

PHP优化

在php渲染的网页header信息中,会包含php的版本号信息,比如: X-Powered-by: php/5.6.30,这有些不安全,有些×××可能采用扫描的方式,批量寻找低版本的php服务器,利用php漏洞(比如hash冲突)来×××服务器。

# 隐藏版本,防止已知漏洞被利用
php_admin_flag[expose_php] = off

IP黑名单

对付那种最low的×××,加入黑名单的确是一个不错的选择,不然别人AB就能把你压死:

# 在Nginx的http模块添加以下配置即可
deny 61.136.197.xxx;
# 禁封IP段
deny 61.136.197.0/24;

IP日访问次数

限制单个IP的日访问次数,正常来说一个用户的访问深度很少超过10个,跳出率一般在50%-70%之间。其实我们要做的把单个IP的日访问量控制在100甚至50以内即可。

限制并发数

光限制访问次数还是不够的,×××者可能瞬间涌入成百上千的请求,如果这些请求到后端服务,会打垮数据库服务的,所以我们还要基于我们自身网站访问情况设置并发数。

  • 限制单个IP的并发数
  • 限制总并发数

这里建议大家使用漏桶算法限流,来×××流量请求。

配置 CDN

基于带宽以及正常用户访问速度的考量,建议配置 CDN,以下是博客的流量使用情况,峰值3MB,对于我这1MB带宽的服务器肯定是抗不住啊,况且还有社区的访问。

记一次真实的网站被黑经历

配置缓存

数据库资源是宝贵的,所以尽量不要让请求直达后端。其实搬家之前,博客和社区都是配置过redis缓存的。由于之前购买的Redis服务是专有网络,新账号无法连接,然后就作罢了。

看来这次,需要在空闲服务器上配置一把了,反正闲着也是闲着,能起一丢丢作用也是好的。

  • 阿里云Redis加速Discuz论坛访问

  • 阿里云Redis加速Typecho博客访问

总结

前面也说了,对于×××,小站真的无解,能做好基础的防护就可以了。但是对于那些肉鸡们或者即将成为肉鸡的人来说:

  • 软件漏洞一定要及时打补丁,时刻关注互联网相关动态。

  • ×××利用被***的路由器获取网络流量,从而控制大连肉鸡。

  • 大多数肉鸡是没有安全意识的,并且被长期利用,经发现,不少是云服务商主机、托管服务器主机,被×××利用漏洞控制。

  • DDoS××××××正在向产业化、平台服务化转变,如果有人想害你,一个按钮、几百块钱,就可以实现一整月的×××,然后一首《凉凉》送给自己。

参考

各种限流脚本:从构建分布式秒杀系统聊聊限流特技

作者: 小柒

出处: https://blog.52itstyle.com

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(345849402@qq.com)咨询。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_824288.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在HTTPS网站安装百度分享按钮代码及其SEO外链作用

百度分享按钮,可以帮用户实现一键将网站内容分享到第三方网站,但它的功能与作用远远不止便于分享。 今天,小小课堂网为大家带来的是百度分享按钮代码安装及对网站SEO优化外链的效果。希望对大家有所帮助。一、百度分享代码的安装 1、登录百度…

精美案例展示:立体动感的视差滚动效果网站作品

视差滚动(Parallax Scrolling)是新兴的网页设计技术,通过让多层背景以不同的速度移动来形成立体的运动视差效果,虽然纯属视觉效果,但在内容滚动时形成的视觉体验非常出色!今天这篇文章就与大家分享35个运用…

国外网站设计:20佳应用大照片做背景的优秀案例

定义网站基调和风格的一种简单方式就是使用大图片背景(Big Background Image),在使用这种大图片的时候,为了让大背景图片能够和网站的其它内容很好的融合在一起,你需要考虑很多事情,否则可能会导致网站内容…

fikker反向代理服务器的网站缓存加速特别说明

2019独角兽企业重金招聘Python工程师标准>>> 1、特别说明: Fikker 只缓存以 GET 方法请求并且源站返回状态为 200 OK的页面。以其它方法请求或源站返回状态非 200 OK 的页面都不会被缓存。 2、配置说明: 缓存地址URL:输入要缓存…

WordPress最新网站漏洞利用及修复解决方案

WordPress最新版本存在远程代码注入获取SHELL漏洞,在2019年,该网站漏洞影响的版本是WordPress5.0,甚至是致命的一个漏洞,包括目前的wordpress 4.8.6 以及wordpress 4.9.6版本,可以删除网站上的任意文件,影响…

网站实现扫描二维码关注微信公众号,实现自动登陆

1、OAuth2.0简介 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。 …

11 Nginx网站服务的基本构建

Nginx网站服务的基本构建 一关于Nginx服务 Nginx简介 Nginx (发音[engine x]) 是一款高性能、轻量级Web服务软件; 始用于俄罗斯的Rambler.ru站点 市场占有率迅速跃居第三位 官方网站 http://www.nginx.org/ Nginx与Apache的优缺点 1 Apache对客户端的响应是支持并发…

《阿勇java建站教程》2.3-数据库特殊应用

2.3-数据库特殊应用大家好,我是阿勇,感谢大家阅读这篇文章,并且希望大家能将《阿勇java建站教程》全部看完!本节继上节内容(T-SQL)之后继续说说数据库相关的内容。这节说的是数据库的“特殊”应用&#xff…

最新WordPress插件漏洞,影响超过700万个网站

研究人员已经披露了多个WordPress插件中的漏洞,如果成功利用这些漏洞,则攻击者可以在某些情况下运行任意代码并接管网站。 这些缺陷已在Elementor(一个用于超过700万个网站的网站构建器插件)和WP Super Cache(用于服务…

WordPress网站成为Linux恶意软件目标: 19个插件和主题缺陷

WordPress网站正成为一种以前未知的Linux恶意软件的目标,该恶意软件利用二十多个插件和主题中的缺陷来破坏易受攻击的系统。 “如果网站使用此类附加组件的过时版本,缺乏关键修复,目标网页就会注入恶意JavaScript,” 知名网络安全…

比较好的java网站[推荐]

为什么80%的码农都做不了架构师?>>> 比较好的java网站[推荐] 博客分类: java JavaASP.net.netVB.NETVC 1. The Source for Java Technology Collaboration(JAVA开发的官方网站) http://www.java.net/ - 外文 2. jGuru: FAQ Home Page 推荐…

学编程没人带?推荐10个免费学编程的最佳网站给你

学习编程是开启你的移动端应用开发和Web开发职业生涯的一种绝佳方式和必要途径。本文将分享10个有助你学编程的最佳网站。 1.Codecademy 它是学编程最流行的网站之一。事实上,2000万人已经使用这个网站来学习编程了。你只需要注册一个免费帐户,便可以开…

SEO完全手册之title优化

在我的博客发布了《花钱最少的推广方式之SEO》文章后,受到了很多看官的关注,再次万分感谢大家!从今天开始,我会每天更新一篇SEO优化的东西,也希望大家喜欢。在这里,我就不阐明搜索引擎工作的原理了&#xf…

宝塔面板部署django网站

一、 导出你的django网站所需要的依赖 在你网站根目录(即manage.py所在的目录)执行下列命令 pip freeze > requirements.txt之后,会生成一个requirements.txt文件,表示导出成功 二、 上传网站代码 新建一个用于存储django网站代码的目录&#xff…

windows-配置php网站内部的git操作服务

一、测试配置 代码如下所示,如果git没有加入到环境变量的情况下 $cmd "cd /wwwroot/sqlite && git pull 2>&1";exec($cmd, $result);dd($result);设置好目录,运行网站,此时发现执行git status 就能正常访问&#…

网络安全系列之七 网站提权

上传了webshell之后,我们的目的是获取服务器的系统管理员权限,这也是******的最终目的。“H4ck Door”是一个很牛的大马,提供了很多功能,我比较喜欢的是执行cmd命令来提权。首先执行“net user”命令查看服务器有哪些用户&#xf…

扩展 jQuery EasyUI Datagrid 数据行鼠标悬停/离开事件(onMouseOver/onMouseOut)

客户需求: jQuery EasyUI Datagrid 用户列表鼠标悬停/离开数据行时显示人员头像(onMouseOver/onMouseOut) 如图所示,Datagrid 鼠标悬停/离开数据行时切换了不同的样式显示: 此时用谷歌开发者工具审查鼠标悬停行元素时发…

爬取网站要登录?46行代码解决问题,python爬虫随心所欲

当你在爬某些网站的时候,需要你登录才可以获取数据,咋整?莫慌,把这几招传授给你,让你以后随心所欲的爬! 一:Cookie大法 你平常网站浏览的时候,是不是发现你只要登录一次&#xff0c…

25行代码,教你用python爬取网站的MV视频

喜欢编程,热爱分享,希望能结交更多志同道合的朋友,一起在学习Python的道路上走得更远! 本文教大家如何用python爬取网站的mv视频,话不多说直接上代码! 爬取网站的地址:http://www.170mv.com/m…

最新北京奥运官方网站幻灯片切换效果

预览转载于:https://www.cnblogs.com/CB/archive/2008/08/11/1265158.html