echoIRCd

Security & anti-abuse (services)

echo services runs a native anti-abuse engine in its core. It observes network activity, scores it against configurable detectors, and can act (kill / ban) — or, by default, only report. It is separate from the daemon's layered anti-abuse.

Arm it carefully. report_only defaults to true (detect and alert only). Before setting it false, make sure exempt_ips covers loopback and your trusted hosts — otherwise an over-eager detector could ban your own services or bots.

[security] — engine core#

KeyDescription
enabledMaster switch
report_onlyDetect & alert only, never kill/ban (default true)
exempt_ipsIP masks exempt from enforcement (defaults to loopback)
exempt_opers / exempt_accounts / exempt_voiceExempt operators (default on) / logged-in accounts (off) / voiced users (on)
announce_permit / announce_lifeRate limit on abuse announcements
cascade_permit / cascade_lifeCorrelated-event (cascade) detection thresholds
netsplit_graceGrace period after a netsplit before enforcing

The OperServ DEFCON command raises the network defence level on top of this.

[security.connect] — connection floods#

enabled, flood_permit / flood_life (connects per source in a window), range_permit / range_life (per IP range), ban_duration.

[security.behavior] — behavioural abuse#

Nick flooding, join/part cycling, mass-join, quit floods, and channel crawling: nick_permit/nick_life, cycle_permit/cycle_life, joinpart_permit/joinpart_life/joinpart_grace, massjoin_permit/massjoin_life, quit_permit/quit_life/quit_reasons, crawl_permit/crawl_life, ban_duration.

[security.content] — message content#

Highlight spam, bad Unicode, and repeats: highlight_nicks/highlight_min_len/highlight_permit/highlight_life, badunicode_score/badunicode_min/badunicode_permit/badunicode_life, repeat_min/repeat_permit/repeat_life, ban_duration.

[security.auth] — auth abuse#

Login and registration flooding, ban evasion: fail_permit/fail_life, register_permit/register_life, evade_ttl, ban_duration.

[[security.pattern]] — custom connect masks (repeatable)#

mask, field (which connection field to match), regex (treat the mask as a regex), reason, ban (duration).

[security.mxbl] — email MX/IP blocklist#

Screens registration email domains: enabled, resolver, mx_globs, ip_cidrs, timeout_ms.