防人之心不可无。 网上总有些无聊或者有意的人。不多说了。上干货,配置vps apf防小流量ddos攻击。

对于大流量的ddos攻击, 需要机房的硬件防火墙,vps内部可能也扛不住。

1. 安装 DDoS deflate

DDoS deflate的原理是通过netstat命令找出 发出过量连接的单个IP,并使用iptables防火墙将这些IP进行拒绝。由于iptables防火墙拒绝IP的连接远比从Apache层面上来得高效,因此iptables便成了运行在Apache前端的“过滤器”。同样的,DDoS deflate也可以设置采用APF(高级防火墙)进行IP阻止。

  1. wget http://www.inetbase.com/scripts/ddos/install.sh
  2. chmod +x install.sh
  3. ./install.sh
主要功能与配置

1、可以设置IP白名单,在 /usr/local/ddos/ignore.ip.list 中设置即可;

2、主要配置文件位于 /usr/local/ddos/ddos.conf ,打开此文件,根据提示进行简单的编辑即可;

3、DDoS deflate可以在阻止某一IP后,隔一段预置的时候自动对其解封;

4、可以在配置文件中设置多长时间检查一次网络连接情况;

5、当阻止IP后,可以设置Email提醒

简单配置一下:

  1. FREQ=1 #检测的频率为1分钟
  2. NO_OF_CONNECTIONS=100 #当单个IP超过100个连接请求时判定为DDOS
  3.  
  4. APF_BAN=1 #如果打算使用APF阻止IP,则设置为1(需要预先安装APF);如果使用iptables,则设置为0;
  5.  
  6. KILL=1 #是否阻止
  7.  
  8. EMAIL_TO="webmaster@firstVM.com" #接收邮件
  9.  
  10. BAN_PERIOD=600 #阻止时长,10分钟

2. 安装配置apf。

APF(Advanced Policy Firewall)是 Rf-x Networks 出品的Linux环境下的软件防火墙,被大部分Linux服务器管理员所采用,使用iptables的规则,易于理解及使用。

适合对iptables不是很熟悉的人使用,因为它的安装配置比较简单,但是功能还是非常强大的。

脚本安装:

  1. root@linux:/home/zhangy# wget http://www.rfxnetworks.com/downloads/apf-current.tar.gz
  2. root@linux:/home/zhangy# tar -xvzf apf-current.tar.gz
  3. root@linux:/home/zhangy# cd apf-9.7-1
  4. root@linux:/home/zhangy/apf-9.7-1# ./install.sh

ubuntu 可以快速安装:

  1. sudo aptitude install apf-firewall

配置:

  1. vi /etc/apf/conf.apf

往后翻页,找到:

  1. # Configure inbound (ingress) accepted services. This is an optional
  2. # feature; services and customized entries may be made directly to an ip's
  3. # virtual net file located in the vnet/ directory. Format is comma separated
  4. # and underscore separator for ranges.
  5. #
  6. # Example:
  7. # IG_TCP_CPORTS="21,22,25,53,80,443,110,143,6000_7000"
  8. # IG_UDP_CPORTS="20,21,53,123"
  9. # IG_ICMP_TYPES="3,5,11,0,30,8"
  10.  
  11. # Common inbound (ingress) TCP ports
  12. IG_TCP_CPORTS="22"

默认只有22端口开放。 我们先不管。 访问以下80端口的网站试试。 发现竟然可以访问。 为什么规则没有起作用。

继续查看配置文件。 找啊找。

这一行引起了我的注意:

  1. # Untrusted Network interface(s); all traffic on defined interface will be
  2. # subject to all firewall rules. This should be your internet exposed
  3. # interfaces. Only one interface is accepted for each value.
  4. IFACE_IN="eth0"

突然想到, 会不会是监听端口的问题。

我们知道, 如果是真实服务器或者是 xen虚拟化的vps, 其网卡是 eth*。  例如:

  1. ifconfig

但是, 我这台vps是openvz虚拟化的。 它的网卡一般是 vnet* 的。 比如:

于是改上面的配置文件:

  1. # Untrusted Network interface(s); all traffic on defined interface will be
  2. # subject to all firewall rules. This should be your internet exposed
  3. # interfaces. Only one interface is accepted for each value.
  4. IFACE_IN="venet0"

重启 apf:

  1. apf -r

提示说找不到 ip_tables 模块。

ip_tables

apf(4677): {glob} unable to load iptables module (ip_tables), aborting.

于是搜索:  ubuntu  apf  找到这篇文章

http://davidwinter.me/articles/2011/06/05/install-apf-on-ubuntu-11-04/

大致意思是说, 在ubuntu中, iptables默认被编译进了内核, 而不是以模块方式运行的。apf默认是使用模块方式调用iptables。 所以要修改apf的配置:

SET_MONOKERN="1"

然后重启 apf

然后看到一长串的日志:

看样子是成功了。

试一下, 果然80端口不能访问了。

只有22还在。

回到配置文件, 我们把端口开放:

  1. vi /etc/apf/conf.apf

找到:

  1. # Configure inbound (ingress) accepted services. This is an optional
  2. # feature; services and customized entries may be made directly to an ip's
  3. # virtual net file located in the vnet/ directory. Format is comma separated
  4. # and underscore separator for ranges.
  5. #
  6. # Example:
  7. # IG_TCP_CPORTS="21,22,25,53,80,443,110,143,6000_7000"
  8. # IG_UDP_CPORTS="20,21,53,123"
  9. # IG_ICMP_TYPES="3,5,11,0,30,8"
  10.  
  11. # Common inbound (ingress) TCP ports
  12. IG_TCP_CPORTS="22,80,443"

