İçeriğe geç

Metin2 Server Açarken Yapılan 8 Güvenlik Hatası ve Çözümleri

Hazırlayan: Metin2VIP Editörleri Yayın: 5 dk okuma

Kısaca: Metin2 server açarken en sık yapılan güvenlik hataları varsayılan veritabanı parolalarını değiştirmemek, parolaları herkesin okuyabildiği dosyalarda bırakmak, MySQL'in 3306 portunu ve db ile P2P portlarını dışarıya açmak, her yerden bağlanabilen tam yetkili veritabanı kullanıcıları açmak, TEST_SERVER'ı açık unutmak, yönetim girişini varsayılan parolayla bırakmak ve GM yetkilerini gevşek dağıtmaktır. Hepsi ayar dosyalarında ve güvenlik duvarında yapılacak birkaç değişiklikle kapanır.
İçindekiler
  1. 1. Varsayılan parolalarla açmak
  2. 2. Parolaları herkesin okuyabildiği dosyalarda bırakmak
  3. 3. MySQL portunu internete açık bırakmak
  4. 4. Her yerden bağlanabilen, tam yetkili veritabanı kullanıcıları
  5. 5. İç portları dışarıya açmak
  6. 6. TEST_SERVER'ı açık unutmak
  7. 7. Yönetim girişini varsayılan parolayla bırakmak
  8. 8. GM yetkilerini gevşek dağıtmak
  9. Bunlara ek olarak

Bir Metin2 serverini açmak için gereken dosyalar çoğunlukla hazır paketlerle gelir. Bu paketler kurulumu kolaylaştırmak için birkaç kapıyı açık bırakır: herkesin bildiği parolalar, dışarıya açık bir veritabanı portu, her yerden bağlanabilen kullanıcılar. Açılıştan önce kapatılmayan her biri, oyuncularının hesaplarını ve serverin kendisini riske atar. Aşağıda en sık yapılan sekiz hata ve her birinin nasıl kapatılacağı var.

1. Varsayılan parolalarla açmak

Hazır bir paketle gelen varsayılan veritabanı parolası, o paketi indiren herkesin bildiği bir değerdir ve aynı parola birden çok dosyada tekrar eder: kurulum ayarları, oyun kullanıcısını açan SQL dosyası, db çekirdeğinin conf.txt'si, çekirdeklerin CONFIG dosyaları, yedek ve proto betikleri. Bu parolayı bilen biri veritabanına ulaşabildiği anda hesapları, karakterleri ve eşyaları değiştirebilir.

Çözüm: Her bağlantı için uzun, rastgele ve birbirinden farklı parolalar üret, MySQL'in root hesabını uzaktan bağlantıya kapat. Parolayı değiştirdikten sonra geçtiği bütün dosyaları tek tek güncelle; birini unutmak çekirdeğin açılmamasına yol açar. CONFIG'teki SQL satırları boşlukla ayrıldığı için parolada boşluk kullanma. Dosyaların tamamı ve sırası server kurulumu yazısında.

2. Parolaları herkesin okuyabildiği dosyalarda bırakmak

CONFIG, ortak ayar dosyası GENERAL_CONFIG ve conf.txt veritabanı ile yönetim bilgilerini düz metin tutar. Bazı paketlerin yedek betiği MySQL root parolasını komut satırında kullanır; komut satırına yazılan parola aynı makinedeki süreç listesinde görünebilir. Server dosyalarını ya da bir yedeği başkasıyla paylaştığında bu bilgiler de onunla gider.

Çözüm: Ayar dosyalarının sahibini sunucuyu çalıştıran kullanıcı yap, başka kullanıcıların okumasını kapat. Yedek betiklerinde parolayı komut satırına yazmak yerine MySQL'in yalnız senin okuyabildiğin seçenek dosyasını kullan. Bir paketi ya da yedeği paylaşmadan önce içindeki parolaları, IP adreslerini ve yönetim satırlarını temizle. Dağıttığın istemcide hesap bilgisini kaydeden bir giriş ekranı özelliği varsa, şifreyi düz metin yazmadığından emin ol.

