jblukach/lunker

GitHub: jblukach/lunker

基于 AWS CDK 构建的多区域威胁情报域名监控 WebUI,支持无密码认证和自动化威胁查询。

Stars: 3 | Forks: 0

# Lunker

Lunker Logo

Lunker 是一个多区域 AWS CDK 应用程序,允许用户注册域名以进行威胁情报监控。用户通过 Amazon Cognito(无密码)登录,并管理个人域名列表,这些域名会自动与 [webmonitor](https://github.com/jblukach/webmonitor) 威胁情报服务进行比对检查。 ## 功能特性 - 通过 Amazon Cognito 进行**无密码身份验证** - **域名管理** — 添加或移除要监控的域名(仅限二级域名,例如 `example.com`) - 根据每日刷新的官方 [IANA TLD 列表](https://data.iana.org/TLD/tlds-alpha-by-domain.txt)进行 **TLD 验证** - 通过 DynamoDB Streams 在域名注册时触发**自动威胁查询** - 跨 `us-east-1`、`us-east-2` 和 `us-west-2` 的**多区域**部署 - 在所有三个区域复制的**全局 DynamoDB 表** - 通过 OIDC 实现 **GitHub Actions CI/CD** — 无需长期凭证 ## 架构 部署了四个 AWS CDK 堆栈以提供完整的多区域覆盖: | Stack | 区域 | 用途 | |---|---|---| | `LunkerDatabase` | us-east-2 | 全局 DynamoDB 表、DynamoDB Streams、action Lambda | | `LunkerStackUse1` | us-east-1 | Home Lambda (API)、TLD Lambda、TLD DynamoDB 表 | | `LunkerStackUse2` | us-east-2 | GitHub OIDC 提供商和用于 CI/CD 的 IAM 角色 | | `LunkerStackUsw2` | us-west-2 | Home Lambda (API)、TLD Lambda、TLD DynamoDB 表 | ### Lambda 函数 - **`action`** — 由新域名插入时的 DynamoDB Streams 触发。调用 webmonitor 账户中的 `searchlist` 函数以开始威胁情报分析。 - **`home`** — REST API 处理程序。通过 Cognito 验证 OAuth2 token,然后处理域名列表、添加和删除操作。 - **`tld`** — 每日 UTC 10:00 运行。将 IANA TLD 列表同步到区域 DynamoDB 表中,用于在提交时验证域名 TLD。 ### DynamoDB 表 - **`lunker`** — 全局表(主表位于 `us-east-2`,副本位于 `us-east-1` 和 `us-west-2`),存储用户到域名的映射。已启用时间点恢复和删除保护。 - **`tld`** — 区域表(每个区域),存储用于输入验证的当前 IANA TLD 列表。 ## 前置条件 - [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html) v2 - Python 3.13 - 使用 CDK 限定符 `lukach` 进行引导的 AWS 账户: cdk bootstrap --qualifier lukach - 每个部署账户/区域中必须存在以下 SSM 参数: - `/organization/id` — AWS Organizations ID - `/account/webmonitor` — webmonitor 服务账户的账户 ID - 包含 `requests.zip` Lambda 层的 S3 存储桶: - `packages-use1-lukach-io` (us-east-1) - `packages-usw2-lukach-io` (us-west-2) ## 部署 ``` # 安装依赖 pip install -r requirements.txt # 部署所有 stack cdk deploy --all # 部署单个 stack cdk deploy LunkerDatabase ``` 在部署之前,必须设置 `CDK_DEFAULT_ACCOUNT` 环境变量(或通过 AWS CLI 自动解析)。 ## 项目结构 ``` app.py # CDK app entry point requirements.txt # Python dependencies cdk.json # CDK configuration lunker/ lunker_database.py # LunkerDatabase stack (us-east-2) lunker_stackuse1.py # LunkerStackUse1 stack (us-east-1) lunker_stackuse2.py # LunkerStackUse2 stack (us-east-2, CI/CD) lunker_stackusw2.py # LunkerStackUsw2 stack (us-west-2) action/ action.py # DynamoDB Streams Lambda handler home/ homeuse1.py # Home API Lambda handler (us-east-1) homeusw2.py # Home API Lambda handler (us-west-2) tld/ tld.py # IANA TLD sync Lambda handler ``` ## 许可证 [LICENSE](LICENSE)
标签:Amazon Cognito, AWS CDK, DynamoDB Streams, GitHub Actions, IANA TLD, Lambda, OIDC, Python, REST API, 全栈, 域名监控, 多区域部署, 威胁情报, 开发者工具, 无后门, 无密码认证, 网络调试, 自动化, 自动笔记, 逆向工具