linux网站dos攻击自动封15分钟,宝塔面板Nginx配合shell脚本实现自动封禁IP 防御CC DDOS攻击方法...

news/2024/5/20 15:47:36/文章来源:https://blog.csdn.net/weixin_29901323/article/details/116802573

宝塔面板现在很多小白用户使用的非常多,功能比较简单易用,但是其中防御功能较弱,内置的WAF并不能实现服务器级别的防火墙封IP,所以我们只能借用一下其中的功能,加上LINUX系统天然自带的SHELL+IPTABLES防火墙来封禁IP

宝塔安装的NGINX按下面配置

软件管理-Nginx管理-配置修改

error_log  /www/wwwlogs/nginx_error.log  crit;

改成

error_log  /www/wwwlogs/nginx_error.log  error;

然后到需要开启防御的网站管理 点 设置-流量限制

这里启用流量限制,并将单IP并发数进行限制,一般如果网站页面不复杂设置为10就行。如果网页有很多调用CSS,JS之类的,自行计算一下

8fece7f69cc5235791061685181f49a9.png

这样重启 NGINX 后当有客户端频繁刷新你的网页,发起的请求将在超过设置的每秒钟允许数量后被禁止访问,同时将在 NGINX error.log(默认在 /www/wwwroot/nginx_error.log) 中看到类似记录:

2018/04/27 14:25:27 [error] 6307#0: *1472746 limiting connections by zone "perip", client: 182.161.35.139, server: 104.153.102.68, request: "GET /index.php?10=8 HTTP/1.1"

此时请求已经被 NGINX 限流,但是客户端仍然能够继续发送请求到NGINX,还是会占用一定的服务器资源。

因此接下来进行shell脚本设置,将这个client的IP直接通过防火墙封杀

首先升级系统软件并安装iptables

连接SSH执行yum -y update

对系统软件进行必要升级。

接下来确认你的系统版本,脚本在CENTOS6,CENTOS7下均测试可用,但是CENTOS7默认防火墙是firewalle,这个暂时没研究怎么设置,所以还是建议大家安装一下iptables,如果是CENTOS6默认的防火墙是iptables那就无须这一步操作

#先检查是否安装了iptables

service iptables status

#安装iptables

yum install -y iptables

#升级iptables

yum update iptables

#安装iptables-services

yum install iptables-services

禁用/停止自带的firewalld服务

#停止firewalld服务

systemctl stop firewalld

#禁用firewalld服务

systemctl mask firewalld

二、进行脚本设置

进CENTOSvi /www/wwwroot/iptables.sh

shell脚本如下

#!/bin/bash

tail /www/wwwlogs/nginx_error.log -n 200 | grep "perip"| awk -F'[ ,]' '{print $13}' | sort | uniq | sort -n > /www/wwwroot/drop_ip.txt

for i in $(cat /www/wwwroot/drop_ip.txt)

do

FLAG=0

for j in $(cat /www/wwwroot/drop_ip_all.txt)

do

if [ $i = $j ]; then

FLAG=1

break

fi

done

if [ $FLAG -eq 0 ]; then

echo --new drop ip:$i

#add to iptables

/sbin/iptables -C INPUT -s $i -j DROP

fi

done

#select drop_ip.txt append to drop_ip_all.txt

cat /www/wwwroot/drop_ip.txt >> /www/wwwroot/drop_ip_all.txt

#drop_ip_all remove repeat ip

#cat /www/wwwroot/drop_ip_all.txt | sort | uniq > /www/wwwroot/drop_ip_all.txt

对于部分较低版本的IPTABLES防火墙可能不支持-C参数,可以改成-I,iptables -C INPUT -s $i -j DROP

改成iptables -I INPUT -s $i -j DROP

另外针对部分环境,宝塔存在BUG,无法记录到流量控制信息,比如部分系统反代的情况下就有出现无法记录流控错误信息的情况,造成无法防御的情况,可以将第一句改成从网站日志取值tail /www/wwwlogs/nginx_error.log -n 200 | grep "perip"| awk -F'[ ,]' '{print $13}' | sort | uniq | sort -n > /www/wwwroot/drop_ip.txt

替换成tail -1000 /www/wwwlogs/bnxb.com.log |cut -d ' ' -f 1 | sort |uniq -c | awk '{if ($1 > 100) print $0}' > /www/wwwroot/drop_ip.txt

意思是读取网站日志的前一千条记录(防止日志过大读取压力大),然后取这一千条中访问超过100的记录,进行屏蔽,但是不建议用这种方式,这种方式对于平时没什么访问量的网站会造成,前一千条可能都是蜘蛛的爬行记录,这里的IP都是搜索引擎的蜘蛛IP,可能会误杀

三、对脚本进行权限提升和写入自动任务chmod +x /www/wwwroot/iptables.sh

echo "* * * * * root /www/wwwroot/iptables.sh" >> /etc/crontab

service crond restart

