redhat:database-redhat:phpmyadmin-redhat

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
redhat:database-redhat:phpmyadmin-redhat [2020/03/04 16:21] – [Voraussetzungen] michaelredhat:database-redhat:phpmyadmin-redhat [2020/06/04 19:58] (current) – [Konfiguration des Zugriffs auf phpMyAdmin] michael
Line 5: Line 5:
  
 Die Software ist in PHP implementiert; daher kommt der Name phpMyAdmin. Die meisten Funktionen können ausgeführt werden, ohne selbst SQL-Anweisungen zu schreiben, wie z. B. Datensätze auflisten, Tabellen anlegen/löschen, Spalten hinzufügen, Datenbanken anlegen/löschen und Benutzer verwalten. Die Software ist in PHP implementiert; daher kommt der Name phpMyAdmin. Die meisten Funktionen können ausgeführt werden, ohne selbst SQL-Anweisungen zu schreiben, wie z. B. Datensätze auflisten, Tabellen anlegen/löschen, Spalten hinzufügen, Datenbanken anlegen/löschen und Benutzer verwalten.
-----+
  
 ===== Voraussetzungen ===== ===== Voraussetzungen =====
Line 26: Line 26:
   - Herunterladen der neusten Version von phpMyAdmin. <code># wget $(curl -s https://www.phpmyadmin.net/downloads/ | grep -oP 'http[^"]*(?=">phpMyAdmin-)' | head -1 | rev | cut -c5- | rev)   - Herunterladen der neusten Version von phpMyAdmin. <code># wget $(curl -s https://www.phpmyadmin.net/downloads/ | grep -oP 'http[^"]*(?=">phpMyAdmin-)' | head -1 | rev | cut -c5- | rev)
 </code> </code>
-  - Erstellen eines neuen; nicht so leicht erartbaren Ordner für die phpMyAdmin Instanz. <code># mkdir /var/www/html/php_my_admin</code> +  - Erstellen der benötigten Ordner für die phpMyAdmin Instanz. <code># mkdir -p /var/www/html/php_my_admin/tmp/</code> 
-  - Entpacken des heruntergeladenen Skriptes.. <code># unzip phpMyAdmin-4.7.7-all-languages.zip</code> +  - Entpacken des heruntergeladenen Skriptes.. <code># unzip phpMyAdmin-*-all-languages.zip</code> 
-  - Kopieren in das neu angelegte phpMyAdmin Webverzeichnis: <code># cp -av phpMyAdmin-4.7.7-all-languages/* /var/www/html/php_my_admin/</code>+  - Kopieren in das neu angelegte phpMyAdmin Webverzeichnis: <code># cp -av phpMyAdmin-*-all-languages/* /var/www/html/php_my_admin/</code>
   - Setzen der korrekten Berechtigungen: <code># chown -R apache:apache /var/www/html/php_my_admin/   - Setzen der korrekten Berechtigungen: <code># chown -R apache:apache /var/www/html/php_my_admin/
 # chmod -R 775 /var/www/html/php_my_admin/</code> # chmod -R 775 /var/www/html/php_my_admin/</code>
   - Umbenennen der Konfigurationsdatei, für den Produktiven Betrieb: <code># mv /var/www/html/php_my_admin/config.sample.inc.php /var/www/html/php_my_admin/config.inc.php</code>   - Umbenennen der Konfigurationsdatei, für den Produktiven Betrieb: <code># mv /var/www/html/php_my_admin/config.sample.inc.php /var/www/html/php_my_admin/config.inc.php</code>
   - Anschliessend, muss noch in der Konfiguration unter: ''/var/www/html/php_my_admin/config.inc.php'' beim Wert ''$cfg['blowfish_secret']'' ein mindestens **zwanzig stelliger MD5-Hash** zur internen Verschlüsselung von phpMyAdmin hinterlegt werden! Dies wird durch folgenden Befehl automatisiert: <code># sed -e "s/\['blowfish_secret'\] = ''/\['blowfish_secret'\] = '`date +%s | sha256sum | base64 | head -c 32; echo`'/" -i /var/www/html/php_my_admin/config.inc.php</code>   - Anschliessend, muss noch in der Konfiguration unter: ''/var/www/html/php_my_admin/config.inc.php'' beim Wert ''$cfg['blowfish_secret']'' ein mindestens **zwanzig stelliger MD5-Hash** zur internen Verschlüsselung von phpMyAdmin hinterlegt werden! Dies wird durch folgenden Befehl automatisiert: <code># sed -e "s/\['blowfish_secret'\] = ''/\['blowfish_secret'\] = '`date +%s | sha256sum | base64 | head -c 32; echo`'/" -i /var/www/html/php_my_admin/config.inc.php</code>
-  - Zum Abschluss werden noch die SELinux Berechtigungen gesetzt und diverse Aufräumungsarbeiten durchgeführt: <code># semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/php_my_admin/tmp(/.*)?' +  - Zum Abschluss werden die SELinux Berechtigungen gesetzt und diverse Aufräumungsarbeiten durchgeführt: <code># semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/php_my_admin/tmp(/.*)?' 
-# restorecon -Rv '/var/www/html/' +# restorecon -Rv '/var/www/html/'
 # rm -Rf phpMyAdmin-*</code> # rm -Rf phpMyAdmin-*</code>
  
Line 41: Line 41:
  
  
 +===== Konfiguration des Zugriffs auf phpMyAdmin =====
  
----- +ACHTUNG bei Variante 1 als sowohl Variante 2 müssen natürlich noch die beiden ersten ''Require ip XXX.XXX.X.X'' Werte auf die eigenen IP-Adressen angepasst werden. Es wird nur diesen IP's den Zugriff auf phpmyadmin gewährt.
- +
-===== Einschränken des phpMyAdmin Zugriffs =====+
  
 +<WRAP center box 100%>
 +==== Variante 1 - Verwenden des Standard Ports und einschränken des Zugriffs ====
  
-==== Hardening Beispiel für Apache2 ==== 
 Um den Zugriff auf unser phpMyAdmin Verzeichnis -> ''php_my_admin'' noch zusätzlich abzusichern und den Zugriff von aussen zu verbieten, kann wie folgt vorgegangen werden:  Um den Zugriff auf unser phpMyAdmin Verzeichnis -> ''php_my_admin'' noch zusätzlich abzusichern und den Zugriff von aussen zu verbieten, kann wie folgt vorgegangen werden: 
  
Line 60: Line 60:
 </code> </code>
  
-<sxh bash; first-line: 1>+<sxh bash; first-line: 1; highlight: [6,7]>
 # Web application to manage MySQL # Web application to manage MySQL
 # #
Line 66: Line 66:
     Options -Indexes +FollowSymLinks     Options -Indexes +FollowSymLinks
     AllowOverride None     AllowOverride None
-    Require ip 192.168.1.4 +    Require ip 192.168.1
-    Require ip 192.168.1.65+
     Require ip 127.0.0.1     Require ip 127.0.0.1
     Require ip ::1     Require ip ::1
Line 85: Line 84:
 </sxh> </sxh>
  
-Nach gemachten Änderungen, muss zum übernehmen der Konfigurationzwingend ein reload des Apache Webservers ausgeführt werden!+Nach gemachten Änderungen, muss zum übernehmen der Konfiguration zwingend ein reload des Apache Webservers ausgeführt werden!
  
 <code> <code>
Line 91: Line 90:
 </code> </code>
  
-<wrap em>Hardening complete!</wrap>+</WRAP>
  
 ---- ----
  
  
 +<WRAP center box 100%>
 +==== Variante 2 - Verwenden eines Custom-Ports und einschränken des Zugriffs ====
 +
 +Erstellen eines eigenen VirtualHosts (mit eigenen Port) auf welchem dann ausschliesslich auf phpmyadmin zugegriffen wird: 
 +
 +<code>
 +# vim /etc/httpd/conf.d/phpMyAdmin.conf
 +</code>
 +
 +<wrap em>ODER:</wrap> Für die SCL Repository Version
 +
 +<code>
 +# vim /opt/rh/httpd24/root/etc/httpd/conf.d/phpMyAdmin.conf
 +</code>
 +
 +<sxh bash; first-line: 1; highlight: [16,17]>
 +Listen 6060
 +
 +<VirtualHost *:6060>
 +    ServerAdmin michael.r467@gmail.com
 +
 +    ErrorLog "/var/log/httpd/phpmyadmin-error_log"
 +    CustomLog "/var/log/httpd/phpmyadmin-access_log" combined
 +
 +    # Web application to manage MySQL
 +    #
 +    DocumentRoot "/var/www/html/php_my_admin/"
 +
 +    <Directory "/var/www/html/php_my_admin">
 +        Options -Indexes +FollowSymLinks
 +        AllowOverride None
 +        Require ip 192.168.1
 +        Require ip 127.0.0.1
 +        Require ip ::1
 +    </Directory>
 +
 +    <Directory "/var/www/html/php_my_admin/libraries">
 +        Require all denied
 +    </Directory>
 +
 +    <Directory "/var/www/html/php_my_admin/setup/lib">
 +        Require all denied
 +    </Directory>
 +
 +    <Directory "/var/www/html/php_my_admin/setup/frames">
 +        Require all denied
 +    </Directory>
 +
 +</VirtualHost>
 +</sxh>
 +
 +Damit der Webserver auch andere Ports als ''80 / 8080 und 443'' binden kann muss folgende SELinux boolean aktiviert werden:
 +<code># setsebool -P nis_enabled 1</code>
 +
 +
 +Um die gemachten Änderungen zu übernehmen wird nun ein reload des Apache Webservers ausgeführt und anschliessend noch der separate Port 6060 geöffnet!
 +
 +<code>
 +# systemctl reload httpd
 +
 +# firewall-cmd --zone=public --add-port=6060/tcp --permanent
 +# firewall-cmd --reload
 +</code>
 +
 +</WRAP>
 +
 +----
 +
 +<wrap em>Setup complete!</wrap>
  • redhat/database-redhat/phpmyadmin-redhat.1583335268.txt.gz
  • Last modified: 2020/03/04 16:21
  • by michael