Eggdrop

Eggdrop SSL/TLS Bağlantısı: IRC Sunucusuna ve Botnet'e Şifreli Bağlanmak

· Güncelleme: · 5 dk okuma

Eggdrop SSL/TLS Bağlantısı: IRC Sunucusuna ve Botnet'e Şifreli Bağlanmak
İçindekiler
  1. TLS Neden Önemli?
  2. 1. TLS Destekli Derleme
  3. 2. Sunucuya TLS ile Bağlanmak
  4. 3. Sertifika Doğrulama
  5. 4. Botun Kendi Sertifikası
  6. 5. Botnet ve Partyline için TLS
  7. Sık Karşılaşılan TLS Hataları
  8. Gerçek Bir Senaryo
  9. TLS Sürümleri ve Şifre Takımları
  10. Bağlantıyı Doğrulamak
  11. Sonuç

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ı

HataOlası nedenÇözüm
Bağlantı hemen kopuyorTLS olmayan porta + ile bağlanılıyorAğın TLS portunu doğrulayın
Sertifika doğrulama başarısızSunucu sertifikası süresi dolmuş veya kendinden imzalıAğ yöneticisine bildirin veya parmak izi sabitleyin
TLS ayarları tanınmıyorBot TLS desteği olmadan derlenmişlibssl-dev yükleyip yeniden derleyin
CA sertifikaları bulunamıyorSistem CA paketi eksikca-certificates paketini yükleyin
Botnet bağlantısı kurulmuyorBir taraf + ile, diğeri düz dinliyorHer 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ğlan

Sı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.