那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

艾體寶干貨 IOTA流量分析秘籍第三招:檢測黑名單上的IP地址

laraxu ? 來源:laraxu ? 作者:laraxu ? 2024-07-16 11:48 ? 次閱讀

艾體寶干貨 | IOTA流量分析秘籍第三招:檢測黑名單上的IP地址

IOTA 設備提供 RESTful API,允許直接訪問存儲在設備上的數據。這對于集成到各種場景中非常有用。在本例中,可以過濾當前捕獲內容中的黑名單 IP。用例可能是分析某些內部 IP 是否未傳播到特定訪問級別之外,或者某些設備是否從不應訪問的區域進行訪問。

IOTA簡介

IOTA 是一款功能強大的網絡捕獲和分析解決方案,適用于邊緣和核心網絡。IOTA 系列包括便攜式 EDGE 型號、高速 CORE 型號和 IOTA CM 集中設備管理系統。IOTA 解決方案可為分支機構、中小企業和核心網絡(如數據中心)提供快速高效的網絡分析和故障排除功能。

IOTA 設備提供 RESTful API,允許直接訪問存儲在設備上的數據。這對于集成到各種場景中非常有用。在本例中,可以過濾當前捕獲內容中的黑名單 IP。用例可能是分析某些內部 IP 是否未傳播到特定訪問級別之外,或者某些設備是否從不應訪問的區域進行訪問。

一、前提條件

  • Python 編程基礎知識。
  • 從 Profitap 訪問 IOTA 設備。

二、設置 IOTA 設備

  1. 連接 IOTA 設備
  • 將 IOTA 設備連接到要監控的網段。
  • 確定正確的網段至關重要。通過目視檢查 IOTA 設備上的流量,確保在捕獲期間使用正確的網段。
  1. 訪問 IOTA 網絡界面
  • 打開網絡瀏覽器并輸入 IOTA 設備的 IP 地址。
    • 例如:https://(用 IOTA 設備的實際 IP 地址替換)。
  • 使用正確的憑證登錄。該腳本使用的用戶名/密碼組合應允許它查看必要的信息。
  1. 配置捕獲設置
  • 設置用于捕獲數據包的網絡接口。
    • 從設備的 Web 界面選擇要監控的接口。
  • 根據需要配置過濾器,以關注特定流量類型。
    • 您可以根據需要設置過濾器,只捕獲特定類型的流量,如 HTTP 或 FTP。

三、使用 IOTA 數據庫查詢引擎

查詢引擎允許任何用戶以機器可讀的方式與 IOTA 設備交互,以查詢元數據數據庫。用戶只需輸入用戶名/密碼,即可通過 RESTful API 訪問數據庫。
image.png

為確保敏感信息不被傳播,以及設備上的任何信息都不會被用戶篡改,建議創建一個新的特殊用戶。在本例中,創建了一個用戶名為 “apitest ”的用戶。請注意,該用戶已作為 “查看器 ”自動添加到組織中。不需要配置任何其他功能,而且該角色只允許只讀訪問,可以防止任何誤傳。
image.png

四、安全考慮

這里使用的解決方案是為使用腳本創建一個專用的用戶/密碼組合。由于建議保護 IOTA 的直接訪問不受任何外部干擾,并使用 HTTPS 連接,因此這樣做沒有問題。但請注意,良好的做法是確保該用戶/密碼組合不在任何其他情況下使用,并且該用戶僅具有查看器角色(新用戶默認具有該角色)。

五、檢測黑名單 IP 的 Python 腳本

import requests
import re
import time
import urllib.parse
import json
import argparse
from urllib3.exceptions import InsecureRequestWarning
 
