2016-04-09 4 views
2

Neulich geschah etwas auf meiner Website (s) und es erschreckte mich, und zeigte mir, dass ich einen Sicherheitsfehler in meinem Apache Virtual-Host habe Konfiguration.Sichern Sie meine PHP-Dateien für den Fall, dass das PHP-Modul von Apache nicht funktioniert

Ich benutze php7.0 von DotDeb. Ich war sudo apt-get upgrade in meinem Debian Jessie, und aus irgendeinem Grund wurde das PHP-Modul von Apache deaktiviert. Das habe ich nicht bemerkt, aber die Folge war, dass alle meine PHP-Dateien auf meiner Website herunterladbar sind! Dies führt zu einem Sicherheitsrisiko, da zum Beispiel meine Datenbankkennwörter für die Besucher meiner Website sichtbar wurden.

Was ist die richtige Konfiguration, die garantiert, dass ein solches Ereignis nicht passieren wird? Zum Beispiel, wie kann ich Apache fehlschlagen, wenn PHP nicht vorhanden ist? Oder irgendeine andere Lösung, die meinen Website-Besuchern meine PHP-Dateien in solch einer Veranstaltung nicht geben wird!

Das Folgende ist meine aktuelle Konfiguration des virtuellen Hosts.

<VirtualHost *:443> 
    DocumentRoot /web/root/directory 
    ServerName www.example.com 

    <IfModule mod_rewrite.c> 
     RewriteEngine On 
    </IfModule> 
    php_admin_flag engine on 
    SSLEngine on 
    SSLProtocol all -SSLv2 -SSLv3 
    SSLCompression off 
    SSLCipherSuite AES256+EECDH:AES256+EDH 

    SSLCertificateFile /path/to/cert.crt 
    SSLCertificateKeyFile /path/to/key.key 
    SSLCertificateChainFile /path/to/chain.chn 
</VirtualHost> 
+4

Bewegen Sie den PHP-Dateien (mit der möglichen Ausnahme von index.php), die außerhalb des Web-Root und dessen Unterordner –

+0

@MarkBaker Es ist eigentlich Wordpress, ich nicht diese Art von Freiheit. –

+1

@TheQuantumPhysicist Sie tun mit der Konfigurationsdatei. Sehen Sie den [Hardening WordPress] (http://codex.wordpress.org/Hardening_WordPress) Artikel im Codex, unter "Securing wp-config.php" - Sie können Ihre wp-config um ein Verzeichnis oberhalb Ihres Web-Root verschieben, also Es ist für Browser nicht zugänglich. Dort finden Sie auch Tricks für htaccess-Konfigurationen, die unabhängig von PHP sind, um andere Probleme zu vermeiden. (Ich stimme zu ServerFault, da es mehr Serverkonfiguration als Programmierung ist.) –

Antwort

1

Vielleicht möchten Sie so etwas?

<Directory /> 
    <IfModule !mod_php7.c> 
     Deny from all 
    </IfModule> 
</Directory> 
+1

Snarky Hinweis: das wird als PHP auf PHP7 schmerzhaft sein. :-p Ansonsten, guter zusätzlicher Schritt. – ceejayoz

+0

@ceejayoz Richtig du bist. Ich habe die Frage nicht richtig gelesen. – Chris

+0

@Chris Vielen Dank! Das tut es! Obwohl ich für einen Test das "!" nicht Operator, um zu sehen, ob es funktioniert, und apache warf einen Fehler auf 'configtest':' AH00526: Syntaxfehler in Zeile 6 von /etc/apache2/conf-available/theconf.conf: dene hier nicht erlaubt '. Ist das das beabsichtigte Verhalten? –