ircu2/SPOOFHOST_EXPLAINED.md

14 KiB

SPOOFHOST - Mascarea Hostname-urilor Utilizatorilor

📋 CE ESTE SPOOFHOST?

Spoofhost (Spoof Host = Host Fals) este un sistem care permite mascarea hostname-urilor reale ale utilizatorilor cu hostname-uri custom pentru:

  • Protecția identității (ascunderea IP-ului real)
  • Organizare (hostname-uri distinctive pentru staff/VIP)
  • Branduri custom (ex: admin.underchat.org, vip.underchat.org)

Este o funcționalitate de securitate și personalizare pentru utilizatori autorizați.


🎯 SCOP

Problema FĂRĂ Spoofhost:

Când un utilizator se conectează la IRC, hostname-ul său este vizibil public:

[14:30] * Joins: User (user@203.0.113.45)
/WHOIS User
User is user@203.0.113.45 * Real Name
#              ^^^^^^^^^^^ IP VIZIBIL!

Riscuri:

  • IP-ul real este expus → vulnerabil la atacuri DDoS
  • ISP-ul este vizibil → informații despre locație
  • Tracking între canale → lipsă de anonimat

Soluția CU Spoofhost:

[14:30] * Joins: Admin (admin@staff.underchat.org)
/WHOIS Admin
Admin is admin@staff.underchat.org * Network Admin
#              ^^^^^^^^^^^^^^^^^^^^^ HOSTNAME CUSTOM!

Avantaje:

  • IP-ul real este ascuns
  • Identitate profesională (staff.underchat.org)
  • Protecție împotriva DDoS
  • Brandind custom

🔧 CUM FUNCȚIONEAZĂ?

Mecanismul:

  1. Autentificare: User se conectează normal
  2. Aplicare Spoofhost: Fie automat (autoapply), fie manual cu /SETHOST
  3. Transformare: user@realip.comuser@custom.underchat.org
  4. Vizibilitate: Toată lumea vede hostname-ul fals

📝 SINTAXĂ ÎN ircd.conf

Formatul de bază:

Spoofhost "hostname.custom.org" {
    pass = "parola_secreta";
    host = "*@*.provider.com";
    autoapply = no;
    ismask = no;
    matchusername = yes;
};

Parametri:

Parametru Obligatoriu Descriere
"hostname" DA Hostname-ul fals care va fi afișat (poate include username: user@host)
pass NU Parola pentru /SETHOST hostname (dacă user aplică manual)
host DA Hostmask care se potrivește (pentru autoapply sau restricție acces)
autoapply NU yes = aplicare automată, no = necesită /SETHOST (default: no)
ismask NU yes = hostname-ul conține wildcards (*, ?), no = hostname fix
matchusername NU yes = verifică și username-ul din hostmask (default: yes)

💡 EXEMPLE PRACTICE

Exemplu 1: Spoofhost AUTOMAT pentru Staff

Spoofhost "staff.underchat.org" {
    host = "*@10.0.0.*";
    autoapply = yes;
};

Funcționare:

  • Oricine se conectează de pe 10.0.0.* (IP-uri interne/VPN)
  • Primește AUTOMAT hostname: user@staff.underchat.org
  • NU necesită parolă sau comandă

Rezultat:

# User se conectează de pe 10.0.0.25:
[14:30] * Joins: Admin (admin@staff.underchat.org)
#                         ^^^^^^^^^^^^^^^^^^^^^^^^ AUTOMAT!

Exemplu 2: Spoofhost MANUAL cu Parolă

Spoofhost "vip.underchat.org" {
    pass = "parola_vip_123";
    host = "*";
    autoapply = no;
};

Funcționare:

  • Orice user poate solicita acest hostname
  • Trebuie să folosească comanda: /SETHOST vip.underchat.org parola_vip_123
  • Hostname-ul se schimbă doar după autentificare

Utilizare:

# User se conectează normal:
/WHOIS User
User is user@203.0.113.45

