- 保護區域內的網路(Switch B 底下的網域)
- 可自動化的新增Flow 達到不需要人員控管
- 依照Snort 設定的偵測 可偵測不同類型的攻擊
- Snort 2.9.11 建立文件
- OpenDaylight
- Open vSwitch
- Socket使用
- HttpRequest (POST/GET)
- 命令行參數
- OpenDayligth API 使用方式
- 達到流量超過設定值時,自動下達Flow 給 Switch
- 成功阻斷HostB的DDos攻擊
- Snort 開啟 SocketServcer 等待被連線
- Controller(Client) 連線到 Snort (Server)
- HostB 開始 DDos hostB
- Snort 偵測到 流量超過設定值
- Server 傳送要求給 Clinet
- Client 接收到要求 到 Snort Database 抓取 alert source ip
- Controller 下發阻擋 source ip 的 flow 給 Switch A , Switch B
- HostB 無法發送任何封包通過 Switch A
pip install pymysql
pip install requests
pip install socket
pip install watchdog
- pymysql -> connect to mysql
- requests -> connect to OpenDaylight
- socket -> connect Snort to controller
- watchdog -> Listen log folder
> python __main__.py -r
- 於Controller上,會去連接Snort主機上的 Snort_reptile.py
等待 Snort_reptile 傳送更新 FlowTable的要求 - 如果接收到要求時 Controller 會去查詢 MySQL 產生 alert 的資料表
取得所有 alert 的 source ip - POST source ip 到 OpenDaylight
OpenDaylight會再將要求傳送到指定OpenVSwtich的FlowTable(指定全部連上Controller的Swicth)
> python __main__.py -a XXX.XXX.XXX.XXX
- 直接手動新增 flow , ip為 XXX.XXX.XXX.XXX 到 OpenDaylight
- OpenDaylight 會再透過自己的通訊協定給OpenVSwitch
> python __main__.py -d XXX.XXX.XXX.XXX
- 直接手動刪除 flow , ip為 XXX.XXX.XXX.XXX 到 OpenDaylight
- OpenDaylight 會再透過自己的通訊協定給OpenVSwitch
> python __main__.py -D
- POST FlowTable 的要求給 OpenDaylight
- OpenDaylight 會再透過自己的通訊協定給OpenVSwitch
> python __main__.py -D
- GET FlowTable 的要求給 OpenDaylight
- 顯示所有在 OpenVswithc 上的 Flow 有哪些
主要用於監聽Snort接收到alert時產生出.log的資料夾
如果資料夾有更動了會傳送給連接Snort的Client