Ayrı kullanıcılar ve izinler oluşturarak MySQL veritabanlarınızı güvende tutun

Sunucularımızın, hizmetlerimizin veya sadece bilgilerimizin güvenliğini sağlamamıza yardımcı olurlarsa, her zaman iyi uygulamaların bir arkadaşı oldum.

Birçok yöneticinin veya kullanıcının sahip olduğu bir alışkanlık (kötü alışkanlık), kök tüm veritabanları için, yani ... WordPress CMS'yi kullanarak bir site yüklerler ve veritabanına erişim verileri olarak (WP'nin MySQL sunucusunu kullanması ve veritabanını kullanması için) MySQL sunucu yönetim kullanıcısını koyarlar: root

Ayrıca, başka herhangi bir web uygulamasını (sohbet, yapıştırma, forum vb.) Yüklerler ve aynısını yaparlar, her zaman MySQL'in kök kullanıcısını kullanırlar ...

HATA!!!

Bu sadece ölümcül bir alışkanlıktır.

Bir sunucuda aşağıdaki hizmetlere sahip olduğumuzu varsayalım:

  1. WordPress kullanan bir site veya portal.
  2. Destek forumumuz, görüşmelerimiz, vb ... bütün bir topluluk.
  3. Kullanıcıları ve parolaları depolamak için MySQL veritabanı kullanan bir FTP.
  4. E-posta kullanıcıları bir MySQL veritabanında (kullanıcılar ve şifreler) saklanır.
  5. Tanıdığınız biriyle sohbet etmek için kurduğumuz küçük bir WebChat.

Ve bunların hepsinde, 5 hizmette MySQL kök kullanıcısını kullanıyoruz, böylece her hizmet verilere karşılık gelen veritabanına erişir ve bunları kaydeder.

Güzel bir gün, dışarıdaki pek çok trolden herhangi biri, ama bu sadece bir trol değil, aynı zamanda bazı istismarlara, güvenlik açıklarına, korsanlığa vb. Hakim oluyor ... bize zararlı bir şey yapmaya karar veriyor.

Kullandığımız WebChat'te bir hata bulun, bu hatadan yararlanarak, WebChat yapılandırma dosyası da dahil olmak üzere WebChat dosyalarına erişmeyi yönetir ve… bu dosyada, açıkça görüldüğü gibi, WebChat'in kullandığı kullanıcı adı ve şifre bulunur. MySQL sunucusuna erişin ve tahmin edin ne oldu? … Ne daha fazlası ne de KÖK KULLANICISI!

Bu bilgiyi alarak trol çok basit bir şekilde şunları yapabilir:

  1. Bizi silin ve / veya sahip olduğumuz site veya portal ile ilgili her şeyi çalın (WordPress).
  2. Bizden VE oluşturduğumuz topluluğu, Forum'u kullanan kullanıcılarımızdan bilgi silebilir ve / veya çalabilirsiniz.
  3. Ayrıca sunucumuzda bir e-posta hesabı olan TÜM kullanıcıların kullanıcı adı ve şifresini çalabilir, e-posta bilgilerini çalabilir, taklit edebilir, vb.
  4. Ve şimdi son olarak, FTP sunucumuzdaki bir hesabı kullanabilir ve kötü amaçlı yazılım içeren herhangi bir dosyayı yükleyebilirsiniz, bu da sunucumuz üzerinde MUTLAK ve TOPLAM kontrol sahibi olmanızı sağlar.

Peki sen ne düşünüyorsun? … 🙂

Sahip olduğumuz her veritabanı için bağımsız kullanıcılar oluşturmayarak olabilecek her şeyi görüyor musunuz?

Bu abartılı bir arkadaş DEĞİLDİR, bu inanılmaz bir kolaylıkla gerçekleşebilir ... peki, felaketi tetiklemek için gereken tek şey, yüklediğiniz bazı web uygulamalarındaki bir hatadır.

Şimdi…