# User aplică spoofhost manual:
/SETHOST vip.underchat.org parola_vip_123

# Serverul confirmă:
:server NOTICE User :Activated host: vip.underchat.org

# Acum hostname-ul este schimbat:
/WHOIS User
User is user@vip.underchat.org
#              ^^^^^^^^^^^^^^^^^ SCHIMBAT!

Exemplu 3: Spoofhost cu USERNAME Custom

Spoofhost "admin@admin.underchat.org" {
    host = "adminuser@*";
    autoapply = yes;
    matchusername = yes;
};

Funcționare:

  • Potrivește doar user-i cu username adminuser
  • Aplică automat hostname: admin@admin.underchat.org
  • Include și user-ul în spoofhost!

Rezultat:

# User cu username "adminuser" se conectează:
[14:30] * Joins: Boss (admin@admin.underchat.org)
#                       ^^^^^^^^^^^^^^^^^^^^^^^^^ user+host custom!

Exemplu 4: Spoofhost cu WILDCARD (ismask)

Spoofhost "*.underchat.org" {
    pass = "parola_wildcard";
    host = "*@trusted.provider.com";
    autoapply = no;
    ismask = yes;
};

Funcționare:

  • ismask = yes → hostname-ul conține wildcards
  • User poate alege: staff.underchat.org, vip.underchat.org, anything.underchat.org
  • PERICOL: User poate evada ban-uri dacă nu e supervizat!

Utilizare:

# User solicită hostname custom:
/SETHOST myname.underchat.org parola_wildcard

# Hostname se schimbă în ce a ales:
/WHOIS User
User is user@myname.underchat.org
#              ^^^^^^^^^^^^^^^^^^^^ Ales de user!

⚠️ ATENȚIE: Folosește ismask doar pentru utilizatori de încredere (operatori)!


Exemplu 5: Spoofhost pentru ISP Specific

Spoofhost "protected.underchat.org" {
    host = "*@*.dial-up.provider.com";
    autoapply = yes;
};

Funcționare:

  • Oricine se conectează de pe *.dial-up.provider.com
  • Primește automat: user@protected.underchat.org
  • Protecție pentru utilizatori de pe ISP cunoscut

🎓 CAZURI DE UTILIZARE COMUNE

1. Staff și Operatori

# Administratori
Spoofhost "admin.underchat.org" {
    host = "*@10.0.0.*";
    autoapply = yes;
};

# Moderatori
Spoofhost "moderator.underchat.org" {
    host = "*@172.16.0.*";
    autoapply = yes;
};

# Operatori globali
Spoofhost "staff.underchat.org" {
    pass = "staff_password";
    host = "*";
    autoapply = no;
};

2. Utilizatori VIP/Premium

# VIP manual (cu parolă)
Spoofhost "vip.underchat.org" {
    pass = "vip_secret_2026";
    host = "*";
    autoapply = no;
};

# Premium automat (pe baza IP-ului)
Spoofhost "premium.underchat.org" {
    host = "*@premium-vpn.service.com";
    autoapply = yes;
};

3. Protecție DDoS pentru Toți

# Ascunde IP-uri pentru toată lumea
Spoofhost "users.underchat.org" {
    host = "*";
    autoapply = yes;
};

⚠️ NOTĂ: Acest lucru ascunde TOATE IP-urile! Poate face debugging-ul dificil.


4. Hostname-uri Distinctive pentru Locații

# Utilizatori din Europa
Spoofhost "eu.users.underchat.org" {
    host = "*@*.eu";
    autoapply = yes;
};

# Utilizatori din US
Spoofhost "us.users.underchat.org" {
    host = "*@*.us";
    autoapply = yes;
};

⚙️ CONFIGURARE ÎN ircd.conf

Exemplu Complet pentru UnderChat:

# ============================================================================
# SECȚIUNE: SPOOFHOST - Mascarea Hostname-urilor
# ============================================================================

