源地址:http://huwei555.blog.51cto.com/1347480/1790185

在上班路上,看到手机短信里面发送报警信息,一台服务器凌晨4点下线了.匆忙到工位,检查机器果然下线了,报告老板,然后联系机房.大概十分钟后机房回复,机器受到***,机房切断了Ip.

机器用电信联通双网络,既然电信ip被封,那就用联通的ip进入机器.

要素一:机器的硬件信息以及Ip信息平时一定要保管好.免得有问题了还要去问机房,白白浪费很多时间.

进入机器后top等发现机器硬件性能ok,再用iptraf,流量也不高(当然不高,主ip都被切了).

机器跑的是网站业务,所以要找问题,去日志文件里面找访问量最高的ip即可.

要素二:找到日志文件找到***ip,前面为访问数量,后面为访问ip

[root@localhost logs]# awk '{print $1}' xxx.xxx.com.access.log-20160616| sort | uniq -c | sort -n -k 1 -r | head -n 20

91653 106.185.53.124

59492 113.116.56.80

56556 106.186.18.224

48629 106.187.45.172

26962 103.61.136.93

22825 191.101.1.49

21068 103.61.136.168

8947 207.46.13.2

7508 157.55.39.95

6392 40.77.167.49

3673 62.210.247.93

2827 46.4.94.226

2670 207.46.13.1

2576 58.60.220.128

2402 61.143.205.246

2035 157.55.39.80

2029 45.33.44.22

1953 157.55.39.105

1872 157.55.39.242

1862 183.8.3.47

这是我第一次想到的命令,其实在网站访问日志里面应该过滤掉各种蜘蛛爬虫才对,封错了,老板会跟你急眼.所以,正确的命令应该是:

[root@localhost logs]# cat xxx.xxx.com.access.log-20160616|grep -i -v -E "bing|baidu|google|sougou"|awk '{print $1}'|sort | uniq -c | sort -n -k 1 -r | head -n 20

91653 106.185.53.124

59492 113.116.56.80

56556 106.186.18.224

48629 106.187.45.172

26962 103.61.136.93

22825 191.101.1.49

21068 103.61.136.168

3661 62.210.247.93

2814 46.4.94.226

2576 58.60.220.128

2402 61.143.205.246

2029 45.33.44.22

1862 183.8.3.47

1300 103.61.136.164

1066 218.6.71.194

880 14.125.142.195

683 61.158.163.117

682 61.158.180.226

680 218.29.54.198

678 118.212.147.71

把前几个ip查询,都是日本,台湾,德国.再配合访问日志,得知是cc***.

先把这几个Ip用iptables封掉.输入封杀内容,重启iptables.

[root@localhost logs]# vim /etc/sysconfig/iptables

-A INPUT -s 106.185.53.124  -p tcp -m state --state NEW -j DROP

[root@localhost logs]# service iptables restart

使用iptables查看就可以看到,很多流量包被丢弃;

[root@localhost logs]# iptables -nvL

Chain INPUT (policy ACCEPT 4045K packets, 604M bytes)

pkts bytes target     prot opt in     out     source               destination

0     0 DROP       tcp  --  *      *       103.61.136.167       0.0.0.0/0           state NEW

382K   18M DROP       tcp  --  *      *       106.186.18.85        0.0.0.0/0           state NEW

97  4920 DROP       tcp  --  *      *       183.8.3.47           0.0.0.0/0           state NEW

380K   18M DROP       tcp  --  *      *       106.187.45.172       0.0.0.0/0           state NEW

300 15204 DROP       tcp  --  *      *       46.4.94.226          0.0.0.0/0           state NEW

这个时候机房那边也解封了电信Ip.观察一段时间,流量正常.

事后,研究写过脚本,把访问量异常的ip获取然后放在一个文件里面,使用iptbales封杀.

[root@localhost logs]# cat /sbin/cc.sh

#!/bin/sh

LOG_FILE=/usr/local/nginx/logs/xxx.xxx.com.access.log   #访问日志

IP_FILE=/etc/black       #存放需要禁止的ip文件

NUMBER=2000              #非法访问量的值

wan0=eth0                #网卡

BACKIP=`cat $IP_FILE`   #每次操作先清空之前的ip

`cat /dev/null > $IP_FILE`

Denyip=`cat $LOG_FILE|grep -i -v -E "bing|baidu|google|sougou"|awk '{print $1}'|sort | uniq -c | sort -n -k 1 -r | head -n 1000000|awk '{if($1>'$NUMBER')print $2}'`

echo $Denyip > $IP_FILE

if [ "$BACKIP" != "" ];then

for X in $BACKIP

do

echo $X ---deny

iptables -A INPUT -i $wan0 -s $X -p all -j DROP

done