3. MySQL portunu internete açık bırakmak

Tek makineli bir kurulumda oyun çekirdekleri MySQL'e aynı makineden bağlanır; 3306 portunun dışarıya açık olmasının oyuna hiçbir faydası yoktur. Buna rağmen bazı paketlerin güvenlik duvarı şablonu bu portu dışarıya açık portlar arasında sayar. Açık port, parola denemelerine ve MySQL'in kendi açıklarına kapı bırakır.

Çözüm: Güvenlik duvarı şablonundaki açık portlar satırından 3306'yı çıkar. MySQL'i yalnız yerel adreste dinlet. Veritabanını uzaktan yönetmen gerekiyorsa portu açmak yerine SSH tüneli kullan.

4. Her yerden bağlanabilen, tam yetkili veritabanı kullanıcıları

Bazı paketlerin veritabanı klasöründe iki tehlikeli dosya bulunur: biri her yerden bağlanabilen bir kullanıcıya bütün veritabanlarında bütün yetkileri verir, öbürü her yerden bağlanabilen, varsayılan parolalı bir okuma kullanıcısı açar. Oyunun kendi kullanıcısı ise yalnız aynı makineden bağlanır ve yalnız SELECT, INSERT, UPDATE ve DELETE yapabilir; doğru başlangıç budur.

Çözüm: Oyun için yalnız yerelden bağlanan, yetkisi veri okuma ve yazmayla sınırlı tek bir kullanıcı kullan. Her yerden bağlanan kullanıcıları hiç açma, açtıysan sil. Tablo oluşturma ve değiştirme işleri için ayrı, yine yalnız yerelden bağlanan bir yönetici hesabı tut. Beş veritabanının ne tuttuğu veritabanları yazısında.

5. İç portları dışarıya açmak

Bir Metin2 serverinin üç tür portu vardır: oyuncuların bağlandığı PORT'lar, çekirdeklerin birbiriyle konuştuğu P2P_PORT'lar ve db çekirdeğinin dinlediği DB_PORT. Oyuncunun yalnız auth çekirdeğinin ve kanal çekirdeklerinin PORT'una ihtiyacı vardır. Öteki iki tür yalnız sunucunun kendi parçaları arasındaki trafik içindir; db çekirdeği ise BIND_IP verilmezse bütün ağ arayüzlerini dinler.

Çözüm: Güvenlik duvarında yalnız auth ve kanal PORT'larını aç; DB_PORT ve P2P_PORT'ları yalnız makinenin kendisine bırak. Çekirdekler aynı makinedeyse conf.txt'ye BIND_IP = 127.0.0.1 ekle. Bazı derlemeler bu kapıları kendi içinde de sınırlar, ama bu güvenlik duvarının yerini tutmaz. Port yapısı kanal ve portlar yazısında.

6. TEST_SERVER'ı açık unutmak

TEST_SERVER açıkken oyun GM listesine hiç bakmaz ve oyuna giren her karakteri en yüksek GM seviyesi sayar. Beceri kitabı bekleme süresi ve efsun değiştirme sınırı kalkar, bazı görev beklemeleri kısalır, oyunculara hata ayıklama mesajları düşer. Ortak ayar dosyası GENERAL_CONFIG çekirdeğin kendi CONFIG'inden sonra okunduğu için, CONFIG'te 0 yazan bir satır GENERAL_CONFIG'te unutulmuş bir 1'i ezmez.

Çözüm: Bu satırı canlı sunucuda hiçbir dosyada açık bırakma: TEST_SERVER: 0. Açılıştan sonra oyunda herkesin GM işaretiyle dolaştığı görülürse ilk bakılacak yer burasıdır. Diğer güvenlik satırları CONFIG ayarları yazısında.

7. Yönetim girişini varsayılan parolayla bırakmak

