Eggdrop

Eggdrop NickServ Identify: Botun Nickini Otomatik Doğrulamak

· Güncelleme: · 5 dk okuma

Eggdrop NickServ Identify: Botun Nickini Otomatik Doğrulamak
İçindekiler
  1. Yöntem 1: Bağlantı Olayında Identify
  2. Yöntem 2: NickServ'in İsteğine Cevap Vermek
  3. Kanallara Erken Girme Sorunu
  4. Nick Geri Alma: GHOST ve RECOVER
  5. Parolayı Güvende Tutmak
  6. Sık Karşılaşılan Sorunlar
  7. Services Yazılımına Göre Farklar
  8. Identify Durumunu Takip Etmek
  9. Sonuç

Kayıtlı bir nick kullanan bot, bağlandığında NickServ'e kim olduğunu kanıtlamalıdır. Aksi hâlde birkaç dakika içinde nicki zorla değiştirilebilir, kanal erişim listelerinden yararlanamaz ve ChanServ'den op alamaz. Modern ağlarda bu iş için SASL en iyi yoldur, ancak SASL desteklemeyen veya services'i farklı çalışan ağlar hâlâ vardır. Bu rehberde Eggdrop NickServ identify işlemini otomatikleştirmeyi ve bunu güvenli şekilde yapmayı anlatıyoruz.

Yöntem 1: Bağlantı Olayında Identify

Eggdrop, sunucuya bağlantı tamamlandığında bir olay tetikler. Bu olaya bağlanan bir prosedür, NickServ'e identify mesajı gönderebilir:

set ns_parola "guclu-bir-parola"

bind evnt - init-server ns_identify

proc ns_identify {type} {
  global ns_parola
  putquick "PRIVMSG NickServ :IDENTIFY $ns_parola"
}

evnt bind'i, bot içindeki olaylara bağlanır; init-server olayı sunucu bağlantısı tamamlandığında tetiklenir. putquick kullanmamızın nedeni, identify mesajının kuyruktaki diğer mesajlardan önce gönderilmesini sağlamaktır. Bind türleri hakkında daha fazla bilgi için Tcl bind komutları yazımıza bakın.

Bazı ağlarda NickServ'e PRIVMSG yerine sunucunun sunduğu NS veya NICKSERV komutlarıyla mesaj göndermek daha güvenlidir. Bu komutlar mesajın gerçekten services'e gitmesini garanti eder; araya girmiş sahte bir "NickServ" kullanıcısı parolanızı alamaz. Ağınızın bu komutları destekleyip desteklemediğini öğrenmek için yardım kanalına danışın.

Yöntem 2: NickServ'in İsteğine Cevap Vermek

Bazı services yazılımları, kayıtlı bir nickle bağlanan kullanıcıya "Bu nick kayıtlı, lütfen identify olun" gibi bir notice gönderir. Bu mesajı yakalayıp cevap vermek de bir yöntemdir:

bind notc - "*identify*" ns_cevap

proc ns_cevap {nick uhost hand text dest} {
  global ns_parola
  if {![string equal -nocase $nick "NickServ"]} { return }
  if {![string match -nocase "*@services.*" $uhost]} { return }
  putquick "PRIVMSG NickServ :IDENTIFY $ns_parola"
}

Buradaki iki kontrol çok önemlidir. Birincisi mesajın NickServ nickinden geldiğini, ikincisi ise host bilgisinin services sunucusuna ait olduğunu doğrular. Host kalıbını kendi ağınızdaki services hostuna göre düzenlemelisiniz. Bu kontroller olmadan herhangi biri bota "identify" kelimesi içeren bir notice göndererek botun parolasını bir kanala veya başka bir kullanıcıya göndermesini sağlamaya çalışabilir. Gerçi mesaj NickServ'e gittiği için doğrudan sızmaz, ama sahte bir NickServ'in bulunduğu durumlarda risk oluşur.

Kanallara Erken Girme Sorunu

Eggdrop bağlantı kurulur kurulmaz kanallara girmeye başlar. NickServ cevabı birkaç saniye gecikirse bot, identify olmadan kanallara girer. Bunun birkaç sonucu olabilir: Yalnızca kayıtlı kullanıcılara açık kanallara giremez, ChanServ'in otomatik op'unu kaçırır veya cloak uygulanmadan gerçek host görünür.

Çözümler:

  1. SASL kullanmak: Sorunu kökten çözer.
  2. Kanalları geçici olarak pasif tutmak: Kanalları +inactive olarak işaretleyip identify onayı geldikten sonra açmak.
  3. ChanServ'den op istemek: Identify sonrasında ChanServ'e op isteği göndermek.

İkinci yöntem için NickServ'in "Şifre kabul edildi" benzeri onay mesajını yakalayıp kanalları aktif hâle getiren bir prosedür yazılabilir. Mesajın tam metni services yazılımına ve dil ayarına göre değişir; kendi ağınızdaki metni loglardan öğrenin.

Nick Geri Alma: GHOST ve RECOVER

Bot yeniden bağlandığında eski bağlantısı hâlâ ağda "hayalet" olarak duruyorsa veya biri botun nickini almışsa bot farklı bir nickle bağlanır. Bu durumda nick geri alma komutları kullanılır:

