Both sides previous revision Previous revision Next revision | Previous revision |
redhat:database-redhat:phpmyadmin-redhat [2020/03/04 16:21] – [Voraussetzungen] michael | redhat:database-redhat:phpmyadmin-redhat [2020/06/04 19:58] (current) – [Konfiguration des Zugriffs auf phpMyAdmin] michael |
---|
| |
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 ===== |
- 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> |
| |
| |
| |
| ===== 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: |
| |
</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 |
# | # |
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 |
</sxh> | </sxh> |
| |
Nach gemachten Änderungen, muss zum übernehmen der Konfiguration; zwingend 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> |
</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> |