Her web uygulaması için ayrı MySQL kullanıcıları nasıl oluşturulur?

Öncelikle MySQL sunucusuna kök kullanıcı ile girmeliyiz, çünkü o, veritabanı oluşturma, izinler oluşturma, kullanıcı oluşturma vb. Ayrıcalıklarına sahip olan kişi:

mysql -u root -p

Yukarıdakileri yazıp bastığında [Girmek] MySQL root kullanıcısının şifresi istenecek, yazacaklar ve [Girmek] yine, anında şuna benzer bir şey gösterilecek:

Şimdi «adında bir veritabanı oluşturacağızWebchatdb":
CREATE DATABASE webchatdb;

Noktalı virgül dikkat edin «;»Satırın sonunda.

Hazır, veritabanını zaten oluşturdunuz, şimdi kullanıcıyı oluşturmaya devam edelim «web sohbeti kullanıcısı«Parola ile«şifredelputowebsohbet":

CREATE USER 'webchatuser'@'localhost' IDENTIFIED BY 'passworddelputowebchat';

Şimdi sihir ... tüm ayrıcalıkları (okuma ve yazma) vereceğiz web sohbeti kullanıcısı YALNIZCA DB'de Webchatdb:

GRANT ALL PRIVILEGES ON webchatdb.* TO 'webchatuser'@'localhost' WITH GRANT OPTION;

Ve işte, kullanıcı bu veritabanında zaten izinlere sahip ... şimdi sadece MySQL'in izinlerini yenilemek için kalıyor, yani MySQL'e kullanıcıların ayrıcalıklarını yeniden okumasını söyle çünkü az önce onlarda bir değişiklik yaptık:

FLUSH PRIVILEGES ;

Sana bir ekran görüntüsü bırakıyorum:

Ve bu her şeydi. Bunu kullandığımız her web uygulaması için yaparak, bu web uygulamalarından birini ihlal etmeleri durumunda diğerlerinin güvende olacağını garanti ediyoruz (en azından MySQL açısından)

İyi bir uygulama nedir? 😉

Umarım benim için olduğu kadar sizin için de yararlı olmuştur, çünkü elimden geldiğince basit bir şekilde açıklamaya çalıştım.

selamlar