putquick "PRIVMSG NickServ :RECOVER BotNick $ns_parola"

Anope ve Atheme'de komut adları ve davranışları küçük farklılıklar gösterir. Bazı sürümlerde GHOST, bazılarında RECOVER veya REGAIN kullanılır. Kendi ağınızda /msg NickServ HELP ile mevcut komutları kontrol edin. Komutların ayrıntıları NickServ komutları yazımızda.

Eggdrop'un altnick ayarı, ana nick alınamadığında kullanılacak yedek nicki belirler. Bot, yedek nickle bağlandığında ana nicki geri almayı denemek için keep-nick ayarı kullanılabilir. Bu ayarların ayrıntıları eggdrop.conf ayarları yazımızda.

Parolayı Güvende Tutmak

  • Parolayı script içine yazmak yerine ayrı bir dosyada tutup izinlerini 600 yapın.
  • Script veya yapılandırma dosyasını paylaşırken parolayı mutlaka silin.
  • Bot için kişisel hesabınızdan farklı bir parola kullanın.
  • Partyline log'larında parolanın görünmediğinden emin olun; bazı hata ayıklama ayarları gönderilen mesajları kaydedebilir.
  • TLS kullanarak parolanın ağ üzerinde düz metin olarak gitmesini önleyin. Bkz. SSL bağlantı.

Sık Karşılaşılan Sorunlar

BelirtiOlası neden
Bot identify olmuyorBind olayı tetiklenmiyor veya NickServ adı farklı
"Invalid password"Parola yanlış veya hesap adı farklı
Bot kanallara identify olmadan giriyorNickServ cevabı gecikiyor
Nick sürekli değiştiriliyorIdentify başarısız, nick koruması devrede
Parola kanala yazılmışHatalı script; derhal parolayı değiştirin

Services Yazılımına Göre Farklar

Farklı ağlar farklı services yazılımları kullanır ve identify komutunun biçimi de buna göre değişebilir. Anope tabanlı ağların çoğunda IDENTIFY parola yeterlidir. Atheme tabanlı ağlarda ise hesap adı ile nick farklıysa IDENTIFY hesap parola biçimini kullanmanız gerekebilir. Bu ayrım, botun nicki ile kayıtlı hesabın adı farklı olduğunda önem kazanır. Örneğin bot, birden fazla nicki tek bir hesap altında gruplamışsa ve şu anda yedek nickiyle bağlıysa, yalnızca parola göndermek yetersiz kalabilir. İki services yazılımının farklarını Anope ve Atheme karşılaştırması yazımızda ayrıntılı ele aldık.

Ayrıca bazı ağlar NickServ'e farklı bir isim verir veya services nicklerini ağ adına göre özelleştirir. Scriptinizdeki NickServ adını ve beklenen host kalıbını ağınıza göre ayarlamayı unutmayın. Bunun için kendi istemcinizden /whois NickServ komutunu çalıştırmanız yeterlidir; çıktıdaki host bilgisini scriptteki kontrol kalıbına yazabilirsiniz.

Identify Durumunu Takip Etmek

Botun o anda identify olup olmadığını bilmek, diğer scriptlerin doğru davranması için faydalıdır. Örneğin ChanServ'den op isteyen bir prosedür, bot henüz identify olmamışsa isteği boşuna gönderir. Basit bir çözüm, NickServ'in onay mesajı geldiğinde global bir değişkeni bire çekmek ve bağlantı koptuğunda sıfırlamaktır. Diğer prosedürler bu değişkene bakarak hareket eder. Bağlantı kopması olayını yakalamak için de evnt bind'inin ilgili olay türü kullanılabilir.

Kısacası identify işlemi, botun ağdaki kimliğinin temelidir ve küçük bir ayrıntı gibi görünse de botun bütün kanal yetkilerini doğrudan etkiler.

Sonuç

NickServ identify, SASL olmayan ağlarda botun kimliğini kanıtlamanın klasik yoludur. Bağlantı olayını kullanın, NickServ mesajlarının kaynağını doğrulayın, nick geri alma komutlarını ağınıza göre ayarlayın ve parolayı güvende tutun. Mümkün olan her ağda ise SASL'a geçin. Botunuzun çöktüğünde kendiliğinden yeniden başlaması için sıradaki rehberimiz autobotchk ve crontab.

IRC sorunun mu var? Kanalda birlikte çözelim.

💬 Kanala Bağlan

Sıkça Sorulan Sorular

SASL varken NickServ identify kullanmalı mıyım?

Hayır. Ağ SASL destekliyorsa SASL tercih edilmelidir. NickServ identify yalnızca SASL olmayan ağlar için bir yedek yöntemdir.

Bot neden kanallara identify olmadan giriyor?

Eggdrop bağlantı kurulur kurulmaz kanallara girer. NickServ'in cevabını beklemek için kanalları geçici olarak inactive tutabilir veya SASL kullanabilirsiniz.

NickServ'den gelen her mesaja güvenebilir miyim?

Hayır. Mesajın gerçekten services'ten geldiğini nick ve host bilgisini kontrol ederek doğrulamalısınız.