def main():
    # CLI options
    parser = argparse.ArgumentParser(description='Compare IP blacklist files against IOTA metadata. Blacklist files must contain a list of single IPv4/IPv6 addresses or IP subnet in CIDR notation.')
    required_args = parser.add_argument_group('required')
 
    required_args.add_argument('-d', '--device_ip', help='Device IP address')
    required_args.add_argument('-i', '--infile', nargs='+', help = 'Blacklist file(s)')
    parser.add_argument('-u', '--device_username', default='admin', help='Device IP username (default: admin)')
    parser.add_argument('-p', '--device_password', default='admin', help='Device IP password (default: admin)')
    parser.add_argument('-l', '--query_time_window_s', type=int, default=600, help='Number of seconds from the current time to query IOTA metadata (default: 600)')
 
    args = parser.parse_args()
    if args.device_ip:
        iota_ip_address = args.device_ip
    if args.device_username:
        iota_username = args.device_username
    if args.device_password:
        iota_password = args.device_password
    if args.query_time_window_s:
        query_time_window_s = args.query_time_window_s
    if args.infile:
        blacklist_files = args.infile
 
    query_time_window_end = int(time.time())
    query_time_window_start = query_time_window_end - query_time_window_s
 
    results = {}
 
    session = requests.Session()
    session.auth = (iota_username, iota_password)
 
    # Suppress warnings from urllib3
    requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
 
    # Open blacklist files, iterate over them
    for blacklist_file in blacklist_files:
        count_fail = 0
        print(f' - {blacklist_file}')
        with open(blacklist_file) as f:
            for line in f:
 
                # Skip comments or empty lines
                if re.match(r"^[;#s]", line):
                    continue
 
                # Current IP address or subnet
                ip = line.split()[0]
                print(f'   - {ip:45}', end='')
 
                # Handle CIDR subnet query
                if re.match(r"^(?:(?:(?:[0-9]{1,3}.){3}[0-9]{1,3}/[0-9]{1,2})|(?:[0-9a-fA-F:]{2,39}/[0-9]{1,2}))$", ip):
                    query = urllib.parse.quote(f"SELECT COUNT(DISTINCT FLOW_ID) AS matching_flows FROM flows.base WHERE (isIPAddressInRange(IP_SRC, '{ip}') OR isIPAddressInRange(IP_DST, '{ip}')) AND DATE_PKT_MS_FIRST >= toDateTime64({query_time_window_start}, 3) AND DATE_PKT_MS_FIRST <= toDateTime64({query_time_window_end}, 3) FORMAT JSON", safe='()*')
                    response = session.get('https://'+iota_ip_address+'/api/datasources/proxy/3/?query='+query, verify=False)
                    matching_flows = json.loads(response.content)['data'][0]['matching_flows']
 
                    if matching_flows == "0":
                        print('Ok')
                    else:
                        count_fail += 1
                        print(f'Match (flows: {matching_flows})')
 
                # Handle single IP address query
                elif re.match(r"^(?:(?:(?:[0-9]{1,3}.){3}[0-9]{1,3})|(?:[0-9a-fA-F:]{2,39}))$", ip):
                    query = urllib.parse.quote(f"SELECT COUNT(DISTINCT FLOW_ID) AS matching_flows FROM flows.base WHERE (IP_SRC = '{ip}' OR IP_DST = '{ip}') AND DATE_PKT_MS_FIRST >= toDateTime64({query_time_window_start}, 3) AND DATE_PKT_MS_FIRST <= toDateTime64({query_time_window_end}, 3) FORMAT JSON", safe='()*')
                    response = session.get('https://'+iota_ip_address+'/api/datasources/proxy/3/?query='+query, verify=False)
                    matching_flows = json.loads(response.content)['data'][0]['matching_flows']
 
                    if matching_flows == "0":
                        print('Ok')
                    else:
                        count_fail += 1
                        print(f'Match (flows: {matching_flows})')
 
                # Some unknown case
                else:
                    print('Unhandled case')
 
        # Record results after completing file
        results[blacklist_file] = count_fail
 
    # Print results
    print('nResultsn===')
    for file in results:
        print(f' - {file:47}{str(results[file])} matches')
 
if __name__ == '__main__':
    main()

六、腳本分步說明

1.導入必要的庫

import requests
import re
import time
import urllib.parse
import json
import argparse
from urllib3.exceptions import InsecureRequestWarning

2.設置配置