fi

清空规则很简单,因为没有把规则保存,所以只要用

1

[root@localhost logs]# service iptables restart

就可以把iptbales规则恢复.

反思:1.使用netstat把非法ip列出

2.不遍历整个日志,假设当前被***,列出1小时内访问异常的Ip并封杀.

欢迎各位提出解决方案,或者链接

转载于:https://blog.51cto.com/ithelpu/1826600

工作中的一次linux防范ddos***___转载相关推荐

  1. linux buffer cache 过高_工作中经常用的linux命令 free

    free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区,不带参数默认将会以kb单位展示 CentOS 7.6上显示如下 free -m 以M为单位显示 total:表 ...

  2. [置顶] 总结工作中常用到的linux命令

    常用解压命令 tar.bz2 命令: tar -jxvf  *.tar.bz2 tar.z   命令: tar -zxvf  *.tar.z tar.gz   命令: tar -Zxvf  *.tar ...

  3. 工作中常用到的Linux命令

    https://mp.weixin.qq.com/s/wPBILQSl8-OVNYcJN9cBRg 转载于:https://www.cnblogs.com/linliquan/p/11236598.h ...

  4. 工作中常用到的Linux命令操作

    如何获取java进程的pid: pgrep -l java 如何获取某个进程的网络端口号: netstat/lsof netstat命令用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般 ...

  5. 开发中常遇到的linux系统配置操作整理

    一直以来,工作中使用xshell连接linux虚拟机.常常需要在虚拟机中搭建一个新的Linux系统,为了满足操作需要,必不可少的是一系列配置.之前对这些指令都是记录在云笔记,但是零零散散,每次用时,都 ...

  6. 工作中常用的linux命令梳理

    由于近一年来,项目中需求新增以及迭代的量慢慢趋于平稳,平时工作中更多的是解决缺陷和BUG,这其中涉及到很多linux服务器上的调试工作,故就梳理了一下平时用的比较多的linux命令,以供以后查阅,具体 ...

  7. 工作中linux定时任务的设置及相关配置

    工作中会用到定时任务,来处理以前采集来的数据备份, 每周一凌晨4点执行一次    0 4 * * */1 find/data/templatecdr/oracle/dcndatabak/ -type ...

  8. Linux 运维工作中的经典应用ansible(批量管理)Docker容器技术(环境的快速搭建)...

    一 Ansible自动化运维工具 Python 在运维工作中的经典应用ansible(批量管理操作)1.安装ansible(需要bese epel 2种源) wget -O /etc/yum.repo ...

  9. 平时用到那些linux命令,工作中经常用到的linux命令,你知道多少?

    ①定时任务管理: crontab –l 查看定时任务 crontab -e 编辑定时任务 ②查看实时日志: tail -f changyues_api.log 实时查看log文件的更新 ③清空日志 e ...

最新文章

  1. 请用状态转换图描述一个绘制折线的对话过程_CAD画一个元器件电路符号(AD)...
  2. 有了 for (;;) 为什么还需要 while (true) ? 到底哪个更快?
  3. python PyQt5 QColor()函数
  4. docker修改镜像的存储位置_Docker存储原理
  5. 重新定义“人货场”:淘宝情景计算探索实践
  6. 斜率优化(CDQ分治,Splay平衡树):BZOJ 1492: [NOI2007]货币兑换Cash
  7. 天然气表怎么看多少方_上海考大学难度怎么样?看2019上海高考“成绩分布表”和“本科分数线”就知道了!...
  8. Pycharm不能用了
  9. jQuery find() 方法的使用总结
  10. SCONS如何集成工具
  11. 如何生成一副Poker
  12. WWDC心愿单:新版OS X或将有这些变化
  13. Java基础 - 集合
  14. java求两点坐标间的距离
  15. QQ自动点赞PHP源码_QQ空间自动点赞脚本
  16. SpringBoot-引入jackson-dataformat-xml之后,本返回json的接口返回xml
  17. 计算机数据库安全研究目的,浅论计算机数据库安全管理
  18. firefox插件使用:hackbar
  19. python作业——输入一个月份单词输出对应月份缩写
  20. 怎样将优酷网站下载的视频KUX转MP4格式

热门文章

  1. 【Android UI设计与开发】第01期:引导界面(一)ViewPager介绍和使用详解
  2. 测试私有方法 重构_通过测试学Go:指针和错误
  3. 架构师应具备的概要技能
  4. Visual Studio 生成项目前自动关闭在运行的程序
  5. HDU 2000 ASCII码排序
  6. C++使用命名空间中成员的三种方式
  7. spring 找不到applicationContext.xml解决方法
  8. vsxxxx Avalon 感知提示
  9. float浮动的学习
  10. [转]php-mobile-detect