ircu2/SPOOFHOST_EXPLAINED.md

632 lines
14 KiB
Markdown

# 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**:
```irc
[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:**
```irc
[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.com``user@custom.underchat.org`
4. **Vizibilitate:** Toată lumea vede hostname-ul fals
---
## 📝 SINTAXĂ ÎN ircd.conf
### **Formatul de bază:**
```conf
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**
```conf
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:**
```irc
# User se conectează de pe 10.0.0.25:
[14:30] * Joins: Admin (admin@staff.underchat.org)
# ^^^^^^^^^^^^^^^^^^^^^^^^ AUTOMAT!
```
---
### **Exemplu 2: Spoofhost MANUAL cu Parolă**
```conf
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:**
```irc
# 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**
```conf
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:**
```irc
# User cu username "adminuser" se conectează:
[14:30] * Joins: Boss (admin@admin.underchat.org)
# ^^^^^^^^^^^^^^^^^^^^^^^^^ user+host custom!
```
---
### **Exemplu 4: Spoofhost cu WILDCARD (ismask)**
```conf
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:**
```irc
# 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**
```conf
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**
```conf
# 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**
```conf
# 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**
```conf
# 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**
```conf
# 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:**
```conf
# ============================================================================
# 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`**:
```conf
Operator {
name = "AdminUser";
password = "$MD5$...";
host = "*@*";
class = "Opers";
# Permisiuni
privileges = "freeform"; # Permite /SETHOST fără restricții
};
```
**Cu `freeform`:**
```irc
/SETHOST anything.i.want.org
# Funcționează! (fără să fie configurat în Spoofhost block)
```
---
## 🔍 COMENZI UTILIZATOR
### **1. /SETHOST - Aplicare Spoofhost Manual**
```irc
# 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**
```irc
/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)**
```conf
# BINE:
Spoofhost "staff.underchat.org" {
host = "*@10.0.0.*";
autoapply = yes;
};
```
### **2. Folosește parole PUTERNICE pentru spoofhost-uri publice**
```conf
# EVITĂ:
pass = "123456"; # ❌ SLAB!
# BINE:
pass = "vip_Str0ng_P@ssw0rd_2026"; # ✅ PUTERNIC!
```
### **3. NU folosi ismask pentru utilizatori obișnuiți**
```conf
# ❌ 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**
```bash
grep 'Spoofhost "' /home/ircd/ircd/lib/ircd.conf
# Dacă nu găsește → Trebuie adăugat
```
2. **Parola greșită**
```irc
/SETHOST vip.underchat.org wrong_password
# Output:
:server NOTICE nick :Invalid password for spoofhost
```
3. **User nu se potrivește cu host pattern**
```conf
# 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**
```conf
# Verifică în features:
features {
"SETHOST" = "TRUE"; # Trebuie TRUE!
};
```
### **Soluție generală:**
```bash
# 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):**
```conf
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):**
```conf
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:
```irc
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:**
```conf
# 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ă:**
```irc
/SETHOST vip.underchat.org vip_password
/WHOIS YourNick
```
**GATA!**