@@ -75,11 +75,19 @@ listeners:
7575# teamserver, IP whitelist, drop action, and content delivery routes.
7676#
7777# Supported profile types:
78- # cobalt_strike - .profile files (Malleable C2 DSL)
79- # mythic - .json files (Mythic HTTPX profile format)
80- # brute_ratel - .json files (BRC4 server config with listeners)
81- # sliver - .json files (Sliver HTTP C2 profile with URI generation)
82- # havoc - .toml files (Havoc/Kaine profile with URI alternation patterns)
78+ #
79+ # C2 frameworks (require profile_path):
80+ # cobalt_strike - .profile files (Malleable C2 DSL)
81+ # mythic - .json files (Mythic HTTPX profile format)
82+ # brute_ratel - .json files (BRC4 server config with listeners)
83+ # sliver - .json files (Sliver HTTP C2 profile with URI generation)
84+ # havoc - .toml files (Havoc/Kaine profile with URI alternation patterns)
85+ #
86+ # Phishing frameworks (no profile_path needed):
87+ # gophish - GoPhish landing pages, tracking, and report endpoints
88+ # evilginx - Evilginx reverse proxy phishlets (proxies all paths)
89+ # cuddlephish - CuddlePhish OAuth/device-code phishing flows
90+ # passthrough - Generic proxy mode - all paths forwarded, no profile matching
8391
8492domains :
8593
@@ -172,6 +180,79 @@ domains:
172180 # type: "proxy"
173181 # target: "https://portal.azure.com"
174182
183+ # ── GoPhish domain ─────────────────────────────────────────────────
184+ # Fronts a GoPhish instance. No C2 profile needed - path-based
185+ # filtering allows tracking pixels (/track/*), report endpoint
186+ # (/report), static assets (/static/*), and landing pages.
187+ # IP/bot/geo filters still run to block scanners.
188+ #
189+ # Use allowed_paths to override the built-in GoPhish patterns:
190+ # phish.example.com:
191+ # upstream: "https://10.0.0.10:3333"
192+ # profile_type: "gophish"
193+ # # allowed_paths: # optional - overrides built-in patterns
194+ # # - "/custom-landing" # exact path
195+ # # - "/campaigns/*" # prefix glob
196+ # # - "~^/t/[a-f0-9]+" # regex (prefix with ~)
197+ # drop_action:
198+ # type: "redirect"
199+ # target: "https://example.com"
200+
201+ # ── Evilginx domain ────────────────────────────────────────────────
202+ # Fronts an Evilginx reverse proxy. Two modes:
203+ #
204+ # 1. With phishlet file (recommended): InfraGuard parses the phishlet
205+ # to extract login paths and auth_urls for filtering.
206+ # Set profile_path to the phishlet YAML file.
207+ #
208+ # 2. Without phishlet: all paths are forwarded (Evilginx default).
209+ # Use allowed_paths to restrict if needed.
210+ #
211+ # IP/bot/geo filters protect against scanners discovering the phishlet.
212+ # login.example.com:
213+ # upstream: "https://10.0.0.11:443"
214+ # profile_type: "evilginx"
215+ # profile_path: "examples/wordpress-phishlet.yaml" # optional phishlet file
216+ # # allowed_paths: # optional - replaces defaults
217+ # # - "/wp-login.php"
218+ # # - "/wp-admin/*"
219+ # drop_action:
220+ # type: "proxy"
221+ # target: "https://login.microsoftonline.com"
222+
223+ # ── CuddlePhish domain ─────────────────────────────────────────────
224+ # Fronts a CuddlePhish OAuth/device-code phishing server. All paths
225+ # forwarded - CuddlePhish handles OAuth flow routing internally.
226+ # Use allowed_paths to restrict to specific OAuth endpoints.
227+ # auth.example.com:
228+ # upstream: "https://10.0.0.12:8443"
229+ # profile_type: "cuddlephish"
230+ # # allowed_paths:
231+ # # - "/devicelogin"
232+ # # - "/common/oauth2/*"
233+ # # - "/common/login"
234+ # drop_action:
235+ # type: "redirect"
236+ # target: "https://login.microsoftonline.com"
237+
238+ # ── Generic passthrough domain ──────────────────────────────────────
239+ # Pure reverse proxy with IP/bot/geo filtering. All requests that
240+ # pass the filter pipeline are forwarded to upstream. No profile
241+ # matching at all. Use for custom phishing frameworks, payload
242+ # delivery servers, or any HTTP service that needs scanner protection.
243+ #
244+ # If allowed_paths is set, only those paths are proxied (converts
245+ # passthrough into path-filtered mode).
246+ # proxy.example.com:
247+ # upstream: "https://10.0.0.13:8080"
248+ # profile_type: "passthrough"
249+ # # allowed_paths: # optional - restricts passthrough
250+ # # - "/api/*"
251+ # # - "/webhook"
252+ # drop_action:
253+ # type: "reset"
254+ # target: ""
255+
175256# ── IP Intelligence ───────────────────────────────────────────────────
176257
177258intel :
@@ -181,16 +262,20 @@ intel:
181262 geoip_country_db : " ${INFRAGUARD_GEOIP_COUNTRY_DB}" # GeoLite2-Country.mmdb
182263
183264 blocked_countries : [] # e.g. ["CN", "RU", "KP", "IR"]
184- allowed_countries : [] # e.g. ["US", "GB", "DE"] — if set, ONLY these pass
265+ allowed_countries : [] # e.g. ["US", "GB", "DE"] - if set, ONLY these pass
185266 blocked_asns : [] # e.g. [14061, 16276] for DigitalOcean, OVH
186- allowed_asns : [] # e.g. [15169, 13335] for Google, Cloudflare — if set, ONLY these pass
267+ allowed_asns : [] # e.g. [15169, 13335] for Google, Cloudflare - if set, ONLY these pass
187268 auto_block_scanners : true # block Shodan, Censys, Rapid7, etc.
188269 dynamic_whitelist_threshold : 3 # auto-whitelist after N valid C2 requests
189270
190271 # Ingested blocklist from rules/ directory
191272 # Generate with: infraguard ingest rules/.htaccess --format blocklist -o rules/banned_ips.txt
192273 banned_ip_file : " ${INFRAGUARD_BANNED_IP_FILE}"
193274
275+ # Auto-ingest .htaccess and robots.txt from this directory on startup.
276+ # Drop rule files into the rules/ directory and they'll be loaded automatically.
277+ rules_dir : " ${INFRAGUARD_RULES_DIR}"
278+
194279 # Threat intel feed auto-update
195280 feeds :
196281 enabled : true
0 commit comments