-
Notifications
You must be signed in to change notification settings - Fork 0
09 Security Best Practices
AsaTyr2018 edited this page Mar 17, 2026
·
13 revisions
Use per-user IP policy in Users:
- define
IP Access CIDRsfor each admin/operator account that needs restricted source ranges - use
Disable IP checkonly when explicitly required and only with MFA-enabled user accounts - keep the admin bind endpoint internal when possible
MFA coupling rule:
-
Disable IP checkis rejected by backend validation if MFA is not enabled for that user. - Resetting user MFA automatically re-enables IP checks for that account.
Optional runtime baseline:
-
DOMNEX_ADMIN_ALLOWED_CIDRScan still be used as fallback baseline policy - if a user has explicit CIDRs configured in Web UI, user-level policy takes precedence
- Public web entry:
80and443 - Admin UI/API port: keep LAN-only or tightly filtered (for example
8443) - Optional SSH Bastion: expose only one dedicated bastion port (for example
2222) instead of exposing many host SSH ports
- Use long random passwords
- Rotate API tokens regularly
- Never share credentials/tokens in chat, screenshots, or issue tickets
- Prefer dedicated user accounts over shared admin credentials
- Enforce MFA by role using
Settings -> MFA - Store and protect recovery codes offline
Break-glass recovery (local only):
- If an admin account is locked out by MFA misconfiguration, use local shell:
domnexdomain mfa-reset <username>
- This is audited as a break-glass security event.
Login flow sensitivity notes:
- staged login data is TTL-bounded in process memory
- staged password is not persisted to disk
- staged secret is discarded on completion or invalidation
- staged flow is source-IP and stage bound
- Use
read-onlyfor auditors/observers - Use
domain-adminfor scoped operational ownership - Reserve global
adminfor platform owners - Grant minimal token scopes for automation
- Use internal TLS when possible
- Use
No TLS Verifyonly when technically unavoidable (for example temporary self-signed transition) - Revisit and remove
No TLS Verifyonce proper cert chain is available
- Monitor failed login events and unusual source IP patterns
- Investigate unexpected config changes immediately
- Track recurring
proxy.waf.*andthreatintel.*activity inStrategic Intel
DomNexDomain WAF baseline mitigates unknown-host flood patterns.
- Temporary block window: 15 minutes
- Auditable actions:
proxy.waf.temp_block.setproxy.waf.temp_block.hit
- No permanent auto-ban in baseline WAF path
Threat Intel modes:
-
Monitor only: classify and learn (XP/Level/Tier) without auto-enforcement -
Auto mode: soft/hard enforcement according to policy thresholds
Feed opt-in behavior:
- Feeds are backend intelligence, not immediate block material
- Feed-listed IPs are enforced only when they actually send traffic
- First contact from a feed-listed or signature-matched source is raised into the watched band (Level 3) instead of direct hard block
Policy precedence:
- allowlist override
- mode + thresholds
- enforcement output
Determinism note:
- edge request handling is short-circuiting and deterministic; first terminal security decision ends evaluation.
- Hard-blocked sources are edge-dropped (
proxy.block.hard_drop) - No rendered content is sent to blocked scanners
- Hard-block lifecycle is bounded:
- after long inactivity, hard-block state transitions into watch state
- normal decay/rehabilitation continues from there
- GeoIP source files are runtime data, not source code.
- Never commit source datasets (
.mmdb,.csv,.gz,.zip) to git. - Use DomNex source-pool and compiled output paths:
/var/lib/domnexdomain/geoip-sources/var/lib/domnexdomain/geoip-compiled/domnex-country.mmdb
- Use
Settings -> GeoIP Sourcesfor controlled uploads and compile visibility. - Free sources:
https://download.ip2location.com/lite/https://db-ip.com/db/download/ip-to-country-lite
- Keep multiple high-quality sources to reduce unknown-country (
ZZ) rates.
Smart edge error pages expose a trace ID directly to the requester.
Use it as your primary correlation key:
- Copy trace ID from error page.
- Open
Strategic Intel -> Investigations. - Search/pivot trace ID with broad filters first.
- Narrow by namespace/action/source for root cause.
- Configure retention in
Settings -> Advancedand keep it explicit. - Do not run with unlimited audit/traffic/threat history.
- Validate periodic purge execution through
retention.purgeevents inStrategic Intel -> Events. - Keep backup retention aligned with database retention.
- Home
- Quick Start
- Prerequisites
- Installation
- First Login
- Initial Setup Assistant and OTS
- Domain Wizard
- Subdomain Wizard
- SSH Bastion Client Guide
- Subdomain Settings
- Dashboard Widget Guide
- UI Styles and Branding
- Access Control (Users, Groups, Permission Matrix, API Tokens)
- Users and Roles
- Identity Providers (LDAP + OIDC)
- API Tokens
- Threat Intel
- Logservers and External SIEM
- Operating Profiles
- API Usage Guide
- Product Roadmap
- Technical Reference
- Strategic Intel (Logs and Monitoring)
- Data Retention
- Security
- Backup and Restore
- Troubleshooting
- Glossary
- Support