Eggdrop SSL/TLS Bağlantısı: IRC Sunucusuna ve Botnet'e Şifreli Bağlanmak
İçindekiler
IRC'nin ilk yıllarında bütün trafik düz metin olarak akardı. Bot ile sunucu arasındaki her mesaj, NickServ'e gönderilen parolalar ve partyline'a giren yöneticilerin bilgileri, ağ üzerinde dinleme yapabilen herkes tarafından okunabilirdi. Bugün neredeyse bütün ciddi IRC ağları TLS destekli portlar sunuyor ve birçoğu parola içeren bağlantılarda TLS kullanılmasını öneriyor. Eggdrop SSL desteği sayesinde botunuz hem IRC sunucusuna hem de botnet içindeki diğer botlara şifreli bağlanabilir.
TLS Neden Önemli?
- Parolaların korunması: Bot NickServ'e identify olurken veya SASL ile giriş yaparken gönderdiği parola şifrelenir.
- Partyline güvenliği: Telnet ile partyline'a bağlanan yöneticilerin parolaları açık metin olarak gitmez.
- Botnet bütünlüğü: Botlar arasında aktarılan userfile ve komutlar araya giren biri tarafından okunamaz veya değiştirilemez.
- Ağ politikaları: Bazı ağlar belirli işlemler için TLS bağlantısını zorunlu tutar.
Sunucu tarafında TLS'in nasıl yapılandırıldığını merak ediyorsanız UnrealIRCd listen ve TLS portları yazımıza bakabilirsiniz.
1. TLS Destekli Derleme
Eggdrop'un TLS desteği, derleme sırasında sistemde OpenSSL geliştirme dosyalarının bulunmasına bağlıdır. Debian veya Ubuntu tabanlı bir sistemde bu paketin adı genellikle libssl-dev olur. Paket yüklüyse ./configure adımı TLS desteğini otomatik olarak etkinleştirir. Configure çıktısında TLS desteğiyle ilgili satırı mutlaka kontrol edin; destek bulunamadıysa bot şifresiz derlenir ve TLS ayarları çalışmaz. Kurulum adımlarının tamamı Eggdrop kurulumu yazımızda.
Çalışan bir botta TLS desteğini doğrulamak için partyline'da .status komutunu kullanabilirsiniz; çıktıda TLS kütüphanesine dair bilgi görünür.
2. Sunucuya TLS ile Bağlanmak
Eggdrop'ta sunucu satırında portun önüne + koymak, o sunucuya TLS ile bağlanılacağını belirtir:
server add irc.ornekag.net +6697
6697, IRC'de TLS için yaygın olarak kullanılan porttur, ancak her ağ farklı portlar kullanabilir. Bağlanacağınız ağın hangi portlarda TLS sunduğunu ağın web sitesinden veya yardım kanalından öğrenin. Birden fazla sunucu ekleyerek bir sunucu ulaşılamaz olduğunda diğerine geçilmesini sağlayabilirsiniz; hepsinin TLS portlarıyla tanımlandığından emin olun, aksi hâlde bot zaman zaman şifresiz bağlantıya düşebilir.
3. Sertifika Doğrulama
TLS'in tam koruma sağlaması için botun bağlandığı sunucunun gerçekten iddia ettiği sunucu olduğunu doğrulaması gerekir. Eggdrop, sertifika doğrulama davranışını ayarlamanız için seçenekler sunar. Bu ayarlarla sertifikanın geçerli bir otorite tarafından imzalanıp imzalanmadığını, süresinin dolup dolmadığını ve sunucu adıyla eşleşip eşleşmediğini kontrol ettirebilirsiniz.
Doğrulamayı tamamen kapatmak bağlantıyı yine şifreler, ancak araya giren birinin kendini sunucu gibi göstermesine karşı koruma sağlamaz. Bu yüzden doğrulamayı kapatmak son çare olmalıdır. Ağınız kendinden imzalı sertifika kullanıyorsa, sertifika parmak izini sabitlemek gibi daha güvenli alternatifleri değerlendirin. Ayar adları ve olası değerleri sürüme göre değişebileceği için eggdrop.conf örneğindeki ilgili bölümün açıklamalarını okuyun.
4. Botun Kendi Sertifikası
Botun bir istemci sertifikasına sahip olması iki durumda işe yarar: Bazı services yazılımları, kayıtlı hesaba sertifika parmak iziyle otomatik giriş (CertFP) imkânı sunar; ayrıca botnet içindeki TLS bağlantılarında botun kendini tanıtması gerekir. Bir sertifika oluşturmak için genellikle şu komut kullanılır:
openssl req -new -x509 -nodes -days 730 -keyout eggdrop.key -out eggdrop.crt
Oluşturulan dosyaların yolları eggdrop.conf'taki ilgili ayarlara yazılır. Anahtar dosyasının izinlerini yalnızca botu çalıştıran kullanıcının okuyabileceği şekilde sınırlayın. Sertifikanın parmak izini services hesabınıza eklemek için NickServ identify ve SASL yazılarımıza bakabilirsiniz.
5. Botnet ve Partyline için TLS
Listen satırında da portun önüne + koyarak şifreli bağlantı kabul edebilirsiniz:
listen +3333 all
Bot kayıtlarında karşı botun adresini yazarken portu yine + önekiyle belirtirseniz bağlantı TLS ile kurulur:
.+bot Hub hub.sunucu.net:+3333
Partyline'a telnet yerine TLS destekli bir istemciyle bağlanmak da mümkündür. Botların farklı veri merkezlerinde olduğu her botnet'te TLS kullanmanızı öneririz. Botnet yapısını botnet kurulumu yazımızda anlattık.
Sık Karşılaşılan TLS Hataları
| Hata | Olası neden | Çözüm |
|---|---|---|
| Bağlantı hemen kopuyor | TLS olmayan porta + ile bağlanılıyor | Ağın TLS portunu doğrulayın |
| Sertifika doğrulama başarısız | Sunucu sertifikası süresi dolmuş veya kendinden imzalı | Ağ yöneticisine bildirin veya parmak izi sabitleyin |
| TLS ayarları tanınmıyor | Bot TLS desteği olmadan derlenmiş | libssl-dev yükleyip yeniden derleyin |
| CA sertifikaları bulunamıyor | Sistem CA paketi eksik | ca-certificates paketini yükleyin |
| Botnet bağlantısı kurulmuyor | Bir taraf + ile, diğeri düz dinliyor | Her iki tarafta da aynı biçimi kullanın |
Gerçek Bir Senaryo
Bir bot, yıllardır 6667 portundan düz bağlantıyla çalışıyor ve her bağlantıda NickServ'e açık metin parolayla identify oluyor. Ağ yönetimi, düz bağlantılarda parola ile girişi kısıtlayacağını duyuruyor. Botun sahibi önce sunucuda libssl-dev paketini kurup Eggdrop'u yeniden derliyor, ardından sunucu listesindeki bütün satırları +6697 olacak şekilde güncelliyor. Bot yeniden başlatıldığında .status çıktısında TLS bağlantısı görünüyor. Bir sonraki adımda identify yöntemini SASL'a taşıyarak parolanın kanal girişinden önce, şifreli kanal üzerinden gönderilmesi sağlanıyor. Bütün süreç yarım saatten kısa sürüyor ve botun güvenliği belirgin şekilde artıyor.
TLS Sürümleri ve Şifre Takımları
TLS'in kendisi de zamanla gelişen bir protokoldür. Eski SSL sürümleri ve TLS 1.0 ile 1.1 artık güvensiz kabul edilir ve modern sunucuların çoğu bunları kabul etmez. Eggdrop, bağlantı sırasında kullanılacak protokol sürümlerini ve şifre takımlarını sınırlamanıza izin veren ayarlar sunar. Çoğu durumda varsayılan değerler yeterlidir, çünkü bunlar sistemdeki OpenSSL kütüphanesinin güvenli kabul ettiği seçenekleri kullanır. Ancak eski bir işletim sisteminde çalışan botlarda OpenSSL'in kendisi de eski olabilir. Bu yüzden botun çalıştığı sunucudaki sistem paketlerini düzenli olarak güncellemek, TLS güvenliğinin göz ardı edilen ama en önemli parçalarından biridir. Bir ağ eski protokolleri kapattığında aniden bağlanamayan botların büyük çoğunluğu bu sebeple sorun yaşar.
Bağlantıyı Doğrulamak
TLS ayarlarını yaptıktan sonra bağlantının gerçekten şifreli olduğundan emin olun. Partyline'daki durum çıktısı bağlantı bilgisini gösterir. Ayrıca bot kanaldayken bir IRC istemcisinden botun whois bilgisine bakabilirsiniz; birçok ağ, güvenli bağlantı kullanan istemciler için whois çıktısında özel bir satır gösterir. Bu satırı görmüyorsanız bot büyük olasılıkla düz bağlantıya düşmüştür ve sunucu listesini yeniden gözden geçirmeniz gerekir.
Sonuç
TLS, modern bir Eggdrop kurulumunun vazgeçilmez parçasıdır. Botu TLS desteğiyle derleyin, sunucu satırlarında + önekli portlar kullanın, sertifika doğrulamayı açık tutun ve botnet bağlantılarını da şifreleyin. Ağa güvenli şekilde kimlik doğrulamak için sıradaki rehberimiz Eggdrop SASL.
IRC sorunun mu var? Kanalda birlikte çözelim.
💬 Kanala BağlanSıkça Sorulan Sorular
Eggdrop'un TLS desteği olup olmadığını nasıl anlarım?
Botu derlerken configure çıktısında TLS desteğinin bulunduğu belirtilir. Çalışan botta da .status çıktısında TLS bilgisi görünür.
Sunucu satırında port önüne neden + konur?
Eggdrop'ta portun önündeki + işareti, o sunucuya TLS ile bağlanılacağını belirtir.
Sertifika doğrulama hatası alıyorum, ne yapmalıyım?
Sunucunun geçerli bir sertifika kullandığından ve sisteminizdeki CA sertifikalarının güncel olduğundan emin olun. Doğrulamayı kapatmak son çare olmalıdır.