# CLI options
    parser = argparse.ArgumentParser(description='Compare IP blacklist files against IOTA metadata. Blacklist files must contain a list of single IPv4/IPv6 addresses or IP subnet in CIDR notation.')
    required_args = parser.add_argument_group('required')
 
    required_args.add_argument('-d', '--device_ip', help='Device IP address')
    required_args.add_argument('-i', '--infile', nargs='+', help = 'Blacklist file(s)')
    parser.add_argument('-u', '--device_username', default='apitest', help='Device IP username (default: apitest)')
    parser.add_argument('-p', '--device_password', default='apitest', help='Device IP password (default: apitest)')
    parser.add_argument('-l', '--query_time_window_s', type=int, default=600, help='Number of seconds from the current time to query IOTA metadata (default: 600)')
  • -d / -device_ip
    • IOTA 設備的 IP。
  • -i / -infile
    • 包含要查找的 IP 地址的文本文件。也可以提供地址范圍的 CIDR 子網查詢。文件可能包含以 ; 或 # 為前綴的注釋。任何空行或以空格開頭的行都將被省略。通過多次提供此參數,可以向腳本提交多個輸入文件。
  • -U / -device_username
    • 上一步中定義的用戶名。
  • -p / -device_password
    • 上述步驟中定義的密碼。
  • -l / -query_time_window_s
    • 查詢應在過去多少時間內進行。默認值為 600 秒,相當于 10 分鐘。

輸入文件:

以輸入文件為例,它將搜索特定子網以及內部 DNS 服務器的所有 IP 地址。

# IP Address of DNS server
192.168.1.250

# Host range for internal testing
10.40.0.0/24

3.檢測黑名單 IP 的主邏輯

主邏輯打開黑名單文件,逐步進行解析,并查詢內部數據庫,進行相應的子網查詢或直接 IP 地址查詢。

query = urllib.parse.quote(f"SELECT COUNT(DISTINCT FLOW_ID) AS matching_flows FROM flows.base WHERE (isIPAddressInRange(IP_SRC, '{ip}') OR isIPAddressInRange(IP_DST, '{ip}')) AND DATE_PKT_MS_FIRST >= toDateTime64({query_time_window_start}, 3) AND DATE_PKT_MS_FIRST <= toDateTime64({query_time_window_end}, 3) FORMAT JSON", safe='()*')
                    response = session.get('https://'+iota_ip_address+'/api/datasources/proxy/3/?query='+query, verify=False)
                    matching_flows = json.loads(response.content)['data'][0]['matching_flows']

首先,設置查詢。在本例中,我們只需要查詢找到的條目的數量,這就是我們執行 COUNT 操作的原因。數據庫以 SQL 格式進行查詢。

創建查詢后,將建立一個會話,該會話將使用 HTTP GET 操作來查詢信息。查詢結果以 JSON 數據形式顯示,目前正在讀取第一個條目。

對于找到的每個 IP 地址,將打印匹配條目的數量,對于每個文件,將打印匹配條目的總數。

七、運行腳本

建議在 Python 環境中運行腳本。可以使用以下命令來實現:

python3 -m venv ./Development/iota
source ./Development/iota/bin/activate
python3 -m pip install argparse requests

這將創建一個 Python3 venv 環境(更多信息請參見此處),并安裝默認環境中不存在的所需庫。
image.png

然后,假設 Python 腳本和 infile 文件都在當前目錄下,下面的命令將運行該腳本:
image.png

在這種情況下,IOTA 的定位是在出站廣域網連接上進行捕獲。在最后 10 分鐘內,內部 DNS 服務器沒有進行任何出站 DNS 查詢,但內部測試網絡通過廣域網連接發送了 4 次數據。

在本例中,腳本被用作白名單測試,但也可輕松配置為黑名單測試。

結論

通過本指南,您可以有效地利用 IOTA 設備及其 REST API 來監控網絡流量,并使用 Python 檢測黑名單 IP 地址。這種方法為在自動化監控環境中維護網絡安全提供了強大的工具。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • API
    API
    +關注

    關注

    2

    文章

    1510

    瀏覽量

    62391
  • 網絡安全
    +關注

    關注

    10

    文章

    3193

    瀏覽量

    60199
  • Iota
    +關注

    關注

    0

    文章

    29

    瀏覽量

    8430
