Ön Hazırlık

phpMyAdmin kurulumu için sunucuda LAMP paketi hazırda kurulu olmak zorundadır. Her şey tamamsa phpMyAdmin yazılımını kurmaya başlayabiliriz. phpMyAdmin CentOS 8’nin varsayılan deposunda mevcut değil ancak olsa bile kurmanızı önermiyorum zira derlenmiş paketler sürüm olarak oldukça geriden geliyor.

sudo dnf install nano wget unzip
wget https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.zip
unzip phpMyAdmin-5.0.4-all-languages.zip
sudo mv phpMyAdmin-5.0.4-all-languages /usr/share/phpmyadmin

Gerekli paketleri kurup phpmyadmin indirdik ve doğru dizine taşımasını yaptık.

Sırada blowfish secret ayarı var. Bunun için phpmyadmin dizinine gidip config dosyasını yeniden adlandırıp bir editörle açıyoruz.

cd /usr/share/phpmyadmin
sudo mv config.sample.inc.php config.inc.php
sudo nano config.inc.php

img

Benzersiz bir kod oluşturmak için BURAYA bakın. Kodu oluşturup tek tırnak işaretlerinin arasına girdikten sonra F3 ile kaydedin ve F2 ile nano editörden çıkış yapın.

Sırada tmp klasörü oluşturma ve phpmyadmin ana dizin yetkilendirmeleri var. Alttaki komutlar ile /tmp klasörünü oluşturduk, phpmyadmin ana dizinini apache kullanıcısına atadık ve /tmp klasörünün yetkilendirmesini yaptık.

sudo mkdir /usr/share/phpmyadmin/tmp
sudo chown -R apache:apache /usr/share/phpmyadmin
sudo chmod 777 /usr/share/phpmyadmin/tmp
sudo nano /etc/httpd/conf.d/phpmyadmin.conf

Bir editör ile phpmyadmin.conf dosyasını açıyoruz. Dosya içeriği tam olarak alttaki gibi olmalıdır.

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4  
     <RequireAny>
      Require all granted
     </RequireAny>
    </IfModule>
    <IfModule !mod_authz_core.c>
      # Apache 2.2
      Order Deny,Allow
      Deny from All
      Allow from 127.0.0.1
      Allow from ::1
    </IfModule>
</Directory>
   
<Directory /usr/share/phpmyadmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require all granted
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

Yapılan değişikliklerin aktif olması için apache’yi yeniden başlatalım ve çalıştığını kontrol edelim.

systemctl restart httpd
systemctl status httpd

 

SELinux ve Firewall Ayarları

SELinux kernel seviyesinde iyileştirmeler ve güvenlik sunan bir yazılımdır. phpmyadmin’in doğru çalışması için yeniden konfigüre edilmelidir. Öncelikle ihtiyacımız olacak paketleri kuruyoruz ve SELinux ayarlarını yapıyoruz.

sudo dnf install policycoreutils-python-utils
semanage fcontext –a –t httpd_sys_rw_content_t ‘/usr/share/phpmyadmin/’
semanage fcontext –a –t httpd_sys_rw_content_t “usr/share/phpmyadmin/tmp(/.*)?”
restorecon –Rv ‘/usr/share/phpmyadmin/’

İlk 2 komutun tamamlanması biraz uzun sürebilir. Firewall için aşağıdaki ayarı yapmanız yeterlidir. Bu hata MySQL’in parola doğrulama mekanizması yüzünden meydana gelmektedir. Hatayı düzeltmek için MySQL komut satırına gidin ve bir mysql root parolası oluşturun.

mysql –u root –p

mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH myswl_native_password BY ‘password’;

password yazan yere daha önce kurulumda girdiğiniz root mysql parolasını girin.

Kurulumu tamamladık.

Şimdi http://SunucuIP/phpmyadmin adresini tarayıcıda açın ve root şifrenizle giriş yapın.

img

 

phpMyAdmin Güvenliği

phpMyAdmin kurulumunu tamamladık ve veritabanı yönetimi için kullanıcı girişimizi yaptık. Bu noktada veritabanlarını dilediğimiz gibi yönetebiliriz ancak bir web arayüzü kurarak MySQL sistemimizi dış dünyaya da açmış olduk.

phpMyAdmin girişinde her ne kadar kimlik doğrulama ekranı olsa da, direkt erişim oldukça büyük bir güvenlik riskidir. Bu yüzden ekstra güvenlik önlemleri almak zorundayız.

PhpMyAdmin gittikçe artan popülaritesi nedeniyle, saldırganların bir numaralı hedefi haline geldi. Kurulumun varsayılan yolları saldırganlar tarafından kolayca tahmin edilebilir durumdadır. Sunucunun saldırıya maruz kalma olasılığını azaltmak için iki basit yol izleyeceğiz.

İlk olarak web erişim konumunu /phpMyAdmin den başka bir isme değiştirerek saldırganların kullandığı otomatik brute force ataklarından bazılarını atlatacağız. Ayrıca phpMyAdmin oturum açma ekranına ulaşmadan önce geçilmesi gereken sunucu düzeyinde kimlik doğrulama geçidi oluşturacağız.

 

Arayüz Erişim Konumunu Değiştirme

Apache’nin phpMyAdmin dosyalarını bulması için, önceki adımda phpMyAdmin dizininde bir alias ayarlamıştık. PhpMyAdmin giriş sayfasının bağlantısını değiştirmek için, sembolik bağlantıyı yeniden adlandırmamız yeterlidir. Öncelikle phpmyadmin dizinini açın:

cd /usr/share/phpmyadmin
ls -l
-rw-r--r-- 1 root root 537 Aug  5 08:15 50x.html
-rw-r--r-- 1 root root 612 Aug  5 08:15 index.html
lrwxrwxrwx 1 root root  21 Aug  6 17:29 phpMyAdmin -> /usr/share/phpMyAdmin

Gördüğünüz gibi, bu dizinde /phpMyAdmin adında sembolik bir bağımız var. Bu bağlantı adını istediğimiz gibi değiştirebiliriz. Yapacağımız değişiklik, phpMyAdmin’e tarayıcıdan erişim konumunu değiştirecek ve bu da erişim noktasını saldırganlardan gizlemeye yardımcı olacaktır.

Veritabanı ile ilgisi olmayan, konumun amacını belirtmeyen bir ad seçin. Bu kılavuzda, erişim konumuna /aramasorma adını verdim. Alttaki komutla bağlantıyı yeniden adlandıracağız:

sudo mv phpMyAdmin aramasorma
ls -l
total 8
-rw-r--r-- 1 root root 537 Aug  5 08:15 50x.html
-rw-r--r-- 1 root root 612 Aug  5 08:15 index.html
lrwxrwxrwx 1 root root  21 Aug  6 17:29 aramasorma -> /usr/share/phpMyAdmin

Şimdi eski sembolik bağlantıdaki dizini tarayıcıdan çağırdığınızda 404 hatası alacaksınız ki, bu ilk güvenlik adımı tamamladığımız anlamına geliyor:

http://SunucuIP/phpMyAdmin

img

phpMyAdmin arayüzü seçtiğimiz yeni konumda mevcut olacaktır:

http://domain_veya_IP/aramasorma

 

Web Erişimi Konumu Şifreleme

Kullanacağımız bir sonraki güvenlik özelliği, bir kullanıcının phpMyAdmin oturum açma ekranını görmeden önce geçmesi gereken bir kimlik doğrulama ekranı olacak. Sadece apache yapılandırma dosyasına birkaç ekleme yapacağız.

mkdir /etc/phpmyadmin
htpasswd –c /etc/phpmyadmin/.htpasswd admin

Bu komut ile bir giriş şifresi oluşturacağız. Bu şifre phpmyadmin root şifresinden farklı olmalıdır. Şifreyi belirledikten sonra güvenli bir yerde saklayın.

sudo nano /etc/httpd/conf.d/phpmyadmin.conf

Daha önce oluşturduğumuz bu dosyada tam olarak AddDefaultCharset UTF-8 satırından sonrasına aşağıdaki eki girin.

Options +FollowSymLinks +Multiviews +Indexes
    AllowOverride None
    AuthType basic
    AuthName "Authentication Required"
    AuthUserFile /etc/phpmyadmin/.htpasswd
    Require valid-user

Apache’yi yeniden başlatın.

sudo systemctl restart httpd

Kurulum tamamlandı. Artık güvenli bir biçimde phpmyadmin kullanabiliriz. Lütfen sorularınız varsa konu altına yazın ve sosyal medya hesaplarınızda paylaşım yapmayı unutmayın.