网络威胁情报仪表板
介绍:
在当今快速发展的网络威胁形势下,保持知情至关重要。威胁情报源在让安全专业人员了解最新发展方面发挥着关键作用。在本文中,我将向您展示如何使用开放 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>
© 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 源构建网络威胁情报仪表板
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论