Bu normal bir MySQL ayrıcalıkları mıdır?


9

Yerel bir test wamp kurulumunda phpmyadmin ve hemen hemen başlık durumlarını kullanarak, kullanıcı = ANY, password = NO olarak işaretlenmiş 3 kullanıcı vardır, örneğin:

USER | HOST    | Password | Global Priv | Grant
-----+---------+----------+-------------+------
Any  | %       | No       | USAGE       | No
Any  | Local   | No       | USAGE       | No
Any  | Domain  | No       | USAGE       | No
-----+---------+----------+-------------+------

Herhangi bir kullanıcının hiçbirinin herhangi bir tablo için belirli ayrıcalıkları yoktur, bu yüzden çok fazla şey yapamazlar. Bu, başka bir kullanıcı grubuna girmeyen 'Herhangi' kullanıcının açıkça ayrıcalıklara sahip olmadığını açıkça belirtmek için bir tür genel güvenlik önlemi mi?


Bu aslında çok iyi bir soru çünkü mysql yayınlanmamış varsayılan izinlerle geliyor. +1 !!!
RolandoMySQLDBA

Yanıtlar:


6

Gerçekte, bu üç kullanıcı hesabı aslında oldukça tehlikelidir. Veritabanlarını test etmek için çok büyük bir tehdit oluşturuyorlar.

Ne yazık ki, mysql test veritabanlarına tam erişim ile geliyor. Onları nasıl bulabilirsin?

Bu sorguyu çalıştır:

 SELECT user,host,db from mysql.db;

Mysql yüklendikten sonra, 'test' adında veya ilk 5 karakteri 'test_' olan herhangi bir veritabanına tam erişim sağlayan iki satır göreceksiniz.

Bu neden bir sorundur ???

Bu komutu çalıştırmayı deneyin:

$ mysql -u'' -Dtest

Test veritabanını şifre olmadan bağlamış olacaksınız.

Şimdi bir tablo oluşturun ve bir satırla yükleyin:

CREATE TABLE mytable (a int);
INSERT INTO mytable VALUES (1);

Tamam, önemli. Bu masayı 30 kez iki katına çıkarabilir misiniz ???

INSERT INTO mytable SELECT * FROM mytable;
INSERT INTO mytable SELECT * FROM mytable;
... (30 times)
INSERT INTO mytable SELECT * FROM mytable;

Siz ne alırsınız ?? 1.073.741.824 satır içeren bir tablo. Kolayca, 4GB +.

Herhangi bir boyutta herhangi bir tablo oluşturduğunuzu düşünün. Test veritabanında bir grup tablo oluşturmaya ve istediğiniz zaman onlara serbestçe erişmeye ne dersiniz?

Bu koşullar altında yapabileceğiniz en iyi şey bu sorguyu çalıştırmaktır:

DELETE FROM mysql.db;

ve mysql'yi yeniden başlatın. Daha sonra, bu üç hesap düzgün bir şekilde çalışmaz hale getirilecektir.

Bir şans ver !!!

GÜNCELLEME 2011-09-12 10:00 EDT

Bu silme:

DELETE FROM mysql.db;
FLUSH PRIVILEGES;

ilk kurulum için ihtiyacınız olan şeydir. Ancak, önceden oluşturulmuş kullanıcılarınız varsa, bunun yerine şunu çalıştırabilirsiniz:

DELETE FROM mysql.db WHERE db IN ('test','test_%');
FLUSH PRIVILEGES;

Bu, belirli iki DB izinlerini kaldıracaktır.

Cevabımda belirttiğim gibi, üç izin test veritabanları için çok tehlikelidir. Bu DELETE çalıştırıldığında, bu hesapları veritabanlarını test etme konusunda tam haklara sahip oldukları için etkisiz hale getireceksiniz.


Açıklama için teşekkürler, ancak DELETE FROM mysql.db bu 3 kullanıcı bir parçası başka bir şey silecek? Bunlar dışında herhangi bir veri / ayrıcalık silmek istemiyorum 3
Chris

@Chris - Yorumunuzu ele almak için cevabımı 3 saat önce güncelledim.
RolandoMySQLDBA

-1

Bu anonim hesapların tutulması tehlikesi zaten çok iyi açıklanmıştır.

Bu kılavuz, " İlk MySQL Hesaplarını Güvenli Hale Getirmek " için atılacak adımların kapsamlı bir kontrol listesini sunar .

Özellikle, "Anonim Hesap Parolaları Atama" bölümü bu hesapların kaldırılmasını önerir.

Ayrıca, "Test Veritabanlarının Güvenliğini Sağlama" bölümü şunları önerir:

Varsayılan olarak mysql.dbtablo, herhangi bir kullanıcının testveritabanına ve adlarıyla başlayan diğer veritabanlarına erişime izin veren satırlar içerir test_. (...) Bu, söz konusu veritabanlarının başka türlü imtiyazları olmayan hesaplar tarafından bile kullanılabileceği anlamına gelir. Test veritabanlarına herhangi bir kullanıcı erişimini kaldırmak istiyorsanız, aşağıdakileri yapın:

mysql> DELETE FROM mysql.db WHERE Db LIKE 'test%';
mysql> FLUSH PRIVILEGES;

(...) Önceki değişiklikle, yalnızca test veritabanı için açıkça verilen genel veritabanı ayrıcalıklarına veya ayrıcalıklarına sahip kullanıcılar bunu kullanabilir.

Özellikle, Windows olmayan sistemlerde mysql_secure_installationkomut dosyasının çalıştırılması önerilir . Sanırım Windows kurulum programı birkaç kurulum profili sunuyor. Bazıları güvenli olmayan ayarları otomatik olarak devre dışı bırakacaktır. Değilse, kontrol listesinin manuel olarak çalıştırılması gerekecektir.

WAMP gibi üçüncü taraf montajcılara dikkat edilmelidir. Resmi MySQL Kılavuzunda belirtilen varsayılan izinler her zaman bu özel (kılavuzun kapsamı dışında olduğu gibi) kurulumlar için geçerli olmayabilir Tabii ki, bir üretim sunucusu için, WAMP kurulumlarından ve benzerlerinden her ne pahasına olursa olsun kaçınılmalıdır. .


neden bu cevabın düşüşü?
user12345
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.