保存,重启:  apf –r

再访问以下,成功了。

最后, 关闭apf的调试模式,正式上线:

找到:

  1. # !!! Do not leave set to (1) !!!
  2. # When set to enabled; 5 minute cronjob is set to stop the firewall. Set
  3. # this off (0) when firewall is determined to be operating as desired.
  4. DEVEL_MODE="1"

改成 0:

  1. # !!! Do not leave set to (1) !!!
  2. # When set to enabled; 5 minute cronjob is set to stop the firewall. Set
  3. # this off (0) when firewall is determined to be operating as desired.
  4. DEVEL_MODE="0"

欢迎大家访问我的个人独立博客: http://blog.byneil.com

简单配置vps,防ddos攻击的更多相关文章

  1. 转:nginx防DDOS攻击的简单配置

    文章来自于: 近期由于工作需要,做了些防DDOS攻击的研究,发现nginx本身就有这方面的模块ngx_http_limit_req_module和ngx_http_limit_conn_module. ...

  2. iptables防DDOS攻击和CC攻击配置

    防范DDOS攻击脚本 #防止SYN攻击 轻量级预防 iptables -N syn-flood iptables -A INPUT -p tcp –syn -j syn-flood iptables ...

  3. 配置 Haproxy 防范 DDOS 攻击

    作为 load balancer, Happroxy 常常作为服务器的前端,向外界用户提供服务的入口,如果能在入口处处理安全相关问题,将极大简化后端的设计.事实上,Haproxy 不仅仅是一款开源出色 ...

  4. Azure上Linux VM防DDOS攻击:使用Apache mod_evasive

    部署在云端的虚拟机和web服务,很容易受到DoS护着DDoS的服务攻击,让一些新上线的业务苦不堪言,当然各个云服务提供商也有不同层面DDOS的防护,然而由于防护粒度,攻击复杂度的关系,未必可以满足你的 ...

  5. 《DNS攻击防范科普系列2》 -DNS服务器怎么防DDoS攻击

    在上个系列<你的DNS服务真的安全么?>里我们介绍了DNS服务器常见的攻击场景,看完后,你是否对ddos攻击忧心重重?本节我们来告诉你,怎么破局!! 首先回顾一下DDoS攻击的原理.DDo ...

  6. 防DDOS攻击SHELL脚本

    最近一段时间服务器频繁遭到DDOS攻击,目前只能通过封IP来源来暂时解决.IP不源变化多端,光靠手工来添加简直是恶梦,想了个方法,用SHELL来做. 比较简单,但很实用:) 以下内容根据作者原文进行适 ...

  7. iptables防DDOS攻击和CC攻击设置

    防范DDOS攻击脚本 #防止SYN攻击 轻量级预防 iptables -N syn-flood iptables -A INPUT -p tcp --syn -j syn-flood iptables ...

  8. 防火墙防DDOS攻击的简单设置

    #Ping洪水攻击(Ping of Death) iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s - ...

  9. 防DDOS攻击

    /ip firewall filter add chain=forward connection-state=new action=jump jump-target=block-ddos add ch ...

随机推荐

  1. Django 组件-分页器

    Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views here ...

  2. Bootstrap-CL:多媒体对象

    ylbtech-Bootstrap-CL:多媒体对象 1.返回顶部 1. Bootstrap 多媒体对象(Media Object) 本章我们将讲解 Bootstrap 中的多媒体对象(Media O ...

  3. mysql/oracle ip地址比较

    SELECT hub_gid FROM CPP_HUB_IPSEGMENT WHERE IpToLong(#{ip}) BETWEEN IpToLong(ip_begin) AND IpToLong( ...

  4. Selenium Webdriver——Chrome调试Xpath

    自己通过手写的Xpath要验证是否正确定位到元素,可以通过谷歌浏览器的Console功能(F12) 在console 输入:$x("") 定位去哪儿网的出发输入框: <inp ...

  5. c#,读取二维码

    /// <summary>/// 读取二维码/// 读取失败,返回空字符串/// </summary>/// <param name="filename&quo ...

  6. WMI获取计算机信息

    On Error Resume NextstrComputer = "."strInfo = ""Set objWMIService = GetObject(& ...

  7. Kafka学习总结

    Kafka学习总结 参考资料: 1.http://kafka.apachecn.org/, kafka官方文档 2.https://www.cnblogs.com/likehua/p/3999538. ...

  8. Bourne Shell:控制语句、条件判断、文本处理、常用命令

    条件判断是一个程序获得智能的基础,而Bourne Shell脚本则通过命令 [ 来模拟大多数编程语言中的条件表达式. shell中支持的控制结构有: (1) if then else fi (2) f ...

  9. 把二叉搜索树转化成更大的树 · Convert BST to Greater Tree

    [抄题]: 给定二叉搜索树(BST),将其转换为更大的树,使原始BST上每个节点的值都更改为在原始树中大于等于该节点值的节点值之和(包括该节点). Given a binary search Tree ...

  10. Implement Trie (Prefix Tree)实现字典树

    [抄题]: Implement a trie with insert, search, and startsWith methods. Note:You may assume that all inp ...