andresscyber/aws-serverless-malware-scanning-pipeline

GitHub: andresscyber/aws-serverless-malware-scanning-pipeline

基于 AWS 无服务器架构构建的事件驱动恶意软件扫描流水线,在文件上传 S3 后自动执行 ClamAV 扫描、隔离恶意文件并发送安全告警。

Stars: 0 | Forks: 0

# AWS 无服务器恶意软件扫描流水线 一个云安全项目,演示了如何使用 AWS S3、Lambda、ECR、SNS、CloudWatch、Docker、Python 和 ClamAV 构建无服务器恶意软件扫描工作流。 本项目旨在探索事件驱动的安全自动化,通过自动处理上传到 S3 存储桶的文件,在容器化的 Lambda 函数内执行恶意软件扫描操作,生成安全警报,并捕获操作日志以进行监控和故障排除。 ## 项目目标 - 在 AWS 中构建无服务器安全扫描工作流 - 使用 Docker 和 Amazon ECR 部署容器化的 Lambda 函数 - 配置 S3 事件驱动自动化 - 实施 CloudWatch 监控和日志记录 - 配置 SNS 电子邮件通知以应对安全事件 - 应用 IAM 最小权限访问控制 - 调查并解决 ClamAV 在 Lambda 中的部署挑战 - 记录云安全架构和操作发现 ## 使用的技术 | 类别 | 技术 | |-----------|------------| | 云平台 | AWS | | 存储 | Amazon S3 | | 计算 | AWS Lambda | | 容器镜像仓库 | Amazon ECR | | 监控 | Amazon CloudWatch | | 通知 | Amazon SNS | | 身份与访问 | AWS IAM | | 容器化 | Docker | | 编程语言 | Python | | 恶意软件扫描器 | ClamAV | ## 架构图 ![架构图](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/c62eba6793130430.png) ### 工作流 1. 用户将文件上传到 S3 上传存储桶。 2. S3 ObjectCreated 事件触发 Lambda 函数。 3. Lambda 容器检索上传的文件。 4. Lambda 对上传的文件调用 ClamAV 扫描操作。 5. Lambda 将执行详细信息写入 CloudWatch Logs。 6. SNS 可以针对与恶意软件相关的事件生成电子邮件通知。 7. 可选择将受感染的文件复制到隔离存储桶。 # 环境设置 ## S3 存储桶 ### 上传存储桶 用于存储提交以进行扫描的文件。 ### 隔离存储桶 用于隔离潜在的恶意文件,以便进一步调查。 ## Elastic Container Registry (ECR) Amazon ECR 用于存储和管理 Lambda 容器镜像。 ### 创建的仓库 ![ECR 仓库](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/7ed661d8c6130524.png) ### ECR 登录成功 ![ECR 登录](https://raw.githubusercontent.com/andresscyber/aws-serverless-malware-scanning-pipeline/main/screenshots/02-ecr/02-ecr-login-success.png) ### Docker 构建成功 ![Docker 构建](https://raw.githubusercontent.com/andresscyber/aws-serverless-malware-scanning-pipeline/main/screenshots/02-ecr/03-docker-build-success.png) ### Docker 推送成功 ![Docker 推送](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/3b080fb40c130750.png) ### ECR 镜像已上传 ![ECR 镜像](https://raw.githubusercontent.com/andresscyber/aws-serverless-malware-scanning-pipeline/main/screenshots/02-ecr/05-ecr-image-uploaded.png) ### 兼容 Lambda 的镜像构建 ![Lambda 镜像](https://raw.githubusercontent.com/andresscyber/aws-serverless-malware-scanning-pipeline/main/screenshots/02-ecr/06-lambda-compatible-image-build.png) # S3 配置 ## 上传和隔离存储桶 ![S3 存储桶](https://raw.githubusercontent.com/andresscyber/aws-serverless-malware-scanning-pipeline/main/screenshots/01-s3-buckets/01-s3-upload-and-quarantine-buckets.png) ## 上传存储桶属性 ![上传存储桶](https://raw.githubusercontent.com/andresscyber/aws-serverless-malware-scanning-pipeline/main/screenshots/01-s3-buckets/02-upload-bucket-properties.png) ## 隔离存储桶属性 ![隔离存储桶](https://raw.githubusercontent.com/andresscyber/aws-serverless-malware-scanning-pipeline/main/screenshots/01-s3-buckets/03-quarantine-bucket-properties.png) # Lambda 部署 恶意软件扫描工作流作为容器化的 Lambda 函数进行部署。 ## 项目文件 ![项目文件](https://raw.githubusercontent.com/andresscyber/aws-serverless-malware-scanning-pipeline/main/screenshots/03-lambda/01-lambda-project-files.png) ## 创建的 Lambda 函数 ![Lambda 函数](https://raw.githubusercontent.com/andresscyber/aws-serverless-malware-scanning-pipeline/main/screenshots/03-lambda/02-lambda-function-created.png) ## 环境变量 ![环境变量](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/1fe3c42bcb131507.png) ## IAM 角色权限 ![Lambda 权限](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/281a139cdd131533.png) ## 恶意软件扫描器代码 ![Lambda 代码](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/1f364c5cfa131603.png) ## 最终的 Dockerfile ![Dockerfile](https://raw.githubusercontent.com/andresscyber/aws-serverless-malware-scanning-pipeline/main/screenshots/03-lambda/06-lambda-dockerfile-final.png) ## App.py 数据库故障排除 ![App.py 修复](https://raw.githubusercontent.com/andresscyber/aws-serverless-malware-scanning-pipeline/main/screenshots/03-lambda/07-lambda-app-py-database-fix.png) ## Dockerfile ClamAV 故障排除 ![Dockerfile 修复](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/7146810cd6131823.png) ## AWS CLI 身份验证 ![AWS CLI 身份](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/4b37b7ffbf131849.png) ## IAM 用户验证 ![IAM 用户](https://raw.githubusercontent.com/andresscyber/aws-serverless-malware-scanning-pipeline/main/screenshots/03-lambda/10-iam-cli-user-created.png) # 事件驱动自动化 ## S3 事件触发器配置 ### 创建的存储桶 ![创建的存储桶](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/2817b4b3af132011.png) ### 添加到 Lambda 的 S3 触发器 ![添加的触发器](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/897c59af1e132057.png) # 监控与日志记录 CloudWatch 用于监控 Lambda 执行活动并协助进行故障排除。 ## Lambda 执行日志 ![执行日志](https://raw.githubusercontent.com/andresscyber/aws-serverless-malware-scanning-pipeline/main/screenshots/05-cloudwatch-logs/01-cloudwatch-lambda-execution-log.png) ## ClamAV 数据库错误调查 ![数据库错误](https://raw.githubusercontent.com/andresscyber/aws-serverless-malware-scanning-pipeline/main/screenshots/05-cloudwatch-logs/02-cloudwatch-clamav-database-error.png) # SNS 通知 Amazon SNS 配置为支持基于电子邮件的安全通知。 ## 电子邮件订阅确认 ![电子邮件确认](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/0346f0499a132320.png) ## SNS 订阅已确认 ![SNS 确认](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/dcdd1a501a132354.png) # 测试 测试侧重于验证 S3 触发的 Lambda 执行、CloudWatch 日志记录和 SNS 通知工作流。 由于在部署期间遇到了 ClamAV 数据库更新限制,无法在 Lambda 环境中完成完整的恶意软件特征验证。 # 隔离工作流 该解决方案包含可选逻辑,用于将潜在的恶意文件转移到专用的隔离存储桶中进行隔离和进一步分析。 该工作流在 Lambda 函数内实现,并为未来的验证做好了准备。 # 故障排除与发现 本项目很大一部分涉及解决容器化 Lambda 环境中 ClamAV 数据库更新的限制问题。 ## Freshclam CDN 限制 ![Freshclam CDN 限制](https://raw.githubusercontent.com/andresscyber/aws-serverless-malware-scanning-pipeline/main/screenshots/09-troubleshooting/freshclam-cdn-blocked.png) ### 关键发现 在测试期间,Freshclam 数据库更新被 ClamAV 的内容分发网络 (CDN) 阻止,导致无法在 Lambda 环境中下载恶意软件特征更新。 这为解决涉及容器化工作负载和第三方安全工具的真实云安全部署挑战提供了宝贵的经验。 # 经验总结 - 容器化的 Lambda 部署为安全工具提供了灵活性。 - 事件驱动架构支持可扩展的云安全自动化。 - CloudWatch 对于无服务器应用程序的监控和故障排除至关重要。 - 必须仔细配置 IAM 权限以支持安全的自动化。 - 为传统系统设计的安全工具在无服务器环境中部署时,可能需要进行调整。 - 故障排除和文档记录是安全工程项目的重要组成部分。 # 简历要点 - 使用 AWS S3、Lambda、ECR、CloudWatch、SNS、Docker、Python 和 ClamAV 构建了无服务器恶意软件扫描流水线。 - 实施了由 S3 对象上传触发的事件驱动安全自动化。 - 使用 Docker 和 Amazon ECR 将容器化工作负载部署到 AWS Lambda。 - 配置了 CloudWatch 日志记录和 SNS 通知,以支持云安全监控。 - 跨 AWS 资源应用了 IAM 最小权限访问控制。 - 调查并记录了无服务器云环境中 ClamAV 的部署限制。
标签:AWS, ClamAV, DPI, Web 安全测试, 事件驱动, 恶意软件扫描, 请求拦截, 逆向工具