CrowdSec IPS Compliance Automation —
CrowdSec IPS
CrowdSec IPS Intrusion Prevention Behavior Analysis Community Threat Intelligence Bouncer Compliance GDPR PCI DSS ISO 27001 Automation Block IP Linux Docker Kubernetes
| IPS Tool | Detection | Threat Intel | License | เหมาะกับ |
|---|---|---|---|---|
| CrowdSec | Behavior Analysis | Community | MIT | Modern Stack |
| Fail2ban | Regex | ไม่มี | GPL | Simple Setup |
| Suricata | Signature + Anomaly | ET Rules | GPL | Network IDS/IPS |
| Snort | Signature | Snort Rules | GPL | Classic IDS |
CrowdSec Setup
=== CrowdSec Installation ===
Install CrowdSec
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
sudo apt install crowdsec
Install Firewall Bouncer
sudo apt install crowdsec-firewall-bouncer-iptables
Install Nginx Bouncer
sudo apt install crowdsec-nginx-bouncer
Check Status
sudo cscli metrics
sudo cscli decisions list
sudo cscli alerts list
Configuration — /etc/crowdsec/acquis.yaml
---
filenames:
- /var/log/nginx/access.log
- /var/log/nginx/error.log
labels:
type: nginx
---
filenames:
- /var/log/auth.log
labels:
type: syslog
---
filenames:
- /var/log/apache2/access.log
labels:
type: apache2
Install Collections (Parsers + Scenarios)
sudo cscli collections install crowdsecurity/nginx
sudo cscli collections install crowdsecurity/sshd
sudo cscli collections install crowdsecurity/linux
sudo cscli collections install crowdsecurity/http-cve
Whitelist your IP
sudo cscli decisions delete --ip YOUR_IP
echo "name: whitelist\nreason: admin\nip: YOUR_IP" > /etc/crowdsec/parsers/s02-enrich/whitelist.yaml
from dataclasses import dataclass
from typing import List
@dataclass
class ThreatEvent:
timestamp: str
source_ip: str
scenario: str
action: str
duration: str
country: str
events = [
ThreatEvent("14:23:15", "185.220.101.45", "crowdsecurity/ssh-bf", "ban 4h", "4 hours", "RU"),
ThreatEvent("14:25:30", "45.155.205.233", "crowdsecurity/http-probing", "ban 4h", "4 hours", "CN"),
ThreatEvent("14:28:45", "192.168.1.100", "crowdsecurity/http-bf-wordpress", "ban 4h", "4 hours", "TH"),
ThreatEvent("14:30:00", "103.152.220.44", "crowdsecurity/CVE-2021-44228", "ban 24h", "24 hours", "VN"),
ThreatEvent("14:32:10", "91.240.118.172", "crowdsecurity/http-crawl-non_statics", "ban 4h", "4 hours", "UA"),
]
print("=== CrowdSec Alert Log ===")
for e in events:
print(f" [{e.timestamp}] {e.source_ip} ({e.country})")
print(f" Scenario: {e.scenario} | Action: {e.action}")
Compliance Framework
# === Compliance Automation ===
# CrowdSec helps with:
# PCI DSS 3.2.1:
# Req 1: Firewall configuration (Bouncer)
# Req 10: Log monitoring (Parser + Scenarios)
# Req 11: IDS/IPS testing (Behavior Analysis)
#
# GDPR:
# Article 32: Security measures (automated blocking)
# Article 33: Breach notification (alerting)
#
# ISO 27001:
# A.12.4: Logging and monitoring
# A.13.1: Network security management
@dataclass
class ComplianceControl:
framework: str
requirement: str
crowdsec_feature: str
status: str
evidence: str
controls = [
ComplianceControl("PCI DSS", "Req 1 — Firewall", "Firewall Bouncer auto-block", "Pass", "Decision logs"),
ComplianceControl("PCI DSS", "Req 10 — Logging", "Log parsing + analysis", "Pass", "acquis.yaml + metrics"),
ComplianceControl("PCI DSS", "Req 11 — IDS/IPS", "Behavior scenarios", "Pass", "Alert history"),
ComplianceControl("GDPR", "Art 32 — Security", "Auto-blocking threats", "Pass", "Decision + metrics"),
ComplianceControl("GDPR", "Art 33 — Notification", "Alert webhook", "Pass", "Slack/Email alerts"),
ComplianceControl("ISO 27001", "A.12.4 — Monitoring", "Real-time log analysis", "Pass", "Dashboard + SIEM"),
]
print("\n=== Compliance Status ===")
for c in controls:
print(f" [{c.status}] {c.framework} — {c.requirement}")
print(f" Feature: {c.crowdsec_feature} | Evidence: {c.evidence}")
# Automated Report
report_metrics = {
"Threats Blocked (30d)": "12,450",
"Unique Source IPs": "3,280",
"Top Scenario": "SSH Brute Force (45%)",
"Top Country": "China (28%), Russia (18%)",
"Avg Response Time": "< 2 seconds",
"False Positive Rate": "0.3%",
"Community CTI Signals": "150,000+ IPs shared",
"Uptime": "99.99%",
}
print(f"\nCompliance Report:")
for k, v in report_metrics.items():
print(f" {k}: {v}")
Enterprise Deployment
=== Enterprise Multi-server ===
Docker Compose
services:
crowdsec:
image: crowdsecurity/crowdsec:latest
environment:
- COLLECTIONS=crowdsecurity/nginx crowdsecurity/sshd
- ENROLL_KEY=your-console-key
volumes:
- /var/log/nginx:/var/log/nginx:ro
- /var/log/auth.log:/var/log/auth.log:ro
- crowdsec-db:/var/lib/crowdsec/data
- crowdsec-config:/etc/crowdsec
restart: always
bouncer-nginx:
image: crowdsecurity/crowdsec-openresty-bouncer
environment:
- CROWDSEC_BOUNCER_API_KEY=bouncer-key
- CROWDSEC_BOUNCER_HOST=crowdsec:8080
depends_on: [crowdsec]
Kubernetes — Helm
helm repo add crowdsec https://crowdsecurity.github.io/helm-charts
helm install crowdsec crowdsec/crowdsec \
--set agent.acquisition[0].namespace=nginx \
--set agent.acquisition[0].podName=nginx-* \
--set lapi.env[0].name=ENROLL_KEY \
--set lapi.env[0].value=your-key
SIEM Integration
sudo cscli notifications install email
sudo cscli notifications install slack
sudo cscli notifications install http # webhook to SIEM
Elasticsearch Export
profiles.yaml:
- name: default_ip_remediation
notifications:
- http_elastic
on_success: apply
decisions:
- type: ban
automation_tasks = [
"Auto-block: IP ที่ Brute Force ถูก Ban อัตโนมัติ",
"Auto-report: สร้าง Compliance Report ทุกเดือน",
"Auto-update: อัพเดท Scenarios Collections อัตโนมัติ",
"Auto-alert: แจ้ง Slack Email เมื่อมี Critical Alert",
"Auto-whitelist: Import Whitelist จาก CMDB อัตโนมัติ",
"Auto-escalate: Escalate ถ้า Alert > Threshold",
"Auto-export: ส่ง Log ไป SIEM ทุก Event",
]
print("Automation Tasks:")
for i, t in enumerate(automation_tasks, 1):
print(f" {i}. {t}")
เคล็ดลับ
- Collections: ติดตั้ง Collections ที่ตรงกับ Stack เช่น nginx sshd
- Console: ลงทะเบียน Console ดู Dashboard จัดการหลายเครื่อง
- Whitelist: Whitelist IP Admin ป้องกัน Lock ตัวเอง
- SIEM: ส่ง Alert ไป SIEM สำหรับ Audit Trail
- Update: อัพเดท Scenarios สม่ำเสมอ ป้องกัน CVE ใหม่
การนำไปใช้งานจริงในองค์กร
สำหรับองค์กรขนาดกลางถึงใหญ่ แนะนำให้ใช้หลัก Three-Tier Architecture คือ Core Layer ที่เป็นแกนกลางของระบบ Distribution Layer ที่ทำหน้าที่กระจาย Traffic และ Access Layer ที่เชื่อมต่อกับผู้ใช้โดยตรง การแบ่ง Layer ชัดเจนช่วยให้การ Troubleshoot ง่ายขึ้นและสามารถ Scale ระบบได้ตามความต้องการ
เรื่อง Network Security ก็สำคัญไม่แพ้กัน ควรติดตั้ง Next-Generation Firewall ที่สามารถ Deep Packet Inspection ได้ ใช้ Network Segmentation แยก VLAN สำหรับแต่ละแผนก ติดตั้ง IDS/IPS เพื่อตรวจจับการโจมตี และทำ Regular Security Audit อย่างน้อยปีละ 2 ครั้ง
CrowdSec คืออะไร
Open Source IPS Behavior Analysis Community Threat Intelligence Bouncer Block IP Log Linux Docker Kubernetes MIT ฟรี
CrowdSec ต่างจาก Fail2ban อย่างไร
Behavior Analysis แทน Regex Community CTI หลาย Bouncer Dashboard API Console หลายเครื่อง Fail2ban Regex Local ง่าย CrowdSec Production
Compliance Automation ทำอย่างไร
PCI DSS Req 1 10 11 GDPR Art 32 33 ISO 27001 A.12.4 Auto-block Log Alert Report SIEM Dashboard Audit Trail Evidence
ติดตั้ง CrowdSec อย่างไร
apt install crowdsec Bouncer iptables nginx acquis.yaml Log Source Collections nginx sshd Console app.crowdsec.net Dashboard
สรุป
CrowdSec IPS Compliance Automation Behavior Analysis Community CTI Bouncer Block PCI DSS GDPR ISO 27001 SIEM Alert Docker Kubernetes Enterprise Production