这里设置为每分钟执行一次。

然后还可以设置每天凌晨重启防火墙echo "01 1 * * * root /etc/init.d/iptables restart" >> /etc/crontab

service crond restart

四、确定计划任务已经执行

执行crontab -l

看看有没有一条* * * * * root /www/wwwroot/iptables.sh

如果没有可能是服务器用的系统,计划任务配置文件已经被改动过不是/etc/crontab了

可以执行crontab -e

按i进入插入模式,手动将下面代码黏贴进去* * * * * root /www/wwwroot/iptables.sh

然后按ESC,按shift+; 输入wq回车保存service crond restart

crontab -l

当然如果你是套了CDN,那也是有解决办法的,但是需要你的CDN提供商支持IP防火墙,也就是IP黑名单功能,比如我们合作的Cloudflare就支持这个功能(https://cdn.bnxb.com),这里会生产一份封禁的IP黑名单,所以可以直接把这些IP提交到CDN,我们的API可以实现这个效果,详见(https://cdn.bnxb.com)

另外如果您只是需要记录下IP,并用来把这些IP通过我们的CDN.BNXB.COM的批量防火墙导入功能来导入,那建议用这个脚本来生成工具IP的TXT文件,用于批量提交

#!/bin/bash

tail -1000 /www/wwwlogs/tool.bnxb.com.log |cut -d ' ' -f 1 | sort |uniq -c | awk '{if ($1 > 100) print $2}' > /www/wwwroot/drop_ip.txt

for i in $(cat /www/wwwroot/drop_ip.txt)

do

FLAG=0

for j in $(cat /www/wwwroot/drop_ip_all.txt)

do

if [ $i = $j ]; then

FLAG=1

break

fi

done

if [ $FLAG -eq 0 ]; then

echo $i >> /www/wwwroot/drop_ip_all.txt

fi

done

只需要提交drop_ip_all.txt到我们的https://cdn.bnxb.com/ipfirewall.php就行了

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

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

相关文章

【转】3.15网站维权:如何防止网站内容被剽窃

写在开头:网站内容被其它站点剽窃是建站过程中经常会遇到的问题,严重的侵权现象可以通过法律途径来解决,可一般的复制转载却无法禁止。网络虽然是开放的世界,但一些恶意转载的现象却令众多站长深恶痛绝却又束手无策,比…

html网页超链接百度等网站,零基础学HTML(超链接)

都知道超链接是什么吧?超链接就是从一个网页跳转到另一个网页,还可以从底部跳转到顶部,从而实现网页间的联系,把多个网页联系起来,构成网络。没有添加任何网页的超链接这是一个超链接这是超链接,里面的中文…

[转]Stimator:评估您的网站/博客的价值

转自:http://blog.bingo929.com/index.php 今天发现一个好看的网站,发现一篇有意思的文章“Stimator:评估您的网站/博客的价值”。试着测了一下自己的博克,居然值这么多美元,没想到。 试一试您的地址:Stimator转载于:h…

基于jquery网站左侧下拉菜单

网站左侧下拉菜单jQuery代码。这是一款蓝色风格的适合做后台下拉菜单代码。效果图如下&#xff1a; 在线预览 源码下载 实现的代码&#xff1a; <div class"container"><div class"leftsidebar_box"><div class"line"></…

网站服务架构

服务器划分 对于访问量大的网站而言&#xff0c;将网站的各个部分拆分分别部署到不同服务器上是很有必要的。例如将图片和web站点分开。一般而言&#xff0c;在网站的整个服务器部署上分为如下几种类型&#xff1a; 文件服务器&#xff1a;一般存储系统的相关图片和文件&#x…

我记录网站综合系统 -- 技术原理解析[1:我记录的整体框架的简介]

本文章的代码位置&#xff1a;整个wojilu源代码 我记录作为一个优秀的成熟的框架&#xff0c;包含了你所需要的很多很多功能&#xff0c;下面这个列表就是1.6版为止的大体功能。 [框架包括] 1、一个持久层框架 wojilu ORM2、一个依赖注入框架 wojilu IOC3、一个Web开发框架 wo…

10个很棒的学习Android 开发的网站(转)

看到江湖旅人 写的《10个很棒的学习iOS开发的网站 - 简书》&#xff0c;所以就忍不住写Android 啦&#xff0c;也希望对大家有帮助。我推荐的网站&#xff0c;都是我在学习Android 开发过程中发现的好网站&#xff0c;给初学者一些建议&#xff0c;少走一些弯路。 Android Deve…

转:ASP.NET 2.0:使用用户控件和定制的Web部件个人化你的门户网站

ASP.NET 2.0&#xff1a;使用用户控件和定制的Web部件个人化你的门户网站原著&#xff1a;Ted Pattison&#xff0c;Fritz Onion 翻译&#xff1a;汪泳 原代码下载&#xff1a;WebParts.exe (619KB)原文出处&#xff1a;ASP.NET 2.0 Personalize Your Portal with User Control…

ASP.NET 2.0中轻松实现网站换肤

一、简介&#xff1a;  利用Themes我们可以很容易的更改控件、页面的风格&#xff0c;而不需要修改我们的代码和页面文件。Themes文件被单独的放在1个App_Themes文件夹下面&#xff0c;与你的程序是完全分开的。二、怎么使用Themes和Skins&#xff1a;  先看个非常简单的实…

11个最值得Java开发者收藏的网站

2019独角兽企业重金招聘Python工程师标准>>> Java是一种面向对象的编程语言&#xff0c;由Sun Microsystems公司在1995年的时候正式发布。直到今天&#xff0c;Java都一直是最受欢迎的编程语言之一。如今&#xff0c;Java应用于各种各样的技术领域&#xff0c;例如网…

ASP.NET MVC 网站开发总结(七)——C#操作图片:多张图的拼接(旋转)

其实用C#来操作图片的拼接就是在用Graphic画图。个人感觉还是挺有趣的&#xff0c;各种类库提供了丰富多彩的功能。 源代码&#xff08;移植到一个简单的C#程序中&#xff0c;并没有放在ASP.NET项目中&#xff09;&#xff1a; using System.Drawing; using System.Drawing.Dra…

Sassaparilla – 简单、快速的创建响应式网站

Sassaparilla 是一组创建响应式网站的规则和风格&#xff0c;Sassaparilla 使用 Sass 和 Compass 建立灵活的可重用的样式表&#xff0c;帮助你简单、快速的创建出响应式网站。 您可能感兴趣的相关文章基于拖放布局的 Twitter Bootstrap 网站生成器Superhero&#xff1a;构建大…

20个专业在线配色网站分享

摘自http://www.websbook.com/yuanli/20gzyzxpswzfx_17814.html 现在专门用于配色的在线网站真不少&#xff0c;之前一片文章已经总结了18个配色网站&#xff0c;这次推荐的这20个配色网站也十分出色&#xff0c;而且网站本身的设计也十分精美&#xff0c;网页设计师可以参考使…

常用网站网址(个个都是精华)

1.菜鸟教程 网址&#xff1a;http://www.runoob.com/ 简介&#xff1a; 菜鸟教程(www.runoob.com)提供了最全的编程技术基础教程, 介绍了HTML、CSS、Javascript、Python,Java,Ruby,C,PHP , MySQL等各种编程语言的基础知识。 2.17中国素材网 网址&#xff1a;http://www.17suc…

65 + iPhone应用程序网站创意设计灵感(下篇)

接上篇&#xff1a;65 iPhone应用程序网站创意设计灵感&#xff08;上篇&#xff09; BirdBrain App Billings App DBElement Sketches App Firetask Hipstamatic App Tic a Tac Poker App Foobi App Spoonjuice Apps Yuritsuki The Heist App Lo-Mob App IdeaBook App TCG Co…

读书笔记《网站数据分析》 如何查找网站存在的问题

按问题进行分类 查找网站存在的问题需要经过以下阶段 1、识别和描述问题 2、理清问题边界 3、收集客户需求 4、确定客户需求的关键质量特性 四个阶段中都要明确&#xff1a; 1、确定工作目标 2、清晰工作范围 3、做好利益相关方的沟通 4、项目风险评估 需要考虑的后续问题&…

你真的了解网站开发中的 GZIP 吗?

gzip是GNUzip的缩写&#xff0c;最早用于UNIX系统的文件压缩。HTTP协议上的gzip编码是一种用来改进web应用程序性能的技术&#xff0c;web服务器和客户端&#xff08;浏览器&#xff09;必须共同支持gzip。目前主流的浏览器&#xff0c;Chrome,firefox,IE等都支持该协议。常见的…

网站平台架构演变史(二)

上篇文章大致降了网站架构的一个大致发展趋势&#xff0c;这篇咱们讲讲数据库。数据库在大并发的情况下是最容易出现问题的&#xff0c;往往都是由于写操作引发的网站访问缓慢或者崩溃&#xff0c;之前说过12306就是这个问题。 大并发的时候&#xff0c;打个比方&#xff0c;上…

使用HTML5的链接预取功能给网站提速

2019独角兽企业重金招聘Python工程师标准>>> HTML5的链接预取功能(link prefetching)是一个埋在沙里的宝石&#xff0c;至今还很少人知道它的价值。 你可能已经知道了那古老而又闻名的图片预加载功能&#xff0c;链接预取功能就是将此概念由图片扩展到了网页内容&am…

30个优秀旅游网站案例

从旅游行业的网站经常使用出色的拍摄和有吸引力的的设计。当然&#xff0c;一个有吸引力的网站&#xff0c;可以帮助尽可能吸引的人可能会在访问感兴趣的网站的主题。在这篇文章中&#xff0c;我们将展示30网站很棒的网站 VisitPhilly.com The Cardiff Apartment Grand Island …