set::whois-details: WHOIS çıktısını parça parça yönetmek
UnrealIRCd 6 ile gelen set::whois-details bloğu, /WHOIS yanıtındaki her bilgi parçasının kime, ne kadar gösterileceğini belirler. Belgelere göre her öğe için üç kullanıcı grubu vardır:
| Grup | Anlamı |
|---|---|
| everyone | Tüm kullanıcılar |
| self | Kullanıcının kendisini /WHOIS'lemesi |
| oper | IRC operatörleri |
Her grup için üç düzey tanımlanabilir: none (gösterilmez), full (tüm bilgi gösterilir) ve limited (sınırlı bilgi gösterilir). limited düzeyinin anlamı öğeye göre değişir:
| Öğe | limited ne yapar |
|---|---|
| channels | Gizli (+s) kanalları göstermez; full bunları da gösterir |
| oper | Oper giriş adını ve operclass bilgisini göstermez |
| secure | TLS sürümünü ve şifre takımını göstermez |
| idle | Kullanıcının +I modu ile set::hide-idle-time ayarına göre davranır |
Varsayılan değerler neyi gösteriyor?
Belgelerdeki varsayılan yapılandırmadan gizlilik açısından öne çıkan öğeler:
| Öğe | everyone | self | oper |
|---|---|---|---|
| realhost (gerçek host/IP) | none | full | full |
| modes (kullanıcı modları) | none | full | full |
| channels | limited | full | full |
| oper | limited | full | full |
| secure | limited | full | full |
| idle | limited | full | full |
| reputation, geo, asn, security-groups, shunned | none | none | full |
| certfp, account, swhois, server, away | full | - | - |
Görüldüğü gibi varsayılanlar zaten makul bir gizlilik sağlar: gerçek IP, itibar puanı, ülke ve ASN bilgisi normal kullanıcılara gösterilmez. Ancak bazı öğeler topluluğunuzun ihtiyacına göre daha da daraltılabilir.
Yalnızca değiştirmek istediğiniz öğeyi yazın
Belgelere göre tek bir öğeyi değiştirmek için yalnızca o öğeyi belirtmek yeterlidir; tüm bloğu kopyalamanız gerekmez. Örneğin normal kullanıcıların birbirlerinin kanal listesini hiç görmemesi için:
CODE TERMINAL
set {
whois-details {
channels { everyone none; self full; oper full; }
}
}Başka örnekler:
CODE TERMINAL
set {
whois-details {
/* TLS sertifika parmak izini yalnızca kişi ve operler görsün */
certfp { everyone none; self full; oper full; }
/* Sunucu adı normal kullanıcılara gizlensin */
server { everyone none; self full; oper full; }
}
}certfp öğesi varsayılan olarak herkese açıktır. Sertifika parmak izi kalıcı bir tanımlayıcı olduğu için, farklı nickler kullanan aynı kişinin eşleştirilmesine yarayabilir; gizlilik öncelikli ağlarda daraltılması düşünülebilir. server öğesini gizlemek ise aşağıda anlatılan topoloji gizleme ayarlarıyla birlikte anlam kazanır.
Boşta kalma süresi: set::hide-idle-time ve +I
/WHOIS'teki idle süresi, bir kullanıcının ekran başında olup olmadığını ve günlük aktivite düzenini ortaya koyar. set::hide-idle-time::policy dört değer alır:
| Politika | Davranış |
|---|---|
| never | Boşta kalma süresi herkese her zaman gösterilir |
| always | Boşta kalma süresi her zaman gizlenir |
| usermode | Gösterilir, ancak kullanıcı +I modunu açtıysa gizlenir; tüm kullanıcılar +I ayarlayabilir |
| oper-usermode | usermode ile aynı, ancak +I modunu yalnızca IRCOp'lar ayarlayabilir (varsayılan) |
Kullanıcılarınızın kendi idle sürelerini gizleyebilmesini istiyorsanız:
CODE TERMINAL
set {
hide-idle-time { policy usermode; }
}Ardından kullanıcı şu komutla modu açar:
CODE TERMINAL
/MODE KullaniciAdi +IBelgelere göre hangi politika seçilirse seçilsin IRCOp'lar kullanıcıların idle süresini görmeye devam eder.
Gizlilik için kullanıcı modları
| Mod | Modül | Açıklama |
|---|---|---|
| +i | yerleşik | "Görünmez" kip; kullanıcı, kanalın dışından yapılan /WHO ve /NAMES sorgularında gizlenir |
| +p | usermodes/privacy | Girilen kanalları /WHOIS çıktısından gizler |
| +I | yerleşik | /WHOIS'te boşta kalma süresini gizler |
| +x | yerleşik | Maskelenmiş (cloaked) host verir |
| +H | yerleşik | IRCOp durumunu gizler; yalnızca IRCOp'lar kullanabilir |
| +W | usermodes/showwhois | Birisi size /WHOIS yaptığında bildirim gösterir; yalnızca IRCOp'lar kullanabilir |
+p modu, whois-details::channels ayarını ağ genelinde değiştirmek istemediğiniz ama kullanıcıya kendi kanal listesini gizleme seçeneği sunmak istediğiniz durumlar için uygundur. Kullanıcılar bu modları set::modes-on-connect ile bağlantıda otomatik olarak alabilir. Bir modun kullanıcı tarafından kapatılmasını engellemek için set::restrict-usermodes kullanılır; bu ayarda modlar + ya da - olmadan yazılır:
CODE TERMINAL
set {
modes-on-connect "+ixp";
restrict-usermodes "p";
}Belgelere göre UnrealIRCd 6.1.1 ve sonrasında restrict-usermodes değeri bir güvenlik grubu için ayrı bir set bloğunda geçersiz kılınabilir. Böylece örneğin kayıtlı kullanıcılara farklı bir kural uygulanabilir.
Ağ topolojisini gizlemek: hide-ulines ve flat-map
/MAP ve /LINKS komutları, hangi sunucunun hangisine bağlı olduğunu gösterir. Bu bilgi, bir saldırganın hub sunucuyu ya da services sunucusunu hedeflemesini kolaylaştırır. İki seçenek bu görünürlüğü azaltır:
| Ayar | Etkisi |
|---|---|
| set::options::hide-ulines | U:line tanımlı sunucular (ör. services) normal kullanıcılar için /MAP ve /LINKS çıktısında gizlenir |
| set::options::flat-map | Tüm sunucular doğrudan bağlıymış gibi gösterilir; hangi sunucunun hangisine bağlı olduğu anlaşılmaz |
CODE TERMINAL
set {
options {
hide-ulines;
flat-map;
}
}Belgeler hide-ulines kullanımını "çok yaygın" bir tercih olarak tanımlar. Hub-leaf mimarisi kullanan ağlarda flat-map, hub sunucunun kimliğini ilk bakışta gizleyerek DoS hedeflemesini zorlaştırır. Bu ayarlar operatörlerin görünümünü değiştirmez.
Gizli kanallar ve /LIST: set::hide-list
Gizli (+s) kanallar /LIST çıktısında her zaman gizlenir. Buna ek olarak set::hide-list ile kullanıcının deny channel { } kısıtlamaları nedeniyle zaten giremeyeceği kanallar da listeden çıkarılabilir:
CODE TERMINAL
set {
hide-list { deny-channel; }
}Bu ayar, yalnızca belirli gruplara açık kanalların adlarının genel listede görünmesini önler.
Ayarlayan bilgisi ve ban nedenleri
Konu, ban, istisna ve davet listelerinde "kim ayarladı" bilgisi de iz bırakır. Belgelere göre 6.1.1 ve sonrasında bu değerlerin varsayılanı nick-user-host oldu; önceki sürümlerde yalnızca nick gösteriliyordu.
| Ayar | Değerler | Varsayılan |
|---|---|---|
| set::topic-setter | nick, nick-user-host | nick-user-host (6.1.1+) |
| set::ban-setter | nick, nick-user-host | nick-user-host (6.1.1+) |
| set::hide-ban-reason | yes, no, auto | auto (6.1.3+) |
| set::hide-killed-by | yes, no | no |
Kanal operatörlerinin host bilgisinin konu ve ban listelerinden öğrenilmesini istemiyorsanız:
CODE TERMINAL
set {
topic-setter nick;
ban-setter nick;
}hide-ban-reason auto değeri, ban nedeni kullanıcının IP adresini ya da bir unrealircd.org adresini içeriyorsa nedeni başkalarından gizler; bu, yanlışlıkla IP ifşasını önlemek için 6.1.3'te varsayılan yapıldı. hide-killed-by yes ise /KILL sonrası çıkış mesajında "Killed by OperNick (Neden)" yerine yalnızca "Killed (Neden)" gösterir; böylece hangi operatörün işlem yaptığı açığa çıkmaz ve operatörler kişisel hedef hâline gelmez.
Örnek gizlilik odaklı yapılandırma
CODE TERMINAL
set {
whois-details {
channels { everyone none; self full; oper full; }
certfp { everyone none; self full; oper full; }
}
hide-idle-time { policy usermode; }
modes-on-connect "+ix";
options {
hide-ulines;
flat-map;
}
hide-list { deny-channel; }
topic-setter nick;
ban-setter nick;
hide-ban-reason auto;
hide-killed-by yes;
}Değişikliklerden sonra yapılandırmayı /REHASH ile yeniden yükleyin ve operatör olmayan bir test hesabıyla /WHOIS, /MAP, /LINKS ve /LIST çıktılarını kontrol edin. Gizleme ayarlarının hiçbiri IRCOp görünümünü kısıtlamaz; bu nedenle operatör hesaplarının güvenliği (argon2 parolalar, certfp doğrulaması, operclass ile en az yetki) gizlilik stratejisinin ayrılmaz parçasıdır.
Kaynaklar
- UnrealIRCd Set block: https://www.unrealircd.org/docs/Set_block
- UnrealIRCd set::whois-details: https://www.unrealircd.org/docs/Set_block#set::whois-details
- UnrealIRCd User modes: https://www.unrealircd.org/docs/User_modes
TR Siber Ekibi