收藏 人收藏

    評論

    相關推薦

    華納云:服務器設置黑名單名單方法

    黑名單是一種包含被禁止訪問或使用的IP地址、域名、電子郵件地址或其他標識符的列表。任何在黑名單
    的頭像 發表于 12-19 14:35 ?245次閱讀

    高效、安全、智能:探索網絡管理方案

    網絡可觀測平臺是一款專為現代網絡挑戰設計的解決方案,提供實時的網絡流量分析和深度數據洞察。無論是網絡性能優化、故障排除還是安全威脅檢測
    的頭像 發表于 12-16 17:36 ?162次閱讀
    高效、安全、智能:探索<b class='flag-5'>艾</b><b class='flag-5'>體</b><b class='flag-5'>寶</b>網絡管理方案

    干貨 如何使用 IOTA?解決網絡電話(VoIP)質量問題

    分析降低的 VoIP 質量,涉及呼叫設置錯誤和語音質量錯誤等內容,從接口配置到圖表參數分析,讓您更加清晰的了解IOTA如何分析VoIP 質量問題。
    的頭像 發表于 10-29 09:18 ?241次閱讀
    <b class='flag-5'>艾</b><b class='flag-5'>體</b><b class='flag-5'>寶</b><b class='flag-5'>干貨</b> 如何使用 <b class='flag-5'>IOTA</b>?解決網絡電話(VoIP)質量問題

    干貨 如何使用IOTA進行遠程流量數據采集分析

    本文詳細介紹了如何使用IOTA設備進行遠程流量數據采集與分析,特別適用于分布式網絡、多站點
    的頭像 發表于 09-02 17:20 ?322次閱讀
    <b class='flag-5'>艾</b><b class='flag-5'>體</b><b class='flag-5'>寶</b><b class='flag-5'>干貨</b> 如何使用<b class='flag-5'>IOTA</b>進行遠程<b class='flag-5'>流量</b>數據采集<b class='flag-5'>分析</b>

    中國激光雷達巨頭被移出制裁黑名單

    據英國《金融時報》(Financial Times)發布報道,稱從知情人士獲悉: 美國國防部已決定將禾賽科技(Hesai)從中國軍工企業黑名單中除名,因為五角大樓認為這家全球最大的電動汽車激光雷達
    的頭像 發表于 08-14 19:17 ?1427次閱讀
    中國激光雷達巨頭被移出制裁<b class='flag-5'>黑名單</b>

    傳禾賽科技將被美國國防部移出黑名單

    近日,據多位知情人士透露,全球最大的智能汽車激光雷達制造商之一——禾賽科技,將從美國國防部的黑名單中正式除名。這一決定不僅為禾賽科技的海外業務擴展掃清了障礙,也彰顯了中國大陸在電動汽車(EV)及相關技術領域的強勁實力。
    的頭像 發表于 08-14 15:47 ?501次閱讀

    美國將一中國激光雷達企業移出黑名單 禾賽科技暴漲

    據外媒報道,美國五角大樓決定將激光雷達制造商禾賽科技從中國軍方關聯企業“黑名單”中移除,而受此利好消息的影響,在納斯達克上市的禾賽科技股價暴漲,在美東時間08月13日16:00:00收盤,禾賽科技股
    的頭像 發表于 08-14 11:22 ?1684次閱讀
    美國將一中國激光雷達企業移出<b class='flag-5'>黑名單</b> 禾賽科技暴漲

    案例 IOTA在研發智慧醫療設備方面的應用實例

    本文將探討Profitap IOTA如何監控實驗室的網絡環境,有哪些功能較為實用,有哪些關鍵應用場景等。
    的頭像 發表于 08-12 14:25 ?330次閱讀
    <b class='flag-5'>艾</b><b class='flag-5'>體</b><b class='flag-5'>寶</b>案例  <b class='flag-5'>IOTA</b>在研發智慧醫療設備方面的應用實例

    IP黑名單的建立、應用與管理

    ?為什么企業都會應用黑名單,被列入黑名單后在網絡總是被阻呢?今天我們來探討ip黑名單的建立、應用與管理方法。
    的頭像 發表于 07-15 11:24 ?2453次閱讀

    干貨 IOTA流量分析秘籍第二:IDS或終端保護系統分析

    在當今數字化世界中,安全威脅日益增多,而入侵檢測系統(IDS)和終端保護系統成為保護網絡安全的重要組成部分。但要真正發揮它們的作用,需要對從它們收集到的安全警報進行仔細分析。本文將探討如何有效地分析來自IDS或終端保護的安全警報
    的頭像 發表于 07-05 09:58 ?329次閱讀
    <b class='flag-5'>艾</b><b class='flag-5'>體</b><b class='flag-5'>寶</b><b class='flag-5'>干貨</b> <b class='flag-5'>IOTA</b><b class='flag-5'>流量分析</b><b class='flag-5'>秘籍</b>第二<b class='flag-5'>招</b>:IDS或終端保護系統<b class='flag-5'>分析</b>

    干貨 IOTA流量分析秘籍第一:網絡基線管理

    網絡基線管理是一項關鍵的網絡安全實踐,它有助于識別網絡中的異?;顒硬⒓皶r采取措施。本文將探討如何利用IOTA這一強大的工具來捕獲和分析網絡流量,以便更有效地了解網絡中的流量模式,并提供
    的頭像 發表于 07-02 14:53 ?417次閱讀
    <b class='flag-5'>艾</b><b class='flag-5'>體</b><b class='flag-5'>寶</b><b class='flag-5'>干貨</b>  <b class='flag-5'>IOTA</b><b class='flag-5'>流量分析</b><b class='flag-5'>秘籍</b>第一<b class='flag-5'>招</b>:網絡基線管理

    名單是什么意思

    名單是指一系列被認可的特殊入口,可以控制網絡安全和信息安全,被認可的文件、網站、IP地址等才能夠訪問,而被禁止訪 問的文件網站、IP地址
    發表于 05-31 17:01

    干貨 | 教程:使用ntopng和nProbe監控網絡流量

    本文是關于使用 ntopng 和 nProbe 監控網絡流量的教程。文章詳細介紹了如何配置和使用這兩個工具來監控和分析網絡流量。內容涉及硬件和軟件的安裝、配置端口鏡像、靜態IP
    的頭像 發表于 05-29 15:35 ?976次閱讀
    <b class='flag-5'>艾</b><b class='flag-5'>體</b><b class='flag-5'>寶</b><b class='flag-5'>干貨</b> | 教程:使用ntopng和nProbe監控網絡<b class='flag-5'>流量</b>

    產品 | 網絡流量分析儀樣機已備妥,歡迎試用

    在當今數字化時代,網絡的可靠性和安全性是企業成功的關鍵。的 ITT-Allegro 500 和 ITT-Allegro 1000 是專為網絡監控和故障排除而設計的先進工具。無論您是運營商、企業
    的頭像 發表于 05-06 15:00 ?442次閱讀
    <b class='flag-5'>艾</b><b class='flag-5'>體</b><b class='flag-5'>寶</b>產品 | 網絡<b class='flag-5'>流量分析</b>儀樣機已備妥,歡迎試用

    產品 | Allegro網絡流量分析

    產品 | Allegro網絡流量分析
    的頭像 發表于 04-29 08:04 ?534次閱讀
    <b class='flag-5'>艾</b><b class='flag-5'>體</b><b class='flag-5'>寶</b>產品 | Allegro網絡<b class='flag-5'>流量分析</b>儀
    最好的百家乐官网论坛| 百家乐赌博筹码| 百家乐官网tt娱乐平台| 百家乐官网强弱走势图| 澳门百家乐国际| 足球博彩网站| 百家乐官网赌博机怎么玩| 爱赢百家乐开户送现金| 棋牌平台| 百家乐官网怎么才能包赢| 大发888有银钱的吗| 赌场百家乐官网投注公式| 缅甸百家乐博彩| 百家乐官网是咋玩法| 百家乐是哪个国家| 网络棋牌室| 狮威百家乐官网娱乐平台| 大发888棋牌乐城下载| 百家乐官网电子路单下载| 威尼斯人娱乐场网站| 7人百家乐官网桌子| 百家乐五湖四海娱乐平台| 民权县| 百家乐管理启发书| 网上赌博| 百家乐哪条路好| 娱乐城开户送现金| 百家乐娱乐城怎么样| 百家乐官网类游戏平台| 百家乐平注常赢玩法技巧| 百家乐官网玩法皇冠现金网| 百家乐专家赢钱打法| 澄迈县| 百家乐筹码托盘| 百家乐官网英皇娱乐城| 洛克百家乐的玩法技巧和规则 | 百家乐折桌子| 平台百家乐官网的区别| 致胜百家乐的玩法技巧和规则 | 云顶娱乐| 百家乐官网家|