Grafiker ve Grafik Tasarım Portalı
- 1557 kez bakıldı... g?¼zzel bir cal?½?¾ma san?½r?½m sayg?½lar- 1493 kez bakıldı... - 679 kez bakıldı... m?¼zisyen bir arkadas?½m benden bilgisayar?½n?½n masa?¼st?¼ i?§in bir ?§al?½?¾ma- 1288 kez bakıldı... - 2880 kez bakıldı...



Hola,

You are not member

. Please Login or Register.
Getting activation mail again Click Here.
Sectit Art School - Free Art and Graphic Design Tutorials, Lessons and Materials Operating Systems and SoftwaresMySQL PostgreSQL MSSQL Access NoSQL MongoDBTopic: MySQL server güvenliği

Page: [1] |   
Send This TopicPrint
Posted by Topic: MySQL server güvenliği  (Read 2947 times)
0 Member and 1 Guest are viewing this topic.
dark
Watcher
*

Karma: 0
Offline Offline


Total Posts: 8


Activity
Level
Experience

Member Info E-Mail
« : 02 Jun 2005, 09:02 »





Giriş

Ocak 2005 in sonlarına doğru yeni worm benzeri bir program olan Forbot internet üstünden zayıf ayarlanmış MySQL leri hedef alarak onların açıklarından faydalanarak Windows host makinesine ulaşmaya çalışmaktadır. Forbot tam olarak bir worm değildir, çünkü yayılması için sürekli kontrolörüyle iletişime geçmedir. Forbot un birkez iletişimi kesildiğinde yayılma botu iptal olur.

Forbot un saldırı methodunu anlamak önemlidir, çünkü herhangi bir MySQL açığı kullanmaz ve bu yüzdende yamalama gibi bir konu söz konusu değildir. Forbot hiç yönetici şifresi olmayan yada çok basit şifrelere sahip olan zayıf ayarlanmış MySQL lere saldırır. Forbot un denediği bazı şifrelere örnek vericek olursak abcd1234 ve 654321

MySQL AB, varsayılan veritabanı yüklemelerinde ve geliştirilmesinde olabildigince güvenlik sağlamaya çalışmaktadır. Yeni teknolojileri ve son güncellemeleri kullanıcılara getirmektedir. Fakat bizlerde kendi başımıza bazı özelliklere dikkate alarak MySQL imizi daha güvenli hale getirebiliriz.

Bu makalenin amaçı yöneticilerin windows ortamındaki MySQL lerini daha güvenli hale getirmelerini amaçlamıştır. Bu prosedürler windows kullanıcıları için yazılmış olsada benzer adımlar Linux ve Unix tede kullanılabilir. Forbot şuanda windows u hedef alsada Linux ve Unix i hedef alan başka tehlikeler olabilir.

Birinci adım: MySQL i en yakın NT tabanlı windowslara yükleyin

En yakın NT tabanlı windows içine windows 2000, XP ve Server 2003 dahildir. Bu işletim sistemleri daha önceki işletim sistemlerinden, windows 95, 98 ve ME, daha güvenlidir.

Ve ana makinedeki işletim sistemin sürekli güncellenen, en son çıkmış servis paketlerine ve yamalarına sahip bir işletim sistemi olması çok önemlidir.

ޝkinci adım: MySQL i NTFS dosya sistemine yukleyin

NTFS, FAT32 den çok daha fazla güvenli bir dosya sistemidir. Erişim kontrolu, büyük dosya desteği, veri şifreleme gibi özelliklere sahiptir.

Şœçüncü adım: MYSQL i tekil makineye kurun

MySQL server bir makineye yanında 3üncü parti uygulama olmadan gereksiz servislerin olmadıgı ve hiçbir ek programın çalışmadığı makineye kurulması önerilir. Bu durumda server hem daha kararlı olur hemde sistem kaynaklarını fazla kullanmamış olur. Ayrıca makineye yönetici girişleri haricinde başka bir kullanıcı girişine izin verilmemelidir.

Dördüncü adım: MySQL in son sürümünü edinin

MySQL in kararlı son sürümünü makinenizde olmasına dikkat edin, yeni çıkmış deneme aşamasında olan sürümlerin büyük ölçekli serverlarda tüm hataları çözümlenmediği için kullanılmaması önerilir. Son çıkan kararlı sürümlerinde önceki sürümlerde tespit edilmiş hataların yamaları olması server güvenliği için çok önemlidir.

Beşinci adım: MySQL kullanıcı hesaplarını güvenlik altına alın

Yükleme sırasında yönetici hesabı için istenilen şifrenin güçlü olmasına özen gösterin. Bu şifrede mutlaka harf, numara ve özel karakterler içermelidir. Ve en az 6 karakter uzunluğunda ve herhangi bir sözlükte bulunmayan büyük ve küçük karakterlerden oluşan söz dizimleri seçilmelidir.

Secilecek olan şifreler akılda kalıcı olan cümlelerin değiştirilmiş formatları şeklinde olabilir. Bu sayede hem güçlü bir şifreniz olur hemde beyninizi fazla zorlamaz. Örneğin şu cümleyi "To be, or not to be: that is the question!" şifre olarak seçtik bunu daha kısa ama zor bir formata sokuyoruz "2b,On2b:Titq!" işte şu anda bu şifre daha güvenli hale geldi (tabi ben bu makalede kullanana kadar). Bunun gibi ama daha az göz önünde olan cümleleri secerek bu tarz bir şifreleme methodu izleyebilirsiniz. Cünkü ilerde bu tarz çok bilinen cümlelerden şifre üreten zararlı yazılımlar üretilebilir.

Ayrıca yukleme işlemi sırasında Root May Only Connect from Localhost seceneginin secip, Create An Anonymous Account seceneğini secmeyiniz. Bu MySQL inizin güvenliğini baya arttıracaktır.

Daha önceden yuklenmiş olan MySQL lerde bulunan Anonymous hesapları kaldırmakta aşağıdaki komutla mümkündür:

Enter password: *****
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.9-nt
 
Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer.
 
mysql> use mysql;
Database changed
mysql> DELETE FROM user WHERE user = ’’;
Query OK, 2 rows affected (0.03 sec)
 
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.05 sec)
 
mysql>

Buna ek olarak localhost dan girişlerde aşağıdaki komutla sınırlandırılabilir:

Enter password: *****
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.9-nt
 
Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer.
 
mysql> use mysql;
Database changed
mysql> DELETE FROM user WHERE user = ’root’ AND host = ’%’;
Query OK, 2 rows affected (0.03 sec)
 
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.05 sec)
 
mysql>

Bu sayede tek bir yönetici hesabı localhost a bağlanma yetkisinde olucaktır. Ayrıca aşagıdakini hosts dosyanıza girin (genelde C:\WINDOWS\system32\drivers\etc\hosts da bulunur)

127.0.0.1 localhost

Bu sayede MySQL user tablosunda localhost degerini çözümleyemediği zaman giriş hatası vermesini engeller.

Altıncı basamak: TCP/IP ulaşımını iptal edin

Varsayılan MySQL ayarları olarak TCP/IP ile server a bağlanmak mumkundur. Bir çok durumda bu bağlantı gereksizdir ve iptal edilebilir. Evet MySQL i yerel olarak geliştirme amaçlı kullanıyorsanız TCP/IP yi iptal etmelisiniz.

Bunu yapmak için yükleme esnasında Detailed Configuration secenegini secmeli ve Enable TCP/IP Networking seceneginin secimini kaldırmalısınız. Yuklenmiş bir MySQL serverın TCP/IP baglantısını kapatmak için Başlat > tüm programlar > MySQL > MySQL Server 4.1 > MySQL Server Instance Config Wizard i secmeniz ve gerekli olan işlemleri yapmanız yeterli olucaktır.

Eski MySQL sürümleri için server ayar dosyasındaki [mysqld] bolumune aşağıdaki satırları eklemelisiniz:

skip-networking

enable-named-pipes

Bu TCP/IP baglantısını iptal edicek, named pipe ları aktive edicektir. Bu iş için MySQL i NT tabanlı bir işletim sistemine kurmanız ve mysqld-nt.exe yi kullanmanız gerekmektedir. Ayar dosyanızın yeri yuklemiş oldugunuz MySQLe gore değişiklik gösterebilir, şu yollara bakabilirsiniz:

* C:\my.cnf
* C:\Windows\my.ini

Named pipe kullanımı

Server birkez named piped desteği ile basladımı, aşağıdaki şu komutla bağlanabilirsiniz:

C:\>mysql -h . -u root -p 

Bununla server a named pipe kullanarak bağlanmış olucaksnız. 4.1 ve daha sonraki surumlerinde -h . komutu yerine --protocol=pipe komutunu kullanmalısınız:

C:\>mysql --protocol=pipe -u root -p

Diğer bağlantı ve destek programları bu bağlantılar için farklı komutlar kullanbilirler, onlar hakkında bilgi almak için programın kendi yardım ve bilgi bölümlerine bakmanız önerilir.

Paylaşımış hafızayı kullanmak

named pipelar yerine MySQL 4.1 paylaşılmış hafızayıda desteklemektedir. Bunu aktiv etmek için MySQL ayar dosyasının [mysqld]  bolumune sunu eklemeniz yeterli olucaktır:

shared-memory

MySQL Configuration Wizard bu ayarı yapıcak ozellikle olmadıgından ayar dosyasına girilmesi gerekmektedir. MySQL Configuration Wizard ın kullanıcıları genelde C:\Program Files\MySQL\MySQL Server 4.1\ yolundaki my.ini dosyasında bulunmaktadir.

Paylaşılmış hafıza yardımıyla servera bağlanmak için şu komutu kullanınız:

C:\>mysql --protocol=memory -u root -p

Yedinci adım: TCP/IP adresine bind

Bazı durumlarda TCP/IP bağlantısını iptal etmek mümkün olmamaktadir. Bu durumda server ayar dosyasının [mysqld] bolumune şu kodun:

bind-address=127.0.0.1

eklemesi ile MySQL serverın sadece localhost a cevap vericeği sağlanmaktadır. Ve diger makinelerden yapılacak hiçbir talebe cevap vermeyecektir.

Sekizinci adım: Firewall

Tüm server makineler firewalllarla korunmalıdır. Bazen MySQL yerel ağ içindeki clientler tarafından kullanılmakta ve erişime açılmaktadır. Bu gibi durumlarda firewall tarafından yerel ağ ile 3306 nolu portun trafiği ayrılmalıdır.

En azından MySQL servera sadece yerel agdan ve guvenilir IP adreslerinden baglantıya izin veren bir firewall bulunmalıdır. ޝdeal olanı ise internet ile MySQL arasına hardware bir firewall konulmasıdır.

Bu kullanıcıların MySQL e girişinin engelleneceği anlamında değildir, SSH port yonlendirmesi kullanılarak firewall üzerinden MySQL e erişim mümkün olmaktadır.

Dokuzuncu adım: MySQL i limitli kullanıcıyla çalıştırın

MySQL yüklendiğinde varsayılan ayarları yerel sistem kullanıcısıyla çalışmaktır. Fakat MySQL limitli bir kullanıcı hesabına bağlı olarakta çalışabilir.

Bunun için ilk olarak bir kullanıcı hesabı yaratın, adına mesela mysql diyelim ve bu kullanıcıya daha önceden belirttiğimiz standardlarda kuvvetli bir şifre verin. Denetim masasındaki Yönetimsel ayarlar bölümünden Servisler kısmını secin ve MySQL servisini durdurun.

Servisler penceresini simge durumuna küçültüp, MySQL dizinine gidin, C:\Program Files\MySQL\MySQL Server 4.1 gibi...

Bu klasörün erişimini sadece yeni yarattığımız mysql kullanıcısına verin. Bunu yapmak için klasöre sağ tıklayın ve Özellikler seçeneğini seçin. Açılan pencereden Güvenlik sekmesine gidin bu sekme eger yoksa explorer penceresinin Araçlar menusunden Dosya ayarlarını seçip Görüntüle sekmesine gidin. Gelişmiş menusunden Basit dosya paylaşımı seçeneğinin işaretini kaldırın.



Güvenlik sekmesini olmayanlar için açtıktan sonra şimdi o sekmeye geri gidip, önceden yaratmış oldugumuz mysql adındaki kullanıcıyı sağ alttaki ekle tuşuna basarak ekliyeceğiz, karşımıza açılan pencerenin sağ altındaki Adlara bak tuşuna basıp Yeni görüntülünen arama butonuna basıyoruz ve buradan mysql adındaki kullanıcı hesabını seçiyoruz.



mysql kullanıcı hesabı eklendiğinde aşağıdaki yetki listesinden her seçeneğe izin veriyoruz. Uygula - Tamam diyip o pencereyi kapatıyoruz.



Dizin yetkilendirmesi başarıyla tamamlandıktan sonra servisler listesine geri dönüyoruz ve MySQL servisinin Log on (giriş) sekmesini seçip This account adındaki radyo butonuna basıyoruz ve yaratmış oldugumuz mysql kullanıcısının bilgilerini giriyoruz.



Tüm bunları yaptıktan sonra Uygula - Tamam diyoruz ve Servis listesinden MySQL servisini tekrar başlatıyoruz. Artık MySQL servisimiz limitli bir kullanıcı hesabına baglı olarak çalışacaktır.

Onuncu adım: Veri klasörünüzü şifreleyin

MySQL de önemli verilere sahip olan kullanıcıların NTFS dosya formatında bulunan bu özelliği kullanmalarıda mümkünüdür. ޞifreleme yapmadan önce MySQL servisini durdurmanız gerekmektedir.

Fakat bu özelliğin kullanılması MySQL performansını düşüreceği bilinmelidir. Ayrıca şifreleyici anahtarın kaybolması durumunda tüm verilerin kaybolacagınıda unutmamak gerekir.

Sonuç olarak gerçekten gerekmedikce dosya şifreleme işlemlerinin yapılmaması önerilir, hem performasn için hemde olası veri kayıtları için. Ve sadece ileri düzey kullanıcılar tarafından yapılmadır.

ޞifrelenmiş bilgilere herhangi bir yardımcı programla ulaşılamyacagınında bilinmesi gerekir.

Onbirinci adım: Sadece gerektiği kadar yetki

Yeni bir kullanıcı acıyoruz diyelim bu kullanıcıya veritabanı üstünde hertürlü yetkiyi vermek oldukca yanlış bir davranıştır. Sistem güvenliği için genel olarak kullanıcılara olabildiğince az yetki vermeyi hedef almalısınız.

Bunu MySQL e bağlantıda yapıcaksanız, belli bir IP adresinden sadece belli kullanıcıların girmesini sağlayarak yapabilirsiniz.

Bunun için kullanıcağımız komut:

mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON fictional.* TO ’bob’@’192.168.1.%’;

Bu kod yardımıyla fictional veritabanında 192.168.1.X (0 <= X <= 255) iplerinden sadece bob kullanıcısına izin verir.

Onikinci adım: Yönetici adını değiştirin

Yönetici adlarının root,admin, administrator gibi olması gerekmemektedir. Bu gibi kullanıcı adları forbot gibi zararlı yazılımlar için ilk denenicek olasılıklardır.

MySQL in yönetici adını değiştirmek için aşağıdaki komutu kullanınız:

Enter password: *****
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.9-nt

Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer.

mysql> USE mysql;
Database changed
mysql> UPDATE user SET user=’bob’ WHERE user=’root’;
Query OK, 1 row affected (0.19 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.23 sec)

Bu kod sayesinde root adlı kullanıcı ki bunu yönetici adı olarak düşünüyoruz bob ile değiştirilir.

Dilediğiniz bir kullanıcı ismi verebilirsiniz, zararlı yazılımların tahminini zorlaştırmak için degişik adlar bulmanızı öneririz.

Sonuç


Birkaç ufak tefek adımlarla Windows ortamında MySQL inizi ve içindeki bilgileri zararlı kodlardan koruyabilirsiniz. Güvenlik için en önemli noktarı terkar edersek; varsayılan kullanıcı güvenliği, dışardan girişlere engel olma ve kuvvetli şifreler kullanmaktır. Güvenliği daha üst düzeylere cıkarmak için MySQL e erişimi sağlayan kullanıcıları limitleme, yönetici adını değiştirme ve hatta belkide verileri şifreleyerek yapılabilir.

Bu döküman Forbot un saldırıları baz alınarak yazılmış olsada genel bir güvenlik önlemleri hatırlatmasıdır ve ilerde işinize yarayacak adımlar acıklanmıştır. bu sayede ileride gelebileçek herhangi bir saldırıya karşıda korunmuş olucaksınız.


Bu Döküman dark ve javagirl Tarafından Türkçe’ye Çevrilmiştir. Orjinal Döküman: http://dev.mysql.com/tech-resources/articles/securing_mysql_windows.html

Logged
Konunun Etiketleri (Tags) :
Page: [1] |   
Send This TopicPrint

Sectit Art School - Free Art and Graphic Design Tutorials, Lessons and Materials Operating Systems and SoftwaresMySQL PostgreSQL MSSQL Access NoSQL MongoDBTopic: MySQL server güvenliği

Chose Topic Here:  

Benzer Konular
Topic Title Started by Replies Views Last Messages