Oyun çekirdekleri duyuru, bağlantı kesme, yeniden yükleme ve kapatma gibi yönetim komutlarını kabul eden bir girişe sahiptir. Bu girişin parolası kaynak kodda herkesin bildiği bir varsayılanla gelir. Port güvenliği olmayan derlemelerde izinli adres listesi boş kalırsa girişi yalnız bu parola korur; parola varsayılan kaldıysa korunmuyor demektir.

Çözüm: ADMINPAGE_PASSWORD ile kendi parolanı tanımla, ADMINPAGE_IP satırlarına yalnız kendi yönetim adresini yaz. Bu girişi kullanmayacaksan port güvenliği olan bir derlemede listeyi boş bırakmak onu tamamen kapatır. Satırları yazdıktan sonra değerlerin yer değiştirmediğini kontrol et: IP satırında parola, parola satırında IP duran bir yapılandırma beklediğin korumayı vermez. Açılış öncesi diğer kontroller açılış planı yazısında.

8. GM yetkilerini gevşek dağıtmak

En düşük GM seviyesi bile masum değildir. Varsayılan komut tablosunda LOW_WIZARD, GM'in kendine tam eşya seti giydiren, efsun basan ve bütün becerilerini en üst seviyeye çıkaran komutlara erişir. Üstelik GM listesinden çıkarılan bir GM, oyundan çıkıp yeniden girene kadar yetkisini korur.

Çözüm: Her yöneticiye ayrı hesap ve güçlü parola ver, yetkiyi işin gerektirdiği en düşük seviyede tut. Güçlü komutların seviyesini CMD dosyasıyla yükselt ya da kapat; komutların varsayılan seviyeleri GM komutları sayfasında. GM_HOST_CHECK ile GM girişlerini belirli adreslere bağla. GM komutları DB_LOG_LEVEL en az 1 iken log veritabanına yazılır; bu kaydı düzenli oku. Yetkisini aldığın bir GM'i oyundan düşür ya da çekirdekleri yeniden başlat. Ayrıntılar GM yapma yazısında.

Bunlara ek olarak

  • Çekirdekleri root ile çalıştırma. Metin2 portları 1024'ün üstündedir; ayrı bir kullanıcıya server klasöründe yazma izni vermek yeterlidir.
  • Serveri kapatırken paketteki durdurma betiğini kullan. Süreci zorla öldürmek, db çekirdeğinin önbellekte tuttuğu karakter ve eşya verisini MySQL'e yazmadan kapatır.
  • Yedek al ve geri yüklemeyi açılıştan önce dene. Bazı paketlerin yedek betiği log veritabanının yalnız yapısını alır, içindeki kayıtları almaz; yedeğinde neyin bulunduğunu kontrol et.
  • İşletim sistemini ve MySQL'i güncel tut, sunucuya parolayla değil anahtarla bağlan.

İlgili sayfalar

Kategori: Blog pvp server config mysql server güvenliği metin2 server gm yetkisi

Bu sayfadaki bilgiler Metin2'nin sunucu yazılımındaki hesaplamalara ve standart oyun dosyalarına dayanır. Oyun dosyalarını değiştiren sunucularda değerler farklı olabilir. İçerikleri nasıl hazırlıyoruz?

Bu sayfa işine yaradı mı?

Giriş yap, oy ver ya da sayfayı kaydet. Okumak için üyelik gerekmez. WhatsApp X'te paylaş
Yanlış ya da eksik bir bilgi mi gördün? Bildir
Neyin yanlış olduğunu, doğrusunun ne olduğunu ve bunu nereden bildiğini yaz. Mesajın editörlere gider; yazı, kontrol edildikten sonra düzeltilir.
Yalnız editör görür.

Tartışma

Kurallar

Henüz yorum yok. Bu konuda bir deneyimin ya da sorun varsa ilk yorumu sen yaz.

Giriş yap ya da kayıt ol, sonra yorum yaz. Metin2VIP üyeliği hiçbir oyun sunucusunun hesabı değildir.