MarcoRodrigues00/portal-academico-seguro
GitHub: MarcoRodrigues00/portal-academico-seguro
采用分层安全架构(WAF、MFA、网络隔离、SIEM监控)的学术门户Web应用,已在十支团队攻防演练中验证了纵深防御体系的有效性。
Stars: 0 | Forks: 0
# 🔐 安全学术门户 (PAS)



-009639?logo=nginx&logoColor=white)


## 概述
一个面向学生、教授和管理员的 Web 门户(包含成绩、注册证明、申请、公开课程),围绕分层安全和持续监控设计——随后在 10 支团队的实验室攻防演练中承受了真实的对抗压力。
## 安全架构(纵深防御)
| 层级 | 具体内容 |
|------|--------------|
| **边缘** | pfSense 防火墙(默认全部拒绝,仅开放 80/443 端口,WAN/服务器隔离) |
| **DMZ** | Nginx 反向代理,采用 TLS 1.2/1.3,**ModSecurity WAF (OWASP CRS)** 防御 SQLi/XSS/CSRF,基于 IP 的速率限制,安全响应头(HSTS、X-Frame-Options、CSP) |
| **App** | 集成 Keycloak 与 **MFA/TOTP**,基于角色的 RBAC(admin/professor/aluno/externo),`express-rate-limit`,Helmet.js,Zod 验证,审计日志 |
| **数据** | PostgreSQL 隔离在其独立的网络区域中,从不对外暴露 |
| **监控** | Wazuh SIEM,Prometheus metrics,Grafana dashboards,Restic 加密备份 |
| **加固** | AppArmor,仅限 SSH 密钥登录,fail2ban,非 root containers,尽可能使用只读 volumes |
## 网络拓扑
```
Internet ──> pfSense (NAT/FW, only 80/443) ──> nginx-proxy (DMZ)
│
frontend · backend-api · keycloak (APP)
│
postgres (DATA, internal only)
App hosts ──logs/metrics──> Monitoring host: Wazuh · Prometheus · Grafana · Restic
```
## 技术栈
- **后端:** Node.js, Express, TypeScript, Prisma
- **前端:** React, Vite, TypeScript
- **基础设施:** Docker / docker-compose, Nginx, Keycloak, PostgreSQL
## 仓库结构
```
portal-academico-seguro/
├─ backend/ # API: Express + TypeScript + Prisma
├─ frontend/ # React + Vite + TypeScript
├─ infra/ # docker-compose, keycloak themes, env examples
└─ docker-compose.app.yml
```
## 快速开始
```
# 复制 env 模板并填入你自己的值
cp .env.example .env
cp infra/.env.example infra/.env
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.env
# 启动 stack
docker compose -f docker-compose.app.yml up -d
docker compose -f docker-compose.app.yml ps
```
## 攻击下的有效性验证
在一场 10 支团队的演练中,该门户在测试其他团队系统的同时,也遭受了来自其他团队的实时攻击。
观测到的防御机制生效情况:WAF 针对SQLi/XSS返回 **403**,速率限制触发 **429**,并且在 Wazuh中生成了相应的警报。
## 📸 截图
**网络拓扑 — pfSense 边缘,隔离的 DMZ / APP / DATA**

**带 MFA 的登录 — Keycloak SSO + TOTP**

**Keycloak — realm, roles 和 MFA 配置**

**应用 — 已认证的仪表板**

**应用 — 公开课程视图**

标签:AppImage, MITM代理, NIDS, Web应用防火墙, 学术门户, 安全架构, 容器化, 测试用例, 网络隔离, 自动化攻击, 自定义请求头, 请求拦截