15 yorum, sizinkini bırakın

Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   kırlangıç dijo

    İyi mesaj KZKG, forumda olsaydı yapışkan isterdim!

    1.    KZKG ^ Gaara dijo

      Teşekkürler 😀

      1.    Küba dijo

        Web sohbeti için koyduğunuz şifre iyidir, mysql ile ilgisi olan bir diğer şey de hafızasının kullanılmasıdır.

  2.   Hyuuga_Neji dijo

    Hehehe, MySQL komutlarını hatırlattığın için teşekkürler Şimdi LAN'ımdaki World of Warcraft sunucu veritabanına "biraz güvenlik koydum" mu bir bakalım.

  3.   Sieg84 dijo

    bu konudaki bilgim sıfır, ancak Amarok için MySQL kullanırken neredeyse aynı mı?
    VERİTABANI OLUŞTUR amarokdb;
    Amarokdb'DEKİ TÜM AYRICALIKLARI VERİN. * 'Amarokuser'a' şifre 'ile TANIMLANAN; FLUSH AYRICALIKLARI;

    1.    KZKG ^ Gaara dijo

      Amarok'u uzun zamandır kullanmadım, ancak MySQL olan bir DB kullanıyorsanız, teoride bu şekilde de çalışması gerekir.

  4.   Carlos Andres Restrepo dijo

    Merhaba, Linux'ta web sunucularına karşı güvenlik için bir giriş oluşturduysanız iyi olur, birçoğu uygun güvenliğe sahip değildir ve bunun yöneticisi tam anlamıyla bir uzman değildir, sadece işleri kolaylaştırır, örneğin kullanımı Sunuculardaki symlink, aynı sunucudaki diğer hesapların yapılandırma dosyalarının okunmasına izin verir, birçok yönetici bunun farkında değildir ve bu nedenle web sitesi tanımlamaları çoğalır

    selamlar

    1.    KZKG ^ Gaara dijo

      Merhaba böyle,
      Siteye hoş geldiniz 🙂

      Kendimi şimdiye kadar bu konuda bir uzman olarak görmüyorum, ancak yıllar içinde edindiğim küçük bilgilerle katkıda bulunmaya çalışacağım 🙂

      Pek çok ağ yöneticisinin yapmadığı bir diğer şey ise, apache'li sitelere ayrı ayrı, yani her site için farklı olan kullanıcı ve grup www-data (veya benzeri) ayrıcalıkları vermek ve sırayla bunların her birini kafeslemek. .

      selamlar

  5.   bilgisayar korsanı775 dijo

    İyi bahşiş

    selamlar

    1.    KZKG ^ Gaara dijo

      teşekkürler

  6.   nano dijo

    Terminalinizin görünümünden nefret ediyorum, arka plandaki harfler beni konsantrasyonumdan çıkarıyor. Sen lanet bir çılgın xD'sin

    Bunun dışında ilginç çünkü bu şeylerden dolayı acıklı servis kesintileri gördüm.

    Şimdi, sadece buna bağlı değil, güvenlik veritabanının nasıl oluşturulduğuna bağlı, bir öğretmen bana açıkladı, ancak henüz DB'ye çok dalmadım ... MongoDB = D ile bunlardan biri ile uğraşmalıyız günler

  7.   carlos albay dijo

    sadece bugün kiralık sunucumla başıma geldi

    Adımlarınızı takip ettim, cpanel'e girdim ve MYSQL veritabanını aradım ve bana onun arızalı olduğunu söylüyor.

    Şimdi kök kullanıcının altına nasıl gireceğimi bilmiyorum
    Ben bu konuda acemiyim, ama burada okurken çok şey öğreniyorsunuz, umarım bana erişme konusunda rehberlik edersiniz

    1.    KZKG ^ Gaara dijo

      Merhaba 🙂
      Sahip olduğunuz şey bir Hosting (SharedHosting) veya bir VPS (sanal sunucu)?

      Bir Hosting'iniz varsa ve VPS'niz yoksa, Hosting'inizin SSH erişimi olup olmadığını görmelisiniz (Size hostingi satan şirketin teknik desteğiyle iletişime geçin ve SSH üzerinden nasıl erişebileceklerini sorun), SSH üzerinden girdiğinizde, kullanıcı root OLMAYACAKTIR, ancak bu web uygulamasını yüklediğinizde girdiğiniz kullanıcıyı kullanmanız gerekir.

      Aslında sizinki karmaşık bir konu, çünkü varyantlar ve olasılıklar çok fazla, forumumuzda yeni bir konu açmanızı tavsiye ederim, orada size yardımcı olmak daha rahat olacaktır - » http://foro.desdelinux.net

      Selamlar 😀

  8.   Bossbrondem dijo

    iyi,

    Kök dışında hiçbir kullanıcıya tüm ayrıcalıkları vermemenin iyi bir uygulama olduğunu anlıyorum. Ancak, phpmyadmin'i kurduğumdan beri, tüm yetkilere sahip yeni bir kullanıcı "phpmyadmin" yaratıldı. MySQL'deki veritabanlarını yönetmek için yalnızca grafiksel bir sürüm olduğundan, durumun böyle olması mantıklı görünüyor. Her neyse, olduğu gibi iyi olup olmadığından emin olmak istiyorum veya "phpmyadmin" kullanıcısının ayrıcalıklarında bazı değişiklikler yapmalı mıyım?

    Selamlar ve teşekkürler!

  9.   Emmanuel dijo

    Mükemmel…
    Ben her şeyi kök ile yapanlardanım ama sen gözlerimi açtın dostum ..
    Çok teşekkürler…