[gelöst] phpmyadmin SSL https

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
feldmaus
Beiträge: 1308
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

[gelöst] phpmyadmin SSL https

Beitrag von feldmaus » 28.04.2010 12:04:34

Guten Morgen,

als nächstes wollte ich phpmyadmin( Version 4:2.11.8.1-5+lenny4) sicher konfigurieren, auf meinem Debian Lenny (2.6.32.11) Server. Es soll nur über SSL, also http://server/phpmyadmin/ erreichbar sein. Meine derzeitige config sieht wie folgt aus:

Code: Alles auswählen

<?php

/**
 * This example configuration shows how to configure phpMyAdmin for
 * many hosts that all have identical configuration otherwise. To add
 * a new host, just drop it into $hosts below. Contributed by
 * Matthew Hawkins.
 */

$i=0;
// Hosts which contain a MySQL Server
$hosts = array (
    "localhost",
    "feld-bert.feldland.lan",
);

foreach ($hosts as $host) {
    $i++;
    $cfg['Servers'][$i]['host']     = $host;
    $cfg['Servers'][$i]['port']     = '';
    $cfg['Servers'][$i]['socket']   = '';
    $cfg['Servers'][$i]['connect_type']     = 'tcp';
    $cfg['Servers'][$i]['extension']        = 'mysql';
    $cfg['Servers'][$i]['compress'] = FALSE;
    $cfg['Servers'][$i]['controluser']      = 'pma';
    $cfg['Servers'][$i]['controlpass']      = 'pmapass';
    $cfg['Servers'][$i]['ForceSSL']      = 'true';
    // Whether to enable SSL for connection to MySQL server.
    //$cfg['Servers'][$i]['ssl'] 		= 'false';
    $cfg['Servers'][$i]['auth_type']        = 'http';
    $cfg['Servers'][$i]['user']     = '';
    $cfg['Servers'][$i]['password'] = '';
    $cfg['Servers'][$i]['only_db']  = '';
    $cfg['Servers'][$i]['verbose']  = '';
    $cfg['Servers'][$i]['pmadb']    = 'phpmyadmin';
    $cfg['Servers'][$i]['bookmarktable']    = 'pma_bookmark';
    $cfg['Servers'][$i]['relation'] = 'pma_relation';
    $cfg['Servers'][$i]['table_info']       = 'pma_table_info';
    $cfg['Servers'][$i]['table_coords']     = 'pma_table_coords';
    $cfg['Servers'][$i]['pdf_pages']        = 'pma_pdf_pages';
    $cfg['Servers'][$i]['column_info']      = 'pma_column_info';
    $cfg['Servers'][$i]['history']  = 'pma_history';
    $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
}
Dabei habe ich SSL zwar aktiviert, aber er nutzt weiterhin http. Ist <auth_type> schlimm, wenn man das Passwort nicht im Cookie speichert? Wenn ich <http> als <auth_type> eingebe, kommt nicht mehr das schöne Eingangsfenster, wo ich Sprache und Server wählen kann. Was muss ich noch machen um https zu erhalten? Laut http://wiki.phpmyadmin.net/pma/Config#ssl wird PHP >= 4.3.0 benötigt. Installiert ist bei mir:

Code: Alles auswählen

ii  libapache2-mod-php5                5.2.6.dfsg.1-1+lenny8      server-side, HTML-embedded scripting languag
ii  php5-common                        5.2.6.dfsg.1-1+lenny8      Common files for packages built from the php
ii  php5-gd                            5.2.6.dfsg.1-1+lenny8      GD module for php5
ii  php5-mcrypt                        5.2.6.dfsg.1-1+lenny8      MCrypt module for php5
ii  php5-mysql                         5.2.6.dfsg.1-1+lenny8      MySQL module for php5
ii  phpmyadmin                         4:2.11.8.1-5+lenny4        MySQL web administration tool
hat Jemand einen Tipp für mich?
Weiterhin wollte ich den Zugriff auf mein lokales Netz beschränken. Wie geht das?

Als Fehler bekomme ich,

Code: Alles auswählen

Verbindung für den controluser, wie er in Ihrer Konfiguration angegeben ist, ist fehlgeschlagen.
Grüße Markus
Zuletzt geändert von feldmaus am 29.04.2010 22:15:06, insgesamt 1-mal geändert.

Benutzeravatar
minimike
Beiträge: 5616
Registriert: 26.03.2003 02:21:19
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: Köln
Kontaktdaten:

