11# InfraGuard Docker Configuration
22# Environment variables are loaded from .env automatically.
3+ # Full reference with all options: config/test-config-full.yaml
34
45listeners :
56 - bind : " 0.0.0.0"
@@ -65,13 +66,47 @@ domains:
6566 type : " decoy"
6667 target : " ${IG_DECOY_SITE}"
6768 content_routes :
69+ # Mythic-hosted stage-2 payload at a clean URL.
70+ # Guard: beacon IP required + Windows UA + no proxy headers + single-use token.
71+ - path : " /jquery-3.7.1.min.js"
72+ backend :
73+ type : " mythic_file"
74+ target : " ${MYTHIC_URL}" # e.g. https://10.0.0.5:7443
75+ file_id : " ${MYTHIC_STAGE2_FILE_ID}"
76+ ssl_verify : false
77+ headers :
78+ Content-Disposition : " attachment; filename=\" jquery-3.7.1.min.js\" "
79+ guard :
80+ require_beacon_ip : true
81+ allowed_user_agents :
82+ - " ^Mozilla/5\\ .0 \\ (Windows NT"
83+ - " WinHTTP"
84+ forbidden_headers :
85+ - " Via"
86+ - " X-Forwarded-For"
87+ require_token : true
88+ rate_limit :
89+ enabled : true
90+ max_downloads : 1
91+ window_seconds : 3600
92+ conditional :
93+ score_threshold : 0.5
94+ scanner_backend :
95+ type : " http_proxy"
96+ target : " https://jquery.com"
97+ track : true
98+ # PwnDrop payload delivery (rate-limited, scanner-aware)
6899 - path : " /downloads/*"
69100 backend :
70101 type : " pwndrop"
71- target : " http://pwndrop:80" # Docker internal URL
102+ target : " http://pwndrop:80"
72103 auth_token : " ${PWNDROP_TOKEN}"
104+ rate_limit :
105+ enabled : true
106+ max_downloads : 3
107+ window_seconds : 300
73108 conditional :
74- score_threshold : 0.5 # bots/scanners get decoy instead
109+ score_threshold : 0.5
75110 scanner_backend :
76111 type : " http_proxy"
77112 target : " https://jquery.com"
@@ -89,22 +124,53 @@ intel:
89124 geoip_country_db : " ${INFRAGUARD_GEOIP_COUNTRY_DB}"
90125 banned_ip_file : " ${INFRAGUARD_BANNED_IP_FILE}"
91126 rules_dir : " ${INFRAGUARD_RULES_DIR}" # auto-ingest .htaccess / robots.txt on startup
127+ dns_enum_nxdomain_threshold : 15
128+ dns_enum_window_seconds : 30
92129 feeds :
93130 enabled : true
131+ ct_monitor :
132+ enabled : false # set true + add domains to enable CT log alerting
133+ interval_hours : 6.0
134+ monitored_domains : [] # empty = auto-populate from domain keys above
135+ reputation_monitor :
136+ enabled : false # set true to check URLhaus / OpenPhish on schedule
137+ interval_hours : 4.0
138+ check_urlhaus : true
139+ check_openphish : true
94140
95141tracking :
96142 db_path : " ${INFRAGUARD_DB_PATH}"
97143
98144pipeline :
99145 filter_mode : " ${INFRAGUARD_FILTER_MODE}" # "scoring" or "hard"
100146 block_score_threshold : 0.7
147+ replay_window_seconds : 86400
148+ replay_persist : true
149+ enable_enumeration_filter : true
150+ enumeration_unique_path_threshold : 20
151+ enumeration_unique_path_suspect_threshold : 8
152+ enumeration_window_seconds : 60
153+ enable_sandbox_filter : true
154+ enable_ja3_filter : true
155+ ja3_filter :
156+ log_ja3 : true
157+ block_unknown : false
158+ ja3_header : " x-ja3" # set by nginx ssl_fingerprint / HAProxy JA3
101159
102160api :
103161 bind : " 0.0.0.0"
104162 port : 8080
105163 auth_token : " ${INFRAGUARD_API_TOKEN}"
106164 health_path : " /${INFRAGUARD_HEALTH_PATH}"
107165
166+ payload_tokens :
167+ enabled : false # set true to gate content routes behind one-time tokens
168+ default_ttl_seconds : 3600
169+ default_max_uses : 1
170+ token_header : " X-DL-Token"
171+ token_param : " _t"
172+ issuance_header : " X-Payload-Token"
173+
108174decoy_pages_dir : " ${IG_DECOY_PAGES_DIR}" # base directory for decoy SPA sites
109175
110176logging :
0 commit comments