# Administratori - Automat pentru IP-uri interne
Spoofhost "admin.underchat.org" {
    host = "*@10.0.0.*";
    autoapply = yes;
};

# Staff - Manual cu parolă
Spoofhost "staff.underchat.org" {
    pass = "staff_password_2026";
    host = "*";
    autoapply = no;
};

# VIP - Manual cu parolă
Spoofhost "vip.underchat.org" {
    pass = "vip_secret";
    host = "*";
    autoapply = no;
};

# Protecție utilizatori - Automat pentru toată lumea
Spoofhost "users.underchat.org" {
    host = "*";
    autoapply = yes;
};

# Operatori cu hostname custom (freeform pentru operatori)
# Necesită privilege "freeform" în Operator block
Spoofhost "*.underchat.org" {
    host = "*@trusted.network.*";
    autoapply = no;
    ismask = yes;
};

🔐 PERMISIUNI OPERATOR (freeform)

Pentru ca operatorii să poată folosi /SETHOST cu hostname-uri arbitrare (fără Spoofhost pre-configurat), trebuie să aibă privilegiul freeform:

Operator {
    name = "AdminUser";
    password = "$MD5$...";
    host = "*@*";
    class = "Opers";
    
    # Permisiuni
    privileges = "freeform";  # Permite /SETHOST fără restricții
};

Cu freeform:

/SETHOST anything.i.want.org
# Funcționează! (fără să fie configurat în Spoofhost block)

🔍 COMENZI UTILIZATOR

1. /SETHOST - Aplicare Spoofhost Manual

# Sintaxă:
/SETHOST hostname [parola]

# Exemplu cu parolă:
/SETHOST vip.underchat.org vip_secret

# Exemplu fără parolă (pentru operatori cu freeform):
/SETHOST custom.underchat.org

2. /WHOIS - Verificare Hostname

/WHOIS User
User is user@vip.underchat.org * VIP User
#              ^^^^^^^^^^^^^^^^^ Spoofhost activ

📊 AVANTAJE vs DEZAVANTAJE

AVANTAJE:

  1. Protecție IP - Ascunde IP-uri reale împotriva DDoS
  2. Brandind - Hostname-uri professional (staff.underchat.org)
  3. Organizare - Diferențiază staff/VIP/users
  4. Flexibilitate - Automat sau manual, cu/fără parolă
  5. Personalizare - Wildcards pentru hostname-uri custom

⚠️ DEZAVANTAJE:

  1. Dificultate debugging - IP-uri ascunse → mai greu de identificat abuzatori
  2. Risc ismask - Wildcard-uri pot fi abuzate pentru evadarea ban-urilor
  3. Configurare necesară - Trebuie planificat și configurat manual
  4. Confuzie - Prea multe spoofhost-uri → dificil de gestionat

🚨 BEST PRACTICES

1. Folosește autoapply pentru staff (IP-uri interne)

# BINE:
Spoofhost "staff.underchat.org" {
    host = "*@10.0.0.*";
    autoapply = yes;
};

2. Folosește parole PUTERNICE pentru spoofhost-uri publice

# EVITĂ:
pass = "123456";  # ❌ SLAB!

# BINE:
pass = "vip_Str0ng_P@ssw0rd_2026";  # ✅ PUTERNIC!

3. NU folosi ismask pentru utilizatori obișnuiți

# ❌ PERICOL:
Spoofhost "*.underchat.org" {
    host = "*";  # Oricine poate!
    ismask = yes;
};

# ✅ SIGUR:
Spoofhost "*.underchat.org" {
    host = "*@trusted.admin.network";  # Doar admini
    ismask = yes;
};

4. Documentează în MOTD hostname-urile disponibile

# În ircd.motd:
-
- Hostname-uri disponibile:
-   staff.underchat.org (automat pentru staff)
-   vip.underchat.org (manual, contactează admin)
-   users.underchat.org (automat pentru toți)
-
- Pentru /SETHOST contactează: admin@underchat.org
-

5. Păstrează log-urile IP-urilor REALE

Chiar dacă hostname-urile sunt spoofed, serverul TREBUIE să logeze IP-urile reale pentru:

  • Identificarea abuza torilor
  • Investigații securitate
  • Debugging probleme

🔧 TROUBLESHOOTING

Problemă: /SETHOST nu funcționează

Cauze posibile:

  1. Spoofhost NU este configurat

    grep 'Spoofhost "' /home/ircd/ircd/lib/ircd.conf
    # Dacă nu găsește → Trebuie adăugat
    
  2. Parola greșită

    /SETHOST vip.underchat.org wrong_password
    # Output:
    :server NOTICE nick :Invalid password for spoofhost
    
  3. User nu se potrivește cu host pattern

    # Config:
    Spoofhost "vip.underchat.org" {
        host = "*@specific.provider.com";
        pass = "secret";
    };
    
    # User de pe alt ISP:
    user@other.provider.com
    # → NU se potrivește → BLOCAT!
    
  4. SETHOST_USER feature dezactivat

    # Verifică în features:
    features {
        "SETHOST" = "TRUE";  # Trebuie TRUE!
    };
    

Soluție generală:

# 1. Verifică că Spoofhost există
grep -A 4 'Spoofhost "vip' /home/ircd/ircd/lib/ircd.conf

# 2. Verifică că SETHOST este activat
grep SETHOST /home/ircd/ircd/lib/ircd.conf

# 3. Testează cu hostmask corect
# În IRC:
/SETHOST vip.underchat.org parola_corecta

🎯 INTEGRARE CU HOST HIDING

Spoofhost și Host Hiding (feature-ul built-in) sunt diferite:

Host Hiding (Built-in):

features {
    "HOST_HIDING" = "TRUE";
    "HIDDEN_HOST" = "Users.UnderChat";
    "HOST_HIDING_PREFIX" = "UnderChat";
};
  • Ascunde AUTOMAT IP-uri cu hash
  • Format: UnderChat-HASH.domain.tld
  • NU necesită configurare per-user

Spoofhost (Custom):

Spoofhost "custom.underchat.org" {
    host = "*";
    autoapply = yes;
};
  • Hostname-uri CUSTOM specifice
  • Control granular per-user/grup
  • Necesită configurare manuală

Pot fi folosite ÎMPREUNĂ:

  • Host Hiding pentru utilizatori normali
  • Spoofhost pentru staff/VIP

📚 REFERINȚE

  • Cod sursă: ircd/s_conf.c (funcția find_shost_conf)
  • Exemplu config: doc/example.conf (liniile 954-987)
  • Feature SETHOST: Controlează dacă /SETHOST este disponibil

🎯 CONCLUZIE

Spoofhost = Mascarea hostname-urilor pentru protecție și brandind

Transformă hostname-uri reale:

user@203.0.113.45  →  user@staff.underchat.org
user@isp.provider  →  user@vip.underchat.org

Este o funcționalitate esențială pentru:

  • Protecția identității utilizatorilor
  • Brandind profesional pentru staff
  • Organizare ierarhică (admin/staff/vip/users)
  • Securitate împotriva DDoS

Data: 14 Februarie 2026
Versiune: 1.0
Pentru: UnderChat IRCd v1.4.0+


🚀 QUICK START

Pentru a adăuga Spoofhost în rețeaua ta:

# Adaugă în /home/ircd/ircd/lib/ircd.conf:

# Staff automat
Spoofhost "staff.underchat.org" {
    host = "*@10.0.0.*";
    autoapply = yes;
};

# VIP manual
Spoofhost "vip.underchat.org" {
    pass = "vip_password";
    host = "*";
    autoapply = no;
};

# Protecție toți utilizatorii
Spoofhost "users.underchat.org" {
    host = "*";
    autoapply = yes;
};

# În features, asigură-te că:
features {
    "SETHOST" = "TRUE";
};

Restart IRCd și testează:

/SETHOST vip.underchat.org vip_password
/WHOIS YourNick

GATA!