使用开放 RSS 源构建网络威胁情报仪表板

admin 2024年9月29日09:28:16评论26 views字数 8094阅读26分58秒阅读模式

使用开放 RSS 源构建网络威胁情报仪表板

使用开放 RSS 源构建网络威胁情报仪表板

网络威胁情报仪表板

介绍:

在当今快速发展的网络威胁形势下,保持知情至关重要。威胁情报源在让安全专业人员了解最新发展方面发挥着关键作用。在本文中,我将向您展示如何使用开放 RSS 源构建实时网络威胁情报仪表板。您将汇总来自 30 个顶级网络安全来源的内容,并将其呈现在一个时尚的深色主题界面中。

您将学到的内容:

  • 如何利用免费 RSS 源获取威胁情报。

  • 如何仅使用 HTML、CSS 和 JavaScript 构建响应式、自动更新的仪表板。

  • 如何扩展项目以满足您的特定安全需求。

为什么要使用 RSS 源来获取威胁情报?

RSS(简易信息聚合)源是一种实时聚合来自多个来源内容的绝佳方式。谈到威胁情报,有许多值得信赖的来源提供定期更新的源,涵盖新兴威胁、漏洞和网络安全新闻。

构建仪表板的分步指南:

1.设置项目:

我们将首先创建一个简单的 HTML 文件。此文件将包含为 SEO 和归因提供附加信息的元标记。例如:

html
<meta name="author" content="Gerard King">
<meta name="description" content="Cybersecurity Threat Intelligence Dashboard aggregating feeds from 30 sources, built for real-time monitoring and analysis.">
<meta name="website" content="www.gerardking.dev">
<meta name="donate" content="Ethereum Address: 0xc637a25e49bb3814f26952fbe81ff18cf81aa1da">

这些标签有助于识别作者、项目描述,甚至是想要支持该项目的人的捐赠地址。

2. 聚合 RSS 源:

仪表板将从 30 个顶级网络安全源中提取内容,包括 US-CERT、ThreatPost、Bleeping Computer 等。通过利用免费代理服务,我们可以将 RSS 转换为 JSON,并使用 JavaScript 动态获取内容。

javascript
const rssFeeds = [
     “https://www.us-cert.gov/ncas/alerts.xml”,
     “https://www.bleepingcomputer.com/feed/”,
    ... “https://securityaffairs.co/wordpress/feed”
]; const proxyUrl = “https://api.rss2json.com/v1/api.json?rss_url=" ;

3. 显示信息源:

每个信息源都显示在深色主题界面中,设计简洁,易于浏览。我们使用 JavaScript 循环遍历信息源,每 10 分钟动态更新一次内容。

javascript
async function fetchFeeds() {
    for (let feedUrl of rssFeeds) {
        const response = await fetch(proxyUrl + encodeURIComponent(feedUrl));
        const data = await response.json();
        // Display feed items
    }
}

4.增强用户体验:

为了提高可读性并创建更具吸引力的界面,该设计采用了深色主题,并配有精心放置的标题、颜色和布局技术。

css
body {
    background-color: #1c1c1c;
    color: #e0e0e0;
    font-family: Arial, sans-serif;
}

5.扩展仪表板:

该项目是一个起点。您可以通过添加更多源、集成 AI 驱动的分析,甚至构建后端来存储和分析历史数据,进一步定制它。

用例和应用:

此仪表板非常适合 SOC 团队、威胁猎手,甚至是需要了解最新网络安全新闻的个人安全研究人员。它体积小巧,无需任何设置,并且可以在任何现代浏览器中运行。

结论:

对于网络安全领域的任何人来说,构建网络威胁情报仪表板都是一个实用且有益的项目。它不仅能让您随时了解情况,还能为更复杂的威胁情报工具奠定基础。

按照本指南操作,您将拥有一个功能齐全的仪表板,从前 30 个网络安全来源中提取内容 — 所有这些都借助 RSS 源和一些巧妙的 JavaScript 实现。这个项目是展示您的技能、随时了解最新信息并为信息安全社区做出贡献的绝佳方式。

网络安全威胁情报仪表板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Cybersecurity Threat Intelligence Dashboard</title>
    <meta name="author" content="Gerard King">
    <meta name="description" content="Cybersecurity Threat Intelligence Dashboard aggregating feeds from 30 sources, built for real-time monitoring and analysis.">
    <meta name="keywords" content="Cybersecurity, Threat Intelligence, RSS Feeds, Execution Policy, PowerShell, Gerard King, Red Team, Security">
    <meta name="theme-color" content="#1c1c1c">
    <meta name="website" content="www.gerardking.dev">
    <meta name="donate" content="Ethereum Address: 0xc637a25e49bb3814f26952fbe81ff18cf81aa1da">
    <meta name="date" content="2024-08-02">
    <meta name="tags" content="Antihero, ExecutionPolicy, Troubleshooting, Testing, Development, PowerShell, Gerard King">
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
            background-color: #1c1c1c;
            color: #e0e0e0;
            display: flex;
            flex-direction: column;
            align-items: center;
        }
        header {
            background-color: #444;
            padding: 20px;
            text-align: center;
            width: 100%;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
        }
        header h1 {
            margin: 0;
            font-size: 2em;
            color: #ff3e3e;
        }
        .feed-container {
            margin-top: 20px;
            width: 90%;
            max-width: 1200px;
            background-color: #2c2c2c;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
            overflow-y: auto;
            max-height: 80vh;
        }
        .feed-item {
            margin-bottom: 20px;
            padding-bottom: 15px;
            border-bottom: 1px solid #555;
            text-align: left;
        }
        .feed-item h2 {
            margin: 0;
            font-size: 1.5em;
            color: #ff6f61;
        }
        .feed-item p {
            margin: 10px 0;
            font-size: 1em;
            color: #ccc;
        }
        .feed-item a {
            color: #61dafb;
            text-decoration: none;
            font-weight: bold;
        }
        .feed-item a:hover {
            text-decoration: underline;
        }
        footer {
            margin-top: 30px;
            padding: 10px;
            font-size: 0.9em;
            color: #777;
        }
    </style>
</head>
<body>
    <header>
        <h1>Cybersecurity Threat Intelligence Dashboard</h1>
    </header>
    <div class="feed-container" id="feedContainer">
        <!-- RSS feed content will be dynamically loaded here -->
    </div>
    <footer>
        &copy; 2024 Gerard King | Aggregating 30 Cyber Threat Feeds
    </footer>

    <script>
        const feedContainer = document.getElementById('feedContainer');
        const rssFeeds = [
            "https://www.us-cert.gov/ncas/alerts.xml",
            "https://www.bleepingcomputer.com/feed/",
            "https://threatpost.com/feed/",
            "https://www.darkreading.com/rss.xml",
            "https://www.sans.org/webcasts/rss",
            "https://krebsonsecurity.com/feed/",
            "https://cyware.com/rss-feed/",
            "https://www.securityweek.com/rss",
            "https://feeds.feedburner.com/TheHackersNews",
            "https://www.schneier.com/blog/atom.xml",
            "https://isc.sans.edu/rssfeed.xml",
            "https://www.fireeye.com/blog/threat-research/_jcr_content.feed",
            "https://blogs.cisco.com/security/feed",
            "https://www.mcafee.com/blogs/feed/",
            "https://nakedsecurity.sophos.com/feed/",
            "https://www.tripwire.com/state-of-security/feed/",
            "https://research.checkpoint.com/feed/",
            "https://www.zdnet.com/topic/security/rss.xml",
            "https://www.infosecurity-magazine.com/rss/news/",
            "https://cybersecurity.att.com/site/blog-all-rss",
            "https://www.cybereason.com/blog/rss.xml",
            "https://blog.qualys.com/feed/",
            "https://www.tenable.com/blog/feed",
            "https://www.blackhillsinfosec.com/feed/",
            "https://rss.packetstormsecurity.com/files/",
            "https://unit42.paloaltonetworks.com/feed/",
            "https://www.arbornetworks.com/blog/asert/feed/",
            "https://www.trendmicro.com/rss/index.xml",
            "https://www.crowdstrike.com/blog/feed/",
            "https://securityaffairs.co/wordpress/feed"
        ];
        const proxyUrl = "https://api.rss2json.com/v1/api.json?rss_url=";

        async function fetchFeeds() {
            feedContainer.innerHTML = ''; // Clear container before loading new content
            for (let feedUrl of rssFeeds) {
                try {
                    const response = await fetch(proxyUrl + encodeURIComponent(feedUrl));
                    const data = await response.json();

                    if (data.items) {
                        data.items.slice(0, 3).forEach(feed => { // Limit to the 3 latest items per feed
                            const feedItem = document.createElement('div');
                            feedItem.className = 'feed-item';

                            const title = document.createElement('h2');
                            title.textContent = feed.title;

                            const description = document.createElement('p');
                            description.innerHTML = feed.description;

                            const link = document.createElement('a');
                            link.href = feed.link;
                            link.textContent = 'Read more';
                            link.target = '_blank';

                            feedItem.appendChild(title);
                            feedItem.appendChild(description);
                            feedItem.appendChild(link);
                            feedContainer.appendChild(feedItem);
                        });
                    }
                } catch (error) {
                    console.error('Error fetching feed:', error);
                }
            }
        }

        // Load feeds on page load
        fetchFeeds();

        // Refresh feeds every 10 minutes (600,000 milliseconds)
        setInterval(fetchFeeds, 600000);
    </script>
</body>
</html>

原文始发于微信公众号(Ots安全):使用开放 RSS 源构建网络威胁情报仪表板

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月29日09:28:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   使用开放 RSS 源构建网络威胁情报仪表板https://cn-sec.com/archives/3217699.html

发表评论

匿名网友 填写信息