zoukankan      html  css  js  c++  java
  • 使用ExaBGP发送BGP路由信息和清洗DDoS流量

    转载

    https://bg6cq.github.io/ITTS/security/bgp/exabgp/

    一、BGP介绍

    BGP是路由协议,通过BGP协议可以方便的控制路由器上的路由表,运维中最常用是用于引流或黑洞路由。

    把某个IP的next-hop设置为特定的IP,称为引流。用于黑洞路由时, 通常是把IP的next-hop设置为192.0.2.1,并通过ip route 192.0.2.1/32 null0 丢包。

    二、ExaBGP简介

    ExaBGP 是一个python开发的BGP客户端,被称为BGP的瑞士军刀, 可以与路由器建立BGP连接,发送和接收BGP更新消息。

    其他程序可以方便的利用简单的文本协议与ExaBGP通信,发送和接收BGP更新消息。

    本文给出一个简单例子,使用简单文本发送BGP更新消息。

    需要说明的是,exabgp 4.0版本的配置文件有较大变化,本文使用的是3.4版本。

    三、ExaBGP安装

    不少系统发行版有ExaBGP,可以直接安装。

    也可以从github下载,方法是:

    cd /usr/src/
    git clone https://github.com/Exa-Networks/exabgp.git
    cd exabgp
    git checkout 3.4
    ./bin/healthcheck --help
    

    healthcheck能运行说明程序安装正常。对于CentOS系统,可能需要安装以下软件包:

    yum install python-argparse python-ipaddr socat
    
    

    四、ExaBGP配置文件

    假定本机IP是210.45.230.89,ASN 65500;路由器是210.45.230.90,ASN 24362

    vi /etc/exabgp.conf

    neighbor 210.45.230.90 {
            local-address 210.45.230.89;
            peer-as 24362;
            local-as 65500;
            router-id 210.45.230.89;
            process service-dynamic {
                    run /usr/bin/socat stdout pipe:/var/run/exabgp.cmd;
            }
    }
    

    五、路由器配置片段

    为了减少风险,仅仅接受ExaBGP发来的/32路由,并且最多接受10条路由。以下为华为/H3C配置:

    ip ip-prefix only32 index 10 permit 0.0.0.0 0 greater-equal 32 less-equal 32
    router bgp 24362
     peer 210.45.230.89 as-number 65500
     ipv4-family unicast
      peer 210.45.230.89 enable
      peer 210.45.230.89 ip-prefix only32 import
      peer 210.45.230.89 route-limit 10 
    ip route-static 192.0.2.1 32 null0
    

    六、ExaBGP启动

    /var/run/exabgp.cmd是其他程序与ExaBGP通信的管道文件。

    如果是调试,可以使用以下命令启动

    env exabgp.daemon.user=root /usr/src/exabgp/sbin/exabgp /etc/exabgp.conf
    

    启动后,程序的输出在屏幕上,从路由器上看到BGP连接建立说明正常。

    调试完毕,可以使用如下命令启动:

    env exabgp.daemon.user=root exabgp.daemon.daemonize=true exabgp.daemon.pid=/var/run/exabgp.pid 
            exabgp.log.destination=/var/log/exabgp.log /usr/src/exabgp/sbin/exabgp /etc/exabgp.conf
    

    /var/log/exabgp.log记录有日志输出。

    七、增加删除路由

    向/var/run/exabgp.cmd 管道写文本就可以控制ExaBGP发送BGP消息,简单的例子如下:

    发送BGP路由:

    echo announce route 202.38.95.255/32 next-hop 192.0.2.1 > /var/run/exabgp.cmd
    echo announce route 202.38.95.0/32 next-hop 210.45.230.89 > /var/run/exabgp.cmd
    

    撤回BGP路由:

    echo withdraw route 202.38.95.255/32 > /var/run/exabgp.cmd
    

    执行以上命令后,ExaBGP有信息输出,登录路由器执行

    display bgp routing-table pee 210.45.230.89 received-routes
    

    可以看到发来的路由信息。

    八、一个简单的WEB界面

    请参考 https://github.com/bg6cq/blackip-exabgp

    使用mysql数据库存放信息,blackip-exabgp.php程序不停的轮询数据库,如果有新的路由需要发送或旧的路由需要撤回,会与 ExaBGP 通信。

    九、使用ExaBGP发送路由处理DDoS攻击

    我们使用ExaBGP给上游路由器发送受DDoS攻击的IP,把DDoS流量引流到Linux服务器,Linux服务器清洗流量后注入网络。

    DDoS引流

    请参考 http://blackholeah.ustc.edu.cn/admin/intro.php 。

  • 相关阅读:
    《增长黑客》阅读内容摘要(前三章)
    ios的安全机制
    R语言  RStudio快捷键总结
    R in action 笔记(第二部分)
    R in action 笔记(第一部分)
    R统计函数-开源
    R语言函数索引-11月
    mysql join的优化实例
    android异步消息处理机制
    android ListView与EditText共存错位
  • 原文地址:https://www.cnblogs.com/dream397/p/13287835.html
Copyright © 2011-2022 走看看