Bir IRC ağında en büyük yetki IRC operatörlerindedir. Operatörler kullanıcıları ağdan atabilir, ağ genelinde ban koyabilir, spamfilter kurallarını değiştirebilir ve bazı yapılandırmalarda kanal modlarını zorla değiştirebilir. Bu nedenle ele geçirilen tek bir oper hesabı ağın tamamını riske atar. UnrealIRCd 6, operatör erişimini oper ve operclass blokları ile tanımlar. Doğru yapılandırıldığında hangi operatörün nereden bağlanabileceği, nasıl kimlik doğrulayacağı ve hangi komutları kullanabileceği ayrıntılı biçimde sınırlandırılabilir.

Bu rehberde oper bloğunun güvenli kurulumunu, argon2 parola karmalarını, sertifika parmak izi (certfp) ile parolasız kimlik doğrulamayı, operclass ile en az yetki ilkesini ve oper hesaplarının denetimini ele alıyoruz.

Oper bloğunun yapısı

UnrealIRCd 6'da bir oper bloğu şu öğelerden oluşur:

CODE TERMINAL
oper  {
    mask ;
    class ;
    operclass ;
    password ;
    require-modes ;
    maxlogins ;
    vhost ;
    swhois ;
    snomask ;
    modes ;
}


Zorunlu öğeler mask, class ve operclass'tır. Parola UnrealIRCd 6.0.4'ten itibaren isteğe bağlıdır; ancak bunun tek güvenli kullanımı, aşağıda anlatılan sertifika tabanlı doğrulama ya da auto-login senaryolarıdır.

1. Parolayı açık metin tutmayın: argon2

Yapılandırma dosyası yedeklere, sürüm kontrolüne veya paylaşılan sunuculara kopyalanabilir. Bu yüzden parolalar açık metin olarak yazılmamalıdır. UnrealIRCd, argon2 karması üretmek için yerleşik bir araç sunar:

CODE TERMINAL
./unrealircd mkpasswd argon2


Komut sizden parolayı ister ve $argon2id$ ile başlayan bir karma döndürür. IRC üzerinden /MKPASSWD argon2 parola komutu da kullanılabilir; ancak bu yöntem parolayı ağ üzerinden gönderdiği için yalnızca TLS bağlantıda ve güvendiğiniz sunucuda tercih edilmelidir. Windows'ta aynı işlem unrealircdctl mkpasswd argon2 ile yapılır.

CODE TERMINAL
oper ayse {
    class opers;
    mask { 203.0.113.0/24; *.ofis.example.net; }
    password "$argon2id$v=19$m=6144,t=2,p=2$...";
    operclass globop;
    swhois "Ağ Operatörü";
}


2. Maskeyi daraltın

mask *@* kullanmak, parolayı bilen herkesin dünyanın herhangi bir yerinden oper olabilmesi demektir. Mümkünse maskeyi operatörün sabit IP aralığı, kurumsal VPN çıkış adresi veya güvenilir bir host maskesiyle sınırlayın. Birden fazla maske süslü parantez içinde listelenebilir. Dinamik IP kullanan operatörler için maskeyi gevşetmek yerine aşağıdaki sertifika yöntemini tercih edin.

3. Sertifika parmak izi ile doğrulama (certfp)

En güçlü yöntem, operatörün istemci sertifikasını kimlik olarak kullanmaktır. Parola çalınsa bile saldırgan, özel anahtara sahip olmadığı için oper olamaz. Önce operatör kendi istemci sertifikasını üretir ve SHA-256 parmak izini alır:

CODE TERMINAL
openssl req -x509 -newkey ed25519 -days 730 -nodes -keyout ayse.key -out ayse.pem -subj "/CN=ayse"
openssl x509 -in ayse.pem -sha256 -noout -fingerprint


Çıktıdaki iki nokta üst üste işaretleri kaldırılarak parmak izi oper bloğuna yazılır:

CODE TERMINAL
oper ayse {
    class opers;
    mask *;
    password "e74d46f19ff468f5e8e349cc285df96585ba4f16b64902e334e6e76afe76a798" { certfp; };
    operclass globop;
    require-modes z;
}


require-modes z, /OPER komutunun yalnızca TLS ile bağlanmış kullanıcılar (+z) tarafından kullanılabilmesini sağlar. Sertifika parmak izi yalnızca TLS bağlantılarda bulunduğu için bu ayar ek bir güvenlik katmanıdır ve yapılandırma hatalarına karşı koruma sağlar. İstemci tarafında (WeeChat, irssi, HexChat) sertifika ve anahtar dosyası sunucu bağlantı ayarlarına eklenir. Parmak izi eşleştiğinde operatör, parola alanına herhangi bir değer girerek oper olabilir veya auto-login ile otomatik olarak oper yetkisi alabilir.

UnrealIRCd 6.2.1 ve sonrasında bir oper bloğunda birden fazla password girdisi tanımlanabilir. Bu özellik, sertifika yenileme döneminde eski ve yeni parmak izini kısa bir süre birlikte kabul etmek için kullanışlıdır. Geçiş tamamlandıktan sonra eski girdiyi kaldırmayı unutmayın.

4. operclass ile en az yetki

UnrealIRCd'de yetkiler oper bloğunda değil, operclass'ta tanımlanır. Varsayılan sınıflar yetki düzeyine göre sıralanır:


  • locop: Yalnızca yerel sunucuda KILL ve KLINE gibi sınırlı yetkiler.
  • globop: Ağ genelinde KILL ve GLINE dahil geniş yetkiler.
  • admin: globop yetkilerine ek olarak /SPAMFILTER gibi komutlar.
  • services-admin: /SAJOIN, /SAPART ve /SAMODE eklenir.
  • netadmin: En yüksek düzey; services botlarını hedefleyebilme dahil.



Her sınıfın bir de -with-override sürümü vardır. OperOverride, kanal banlarını aşmayı ve kanal operatörü olmadan mod değiştirmeyi mümkün kılar. Bu yetki kötüye kullanıma ve hesap ele geçirildiğinde ciddi zarara en açık yetkidir. Yalnızca gerçekten ihtiyacı olan az sayıda netadmin'e verilmelidir.

Varsayılan sınıflar ihtiyacınızı karşılamıyorsa kopyalayıp düzenlemek yerine parent ile kalıtım kullanın. Böylece UnrealIRCd'nin sonraki sürümlerinde eklenen izinler de otomatik olarak devralınır. Aşağıdaki örnek, yalnızca yerel kullanıcılara KILL uygulayabilen ve spamfilter kurallarında yalnızca "block" eylemli kural ekleyebilen bir moderatör sınıfı tanımlar:

CODE TERMINAL
operclass moderator {
    parent locop;
    permissions {
        kill { allow { local yes; } }
        spamfilter {
            allow { action block; }
        }
    }
}


Oper bloklarını bu sınıfa bağlayarak moderasyon ekibine ağ genelinde GLINE veya override yetkisi vermeden gündelik işlerini yapabilmelerini sağlarsınız. İzinlerin tam listesi resmî belgelerdeki "Operclass permissions" sayfasında yer alır.

5. Oturumları sınırlayın ve görünür kılın


  • maxlogins: Aynı oper hesabıyla eş zamanlı oturum sayısını sınırlar. maxlogins 1; ayarı, çalınan kimlik bilgilerinin fark edilmeden paralel kullanılmasını zorlaştırır.
  • Ayrı class: Operatörler için ayrı bir class bloğu tanımlayarak bağlantı ve flood sınırlarını normal kullanıcılardan bağımsız yönetin.
  • vhost ve swhois: Operatörün gerçek IP'sini gizlemek için vhost, rolünü kullanıcılara göstermek için swhois kullanılır.
  • snomask: Operatörün hangi sunucu bildirimlerini göreceğini belirler. Kimlik doğrulama hatalarını ve oper girişlerini izleyecek bir güvenlik operatörü tanımlamak iyi bir uygulamadır.



6. Denetim ve bakım

UnrealIRCd başarılı ve başarısız /OPER girişimlerini sunucu bildirimlerine ve günlüğe yazar. Log bloğunda oper olaylarını ayrı bir dosyaya yönlendirip bu dosyayı SIEM'e aktarmak, kaba kuvvet denemelerini ve beklenmedik oper girişlerini erken yakalamanızı sağlar. Kısa sürede tekrarlanan başarısız /OPER denemeleri bir hesabın hedef alındığını gösterir.

Periyodik bakım listesi:


  • Ayrılan operatörlerin bloklarını hemen kaldırın ve ./unrealircd rehash ile yapılandırmayı yeniden yükleyin.
  • Açık metin parola kalıp kalmadığını kontrol etmek için yapılandırmada argon2 veya certfp kullanmayan password satırlarını tarayın.
  • Yapılandırma dosyalarının izinlerini yalnızca ircd kullanıcısının okuyabileceği şekilde (chmod 600) ayarlayın.
  • Override yetkisine sahip hesapların listesini üç ayda bir gözden geçirin.



Sonuç

Oper hesabı güvenliği, IRC ağının genel güvenliğinin temelidir. argon2 karmaları, dar maskeler, certfp ile sertifika tabanlı doğrulama, require-modes z ve parent tabanlı operclass tanımlarıyla operatör erişimi hem daha güvenli hem de daha kolay denetlenebilir hale gelir. Hesap ele geçirilse bile saldırganın yapabileceklerini en aza indirmek, en az yetki ilkesinin IRC dünyasındaki karşılığıdır.

Kaynaklar

TR Siber Ekibi Yazar · X
← Ana sayfaya dön