Re: phpmyadmin SSL https

Beitrag von minimike » 28.04.2010 12:23:58

Datt machst du mit dem Webserver ;)
Benutzt du Vhost's? Oder alles auf einer Seite?
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft

Benutzeravatar
feldmaus
Beiträge: 1308
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

Re: phpmyadmin SSL https

Beitrag von feldmaus » 28.04.2010 12:52:07

minimike hat geschrieben:Datt machst du mit dem Webserver ;)
Benutzt du Vhost's? Oder alles auf einer Seite?
Hi Mike,

Vhost's benutze ich nicht. Habe erst gestern das erste mal davon gehört. Wie meinst Du das mit alles auf einer Seite? Also meine zukünftige Homepage (die html Dateien ...) und die Seiten für phpmyadmin liegen an unterschiedlichen Stellen. Es sind zwar 2 Hosts eingetragen, aber eigentlich benötige ich nur den localhost, vielleicht mal irgendwann feld-bert.feldland.lan. Zur zeit aber nicht.

Benutzeravatar
minimike
Beiträge: 5616
Registriert: 26.03.2003 02:21:19
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: Köln
Kontaktdaten:

Re: phpmyadmin SSL https

Beitrag von minimike » 28.04.2010 13:11:54

Mit alles auf einer Seite meinte ich das Du zum Bleistift mit http://localhost auf deine HTML Seite kommst. Und mit http://localhost/phpmyadmin auf PHPmyAdmin gelangst. Entweder weil die Software im Dokumentroot liegt oder Du mit Alias und Location arbeitest.

Folgende Strafarbeiten werden dir nun aufgetragen:

Erzeuge dir mit OpenSSL selbstsignierte Zertifikate.
Konfiguiere deinen Apache für SSL
Also Port (443) und alles was dazu gehört
Füttere deinen Apache mit deinen Zertifikaten
Du wirst so oder so mit Vhosten arbeiten. Fang gleich damit an.

Direkt der erste Eintrag in Google
http://venthur.de/Linux/ApacheSSLHOWTO
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft

Benutzeravatar
feldmaus
Beiträge: 1308
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

Re: phpmyadmin SSL https

Beitrag von feldmaus » 28.04.2010 15:40:21

Danke Mike für deinen Arbeitsauftrag, :-)

da habe ich auch gleich ein paar Fragen zu. Als Beispiel habe ich mir einen VHost-Eintrag raußgesucht:

Code: Alles auswählen

NameVirtualHost *:443
<VirtualHost *:443>
# SSL (START)
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLCertificateKeyFile /etc/apache2/ssl/ZERTIFIKATSNAME.0
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
# SSL (ENDE)
ServerAdmin EMAIL
#kann auch einfach eine IP sein
ServerName www.Domain.DE
ServerAlias Domain.DE w.Domain.DE ww.Domain.DE
DocumentRoot /var/www/PFAD/ZUR/WEBSEITE
<Directory //var/www/PFAD/ZUR/WEBSEITE>
Order Deny,Allow
Allow from all
# Don’t show indexes for directories
Options -Indexes
</Directory>
</VirtualHost>
Muss NameVirtualHost durch localhost, oder feldland.dyndns.org ersetzt werden?
Kann ich im Diretory-Abschnitt mit Allow from localhost den Zugriff auf mein lokales Netzwerk beschränken, oder gilt localhost als Platzhalter für alle internen Netzerk-Schnittstellen, also auch ppp0 ?
Was mache ich, wenn ich 2 Homepages machen will? Z.b. habe ich bei dyndns.org feldland.dyndns.org und echte-dsa-helden.dyndns.org registriert. Benötige ich dann 2 Konfigurations-Dateien?

Grüße Markus

Benutzeravatar
minimike
Beiträge: 5616
Registriert: 26.03.2003 02:21:19
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: Köln
Kontaktdaten:

Re: phpmyadmin SSL https

Beitrag von minimike » 28.04.2010 16:11:07

NameVirtualHost IP (z.B. 192.168.0.1) oder Sternchen (*)

Die Namen regeln
ServerName IP oder DNS

Sowie nachstehend für alle weiteren Namen
ServerAlias DNS

Zugriff nur localhost:
Allow from 127.0.0.1

Zugriff nur vom privaten Subnet
Allow from 192.168.0.0/24

Zugriff nur von einer IP aus dem privaten Subnet
Allow from 192.168.0.199

Wenn du mit HTML zwei unterschiedliche Seiten betreiben willst sind in der Regel 2 Configs durchaus angebracht.

Ich würde allerdings heute nie wieder per dyndns eine Seite rundum die Uhr betreiben. Erst mal wegen der Sicherheit, dem Arbeitsaufwand, sowie dem Preis. Denn billiger Space für 5,- € steht überall bereit wie Schlampen an den Lampen ;)

edit: kleinen Fehler korrigiert
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft

Benutzeravatar
feldmaus
Beiträge: 1308
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

Re: phpmyadmin SSL https

Beitrag von feldmaus » 28.04.2010 21:07:19

Danke Mike,

ich habe ssl auf Port 443 soweit hinbekommen.

Kannst Du mir die Verbindung zwischen den Dateien /etc/apache2/site-enabled/default /etc/apache2/site-enabled/default-ssl und den phpmyadmin-HTML-Dateien erklären?

Und woher weiß er welche HTML-Dateien er laden muss, wenn ich http://feld-server/phpmyadmin/ eingebe? Wie verhindere ich jetzt, dass Leute auf Port 80 bei mir rauf kommen, ohne Fehlermeldungen in meinen Log-Dateien? Muss ich die Datei port.conf anpassen und den symbolischen Link /etc/apache2/site-enabled/default löschen?

Hier ist meine /etc/apache2/sites-enabled/default-ssl
NoPaste-Eintrag34561

grüße Markus

Benutzeravatar
minimike
Beiträge: 5616
Registriert: 26.03.2003 02:21:19
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: Köln
Kontaktdaten:

Re: phpmyadmin SSL https

Beitrag von minimike » 29.04.2010 02:36:51

feldmaus hat geschrieben:Danke Mike,
ich habe ssl auf Port 443 soweit hinbekommen.
Gerne :)
feldmaus hat geschrieben: Kannst Du mir die Verbindung zwischen den Dateien /etc/apache2/site-enabled/default /etc/apache2/site-enabled/default-ssl und den phpmyadmin-HTML-Dateien erklären?
beides sind halt Vhoste
feldmaus hat geschrieben: Und woher weiß er welche HTML-Dateien er laden muss, wenn ich http://feld-server/phpmyadmin/ eingebe? Wie verhindere ich jetzt, dass Leute auf Port 80 bei mir rauf kommen, ohne Fehlermeldungen in meinen Log-Dateien? Muss ich die Datei port.conf anpassen und den symbolischen Link /etc/apache2/site-enabled/default löschen?
Das kannst du mit einem Proxy oder mit DNS regeln. Stichworte DNS: BIND, MARADNS, /etc/hosts.
Wenn du verhindern willst das leute von extern bei dir auf Port 80 gelangen kannst du das mit dem Apache Modul Rewrite regeln. Folgender Vhost schickt alles von Port 80 nach Port 443

Code: Alles auswählen

<VirtualHost 192.168.1.111:80>
ServerName meinegeile.tld
ServerAlias www.meinegeile.tld
        RewriteEngine on
        RewriteCond %{SERVER_PORT} !^443$
        RewriteRule ^.*$  https://%{HTTP_HOST}/$1   [L]
</VirtualHost>
alles kloar :)
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft

Benutzeravatar
feldmaus
Beiträge: 1308
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

Re: phpmyadmin SSL https

Beitrag von feldmaus » 29.04.2010 11:41:35

Ich habe mal folgende Regeln erstellt. Erst soll alles umgeleitet werden von Port 80 auf 443:
/etc/apache2/sites-available/umleiten
NoPaste-Eintrag34563

Und dann habe ich für feld-server und echte-dsa-helden.dyndns.org folgende Dateien erstellt:
/etc/apache2/sites-available/echte-dsa-helden.dyndns.org
NoPaste-Eintrag34564

/etc/apache2/sites-available/feld-server
NoPaste-Eintrag34565

Ich habe folgende Meldungen erhalten

Code: Alles auswählen

Starting web server: apache2[Thu Apr 29 11:40:00 2010] [error] (EAI 2)Name or service not known: Could not resolve host name echte-das-helden.dyndns.org -- ignoring!
[Thu Apr 29 11:40:00 2010] [warn] NameVirtualHost echte-dsa-helden.dyndns.org:443 has no VirtualHosts
[Thu Apr 29 11:40:00 2010] [warn] NameVirtualHost feldland.dyndns.org:80 has no VirtualHosts
[Thu Apr 29 11:40:00 2010] [warn] NameVirtualHost *:80 has no VirtualHosts
Und in /var/log/apach2/error.log steht:

Code: Alles auswählen

[Thu Apr 29 11:40:00 2010] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Thu Apr 29 11:40:00 2010] [warn] RSA server certificate CommonName (CN) `Markus Feldmann' does NOT match server name!?
[Thu Apr 29 11:40:00 2010] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Thu Apr 29 11:40:01 2010] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Thu Apr 29 11:40:01 2010] [warn] RSA server certificate CommonName (CN) `Markus Feldmann' does NOT match server name!?
[Thu Apr 29 11:40:01 2010] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Thu Apr 29 11:40:01 2010] [notice] Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny8 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g configured -- resuming normal operations
Mir ist weiterhin aufgefallen, dass die Umleitung nicht richtig funkioniert. Wenn ich http://feld-server/phpmyadmin eingebe, dann geht er zu https://feld-server/ und das wars, dabei soll er gleich nach https://feld-server/phpmyadmin gehen. Ich will ja nur das http durch https ersetzt wird. Wiche mache ich das?

Grüße Markus

Benutzeravatar
feldmaus
Beiträge: 1308
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

Re: phpmyadmin SSL https

Beitrag von feldmaus » 29.04.2010 19:38:05

Bin ein wenig weiter gekommen. Namens basierte Virtuelle Host werden durch die Direktive NameVirtualHost eingeleitet, nur dann handelt es sich auch um Namens basierte Virtuelle Host's, ohne diese Direktive sind es lediglich IP-basierte Virtuelle Hosts. wenn ein Client eine Anfrage stellt, dann sendet er auch die Namen mit, bei mir z.b. echte-dsa-helden.dyndns.org. Die Unterscheidung der Virtuellen Host's durch diese Namen geht aber nur bei Namen basierten Host's.

Auch darf man nicht mehrere Namens basierte Virtuelle Host's an den gleichen Netzwerkschnittstellen lauschen lassen? Z.b. war bei mir in /etc/apache/ports.conf schon

Code: Alles auswählen

NameVirtualHost *:80
definiert.
Und in /etc/apache2/sites-available/umleiten habe ich einen gleichen Namens basierten Virtuellen Host definiert:

Code: Alles auswählen

NameVirtualHost *:80
Das geht nicht. ich weiß nicht ob es schlimm ist, aber ich habe die direktive in /etc/apache/ports.conf raus genommen.

Für meine SSL-Namens basierten Virtuellen Hosts habe ich allerdings 2 fast ähnliche Direktiven, die sich gegenseitig nicht stören, da sie sie nicht gleich sind:
/etc/apache2/sites-available/echte-dsa-helden.dyndns.org

Code: Alles auswählen

<IfModule mod_ssl.c>
NameVirtualHost *:443
<VirtualHost *:443>
	...
</VirtualHost>
</IfModule>
/etc/apache2/sites-available/feld-server

Code: Alles auswählen

<IfModule mod_ssl.c>
NameVirtualHost feld-server:443
<VirtualHost feld-server:443>
	...
</VirtualHost>
</IfModule>
Erst wird geprüft od das SSL Modul geladen wurde, was ja bei beiden der Fall ist. Im unteren Fall wird jedoch ein Namens basierter Virtueller host auf feld-server (192.168.0.1) aufgesetzt. Der obere Namens basierte Virtuelle Host lauscht sowohl an meiner ppp0 also auch an feld-server (192.168.0.1 oder auch br0 genannt).

Grüße Markus

Benutzeravatar
feldmaus
Beiträge: 1308
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

Re: phpmyadmin SSL https

Beitrag von feldmaus » 29.04.2010 19:56:14

Ich würde mich freuen wenn mir Jemand noch mal ein paar Sicherheitstipps geben könnte!

Hier meine Configs:
/etc/apache2/sites-available/umleiten
NoPaste-Eintrag34566

/etc/apache2/sites-available/echte-dsa-helden.dyndns.org
NoPaste-Eintrag34567

/etc/apache2/sites-available/feld-server
NoPaste-Eintrag34568

/etc/apache2/port.conf

Code: Alles auswählen

Listen 80

<IfModule mod_ssl.c>
    Listen 443
</IfModule>

Antworten