Server- und Hosting-Sicherheit
Selbst wenn Ihr Code fehlerfrei ist, bleibt die Website ungeschützt, wenn der Server falsch konfiguriert ist: Ein im Web-Stammverzeichnis vergessener Datenbank-Dump, ein Ordner, in den jeder schreiben darf, ein über unverschlüsseltes FTP gesendetes Passwort oder eine auf dem Bildschirm ausgegebene Fehlermeldung genügt, um einem Angreifer die Tür zu öffnen. Solche Probleme haben eines gemeinsam: Sie sind sehr leicht zu finden; automatische Scans probieren bekannte Dateinamen und verbreitete Konfigurationsfehler ununterbrochen durch.
Diese Anleitung führt die grundlegenden Maßnahmen auf, die für Shared Hosting und für selbst verwaltete Server gleichermaßen gelten. Die Beispiele beziehen sich auf Apache und PHP.
Kurz gefasst
- Verwenden Sie SFTP oder FTPS statt unverschlüsseltem FTP; vergeben Sie für jedes Konto ein eigenes Passwort.
- Dateien 644, Ordner 755; die Berechtigung 777 wird nicht vergeben.
- Lassen Sie im Web-Stammverzeichnis keine Backups, Dumps, .git-Ordner, .env-Dateien oder phpinfo-Dateien liegen.
- Schalten Sie die Verzeichnisauflistung und die Fehlerausgabe auf dem Bildschirm ab.
Auf dieser Seite
Vier Grundbereiche
-
Zugang: verschlüsselte Verbindung, getrennte Passwörter
Unverschlüsseltes FTP überträgt Benutzernamen und Passwort im Klartext über das Netz. Verwenden Sie für die Dateiübertragung SFTP (über SSH) oder FTPS (mit TLS verschlüsseltes FTP); schalten Sie unverschlüsseltes FTP nach Möglichkeit ab. Vergeben Sie für Hosting-Panel, FTP, Datenbank und Administrationsbereich jeweils unterschiedliche, lange Passwörter.
: Vergrößern -
Dateirechte: nicht mehr als nötig
Die allgemeine Empfehlung lautet
644für Dateien und755für Ordner. Konfigurationsdateien, die Passwörter enthalten, sollten stärker eingeschränkt sein. Die Berechtigung777bedeutet, dass jeder auf dem Server in diese Datei schreiben darf; ein 777, das vergeben wird, um ein „Es funktioniert nicht“ zu beheben, ist meist der Anfang des nächsten Sicherheitsproblems.
: Vergrößern -
Im Web-Stammverzeichnis nur Dateien, die veröffentlicht werden sollen
Jede Datei im Web-Stammverzeichnis kann von jedem abgerufen werden, der ihre Adresse kennt oder errät. Backups, Datenbank-Dumps, der Ordner
.git, die Datei.env, einephpinfo-Seite, Installationsskripte und Kopien, die Editoren hinterlassen, haben dort nichts zu suchen.
: Vergrößern -
Geben Sie keine Informationen preis
Ist die Verzeichnisauflistung eingeschaltet, sieht jeder den Inhalt der Ordner; ist die Fehleranzeige eingeschaltet, erscheinen Dateipfade, Abfragen und Konfigurationsdetails auf dem Bildschirm. Schalten Sie beides ab; Fehler gehören in das Protokoll.
: Vergrößern
Anzeichen: Woran erkennt man eine Fehlkonfiguration?
- Wenn Sie im Browser die Adresse eines Ordners öffnen, erscheint eine Dateiliste („Index of /...“).
- Eine fehlerhafte Adresse oder Eingabe führt zu einer PHP-Warnung auf dem Bildschirm, die Dateipfad und Zeilennummer enthält.
- Im Web-Stammverzeichnis liegen Dateien mit den Endungen
.zip,.sql,.bak,.oldoder mit Namen wiebackup,kopie,alt. - Die Adressen
ihre-domain.de/.git/,ihre-domain.de/.envoderihre-domain.de/phpinfo.phpliefern Inhalte statt „nicht gefunden“. Probieren Sie das an Ihrer eigenen Website aus. - Im Dateimanager gibt es Ordner mit der Berechtigung 777 oder beschreibbare Konfigurationsdateien.
- Ihr FTP-Programm warnt beim Verbinden vor einer „unverschlüsselten Verbindung“.
- Das Datenbank-Verwaltungswerkzeug (z. B. phpMyAdmin) ist für jeden unter einer leicht zu erratenden Adresse erreichbar.
Zugangskonten
- SFTP oder FTPS: Wählen Sie das Protokoll in Ihrem FTP-Programm ausdrücklich aus. Bestätigen Sie Zertifikatswarnungen nicht blind.
- Persönliche Konten: Legen Sie für Agentur, freie Entwickler und Mitarbeiter eigene Konten an; schließen Sie sie, wenn die Arbeit beendet ist. Bei einem gemeinsamen Konto wissen Sie nicht, wer was getan hat.
- Schränken Sie die Rechte ein: Ein FTP-Konto soll nur den Ordner sehen, den es benötigt.
- Zwei-Faktor-Authentifizierung: Schalten Sie sie im Hosting-Panel und in Ihrem Konto beim Domain-Registrar ein. Wird das Domain-Konto übernommen, können Website und E-Mail an einen anderen Ort umgeleitet werden.
- Wenn Sie SSH verwenden: Anmeldung per Schlüssel statt per Passwort, die Sperrung der direkten Anmeldung als
rootund ein aktuelles System sind die Grundmaßnahmen. - Wo Sie Passwörter speichern: Passwörter, die FTP-Programme im Klartext ablegen, sind ein Ziel von Schadsoftware, die Ihren Computer befällt. Verwenden Sie einen Passwortmanager und halten Sie Ihren Computer aktuell.
Dateirechte und Besitzverhältnisse
Die Ziffern der Berechtigung stehen der Reihe nach für die Rechte des Dateibesitzers, der Gruppe und aller übrigen Benutzer (4 Lesen, 2 Schreiben, 1 Ausführen).
- Dateien 644: Der Besitzer liest und schreibt, alle anderen lesen nur.
- Ordner 755: Der Besitzer schreibt; alle anderen dürfen den Ordner betreten und lesen.
- Konfigurationsdateien: 640 oder 600 für Dateien, die das Datenbankpasswort enthalten. Welche Variante funktioniert, hängt davon ab, unter welchem Benutzer PHP läuft; beachten Sie die Empfehlung Ihres Hosting-Anbieters.
- Beschreibbare Ordner: Nur Ordner, in die tatsächlich geschrieben werden muss, etwa Upload- und Cache-Ordner, sollten beschreibbar sein; schalten Sie in diesen Ordnern die Skriptausführung ab. Siehe Datei-Upload-Sicherheit.
Wenn Sie SSH-Zugang haben, korrigieren Sie die Rechte gesammelt so:
# Im Web-Stammverzeichnis ausführen: Ordner 755, Dateien 644
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
# Konfigurationsdatei mit Passwort: stärker eingeschränkt
chmod 640 ayarlar.phpVerzeichnisauflistung und sensible Dateien
Der folgende Block schaltet die Verzeichnisauflistung ab und sperrt den Zugriff auf Dateien und Ordner, die mit einem Punkt beginnen (.env, .git, .htpasswd), sowie auf verbreitete Backup-Endungen.
# Verzeichnisauflistung abschalten
Options -Indexes
# Dateien, die mit einem Punkt beginnen (.env, .htpasswd, .user.ini ...)
<FilesMatch "^\.">
Require all denied
</FilesMatch>
# Ordner, die mit einem Punkt beginnen (.git, .svn ...); außer .well-known
RedirectMatch 404 "/\.(?!well-known/)"
# Backups, Dumps und Editor-Kopien
<FilesMatch "(?i)(\.(sql|bak|old|orig|save|swp|log|ini|sh|dist)|~)$">
Require all denied
</FilesMatch>Diese Regeln sind die zweite Schicht; die eigentliche Lösung ist, solche Dateien gar nicht erst im Web-Stammverzeichnis zu haben:
- Backups: Bewahren Sie sie außerhalb des Web-Stammverzeichnisses und nach Möglichkeit auch außerhalb des Servers auf.
- Der Ordner
.git: Er enthält den gesamten Quellcode samt Historie. Übertragen Sie auf den Live-Server nur die Dateien, die veröffentlicht werden sollen. .envund Konfigurationsdateien: Legen Sie sie nach Möglichkeit eine Ordnerebene oberhalb des Web-Stammverzeichnisses ab.phpinfo-Seiten und Installationsskripte: Löschen Sie sie, sobald Sie fertig sind.- Editor-Kopien: Dateien wie
config.php.bak,config.php~oderconfig.php.savewerden nicht als PHP ausgeführt, sondern lassen sich als Klartext herunterladen, und die Passwörter darin sind lesbar. - Datenbank-Verwaltungswerkzeuge: Lassen Sie sie nicht dauerhaft offen; schützen Sie sie bei Bedarf durch eine IP-Beschränkung und ein zusätzliches Passwort.
PHP-Einstellungen
In der Live-Umgebung dürfen Fehler nicht auf dem Bildschirm erscheinen, sondern müssen in das Protokoll geschrieben werden. Die Einstellungen nehmen Sie in der php.ini vor, bei Hosting mit FPM in der .user.ini im Web-Stammverzeichnis oder über die PHP-Optionen im Hosting-Panel.
; Live-Umgebung
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = /home/benutzer/logs/php-error.log
expose_php = Off
allow_url_include = Off
session.cookie_secure = 1
session.cookie_httponly = 1
session.cookie_samesite = Lax
session.use_strict_mode = 1- Das Fehlerprotokoll muss außerhalb des Web-Stammverzeichnisses liegen oder für Zugriffe von außen gesperrt sein.
allow_url_includemuss ausgeschaltet bleiben.- Nicht benötigte PHP-Erweiterungen und gefährliche Funktionen abzuschalten, ist eine zusätzliche Schicht; tun Sie das in Kenntnis dessen, was Ihre Anwendung benötigt.
So verlagern Sie die Konfigurationsdatei aus dem Web-Stammverzeichnis heraus:
<?php
// public_html/index.php -> Einstellungen eine Ebene höher, über das Web nicht erreichbar
$ayarlar = require dirname(__DIR__) . '/gizli/ayarlar.php';
$pdo = new PDO(
'mysql:host=localhost;dbname=' . $ayarlar['db_ad'] . ';charset=utf8mb4',
$ayarlar['db_kullanici'],
$ayarlar['db_parola'],
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => false]
);Datenbankzugriff
- Nach außen geschlossen: Der Datenbankserver sollte nur lokale Verbindungen (
localhost) annehmen. Ist ein Fernzugriff nötig, geben Sie ihn nur für bestimmte IP-Adressen und nach Möglichkeit über einen verschlüsselten Tunnel frei. - Ein eigener Benutzer pro Website: Jede Website sollte ihre eigene Datenbank und ihren eigenen Benutzer verwenden; wird eine kompromittiert, bleiben die anderen unberührt.
- Minimale Rechte: Geben Sie dem Anwendungsbenutzer nur die Rechte, die er braucht. Siehe die Anleitung zur SQL-Injection.
- Passwort: Das Datenbankpasswort darf nirgendwo sonst verwendet und nicht in das Quellcode-Repository geschrieben werden.
Andere Websites im selben Konto
Liegen mehrere Websites im selben Hosting-Konto, können sie in der Regel auf die Dateien der jeweils anderen zugreifen. Wird die schwächste Website kompromittiert, sind auch die anderen betroffen. Vergessene Testseiten, alte Aktionsseiten und ungenutzte Subdomains sind die häufigsten Einfallstore.
- Entfernen Sie ungenutzte Websites und Subdomains.
- Hosten Sie wichtige Websites in getrennten Konten.
- Wird eine Website bereinigt, müssen alle Websites im selben Konto gemeinsam untersucht werden.
Fragen für die Auswahl eines Hosting-Angebots
Ein Teil der Serversicherheit liegt nicht in Ihrer Hand, sondern in der Ihres Anbieters. Klären Sie die folgenden Fragen, wenn Sie einen Vertrag abschließen oder Ihr bestehendes Angebot bewerten:
- Sind die Konten voneinander isoliert? Kann auf Ihre Dateien zugegriffen werden, wenn die Website eines anderen Kunden auf demselben Server kompromittiert wird?
- Welche PHP-Versionen werden angeboten; wann werden Versionen entfernt, deren Support abgelaufen ist?
- Gibt es SFTP oder FTPS und SSH-Zugang? Lässt sich unverschlüsseltes FTP abschalten?
- Bietet das Panel eine Zwei-Faktor-Authentifizierung?
- Wie oft werden Backups erstellt, wie viele Tage werden sie aufbewahrt, und können Sie die Wiederherstellung selbst durchführen?
- Wird ein kostenloses SSL-Zertifikat (z. B. Let's Encrypt) automatisch eingerichtet und erneuert?
- Haben Sie Zugriff auf Zugriffs- und Fehlerprotokolle; wie viele Tage werden sie aufbewahrt?
- Werden DDoS-Schutz und eine Web Application Firewall angeboten?
- Über welchen Kanal und zu welchen Zeiten ist der Support bei einem Sicherheitsvorfall erreichbar?
Der Preis sollte nicht das einzige Kriterium sein; Isolierung, Backups und Support machen im Ernstfall den Unterschied.
Checkliste
- Die Dateiübertragung erfolgt per SFTP oder FTPS; unverschlüsseltes FTP wird nicht verwendet.
- Die Passwörter für Panel, FTP, Datenbank und Administrator sind unterschiedlich; im Panel ist die Zwei-Faktor-Authentifizierung eingeschaltet.
- Jede Person verwendet ihr eigenes Konto; alte Konten sind geschlossen.
- Dateien 644, Ordner 755; nichts hat die Berechtigung 777; Konfigurationsdateien sind eingeschränkt.
- Die Verzeichnisauflistung ist abgeschaltet.
- Im Web-Stammverzeichnis liegen keine Backups, Dumps,
.git,.env,phpinfo, Installationsskripte oder Editor-Kopien. display_errorsist aus,log_errorsist an; das Protokoll ist von außen nicht erreichbar.- Die Datenbank ist für Zugriffe von außen gesperrt; jede Website verbindet sich mit einem eigenen Benutzer.
- Ungenutzte Websites und Subdomains sind entfernt.
Häufige Fragen
Was ist der Unterschied zwischen SFTP und FTPS?
Beide verschlüsseln die Verbindung, sind aber unterschiedliche Protokolle. SFTP läuft über SSH (in der Regel Port 22). FTPS ist das klassische FTP, verschlüsselt mit TLS. Verwenden Sie das, was Ihr Hosting-Anbieter anbietet; beide sind sicherer als unverschlüsseltes FTP.
Ein Plugin verlangt die Berechtigung 777 für einen Ordner; was soll ich tun?
Vergeben Sie sie nicht. Das Problem liegt meist an den Besitzverhältnissen der Dateien; mit 755 sollte es funktionieren. Wenn nicht, fragen Sie Ihren Hosting-Anbieter nach dem Dateibesitzer und danach, unter welchem Benutzer PHP läuft.
Was davon liegt beim Shared Hosting in meiner Hand?
Passwörter, FTP-Konten, Dateirechte, die Dateien im Web-Stammverzeichnis, .htaccess-Regeln sowie die PHP-Version und grundlegende PHP-Einstellungen liegen in der Regel bei Ihnen. Für die Aktualität von Betriebssystem, Webserver und Datenbankserver ist der Anbieter zuständig.
Kann ich die Backup-Datei unter einem nicht erratbaren Namen im Web-Stammverzeichnis ablegen?
Das ist nicht zu empfehlen. Dateinamen können über Protokolle, die Verzeichnisauflistung oder automatisches Durchprobieren bekannt werden. Bewahren Sie Backups außerhalb des Web-Stammverzeichnisses auf.
BYK Yazılım Support-Team
Diese Anleitung wird vom Support-Team von BYK Yazılım erstellt und regelmäßig überprüft. Letzte Aktualisierung: 04.10.2026.
Verwandte Anleitungen
- Datei-Upload-Sicherheit und WebshellsRegeln für sichere Uploads, Ausführung im Upload-Verzeichnis abschalten, Anzeichen einer Webshell und das Vorgehen nach einem Fund.
- Sicherheitsheader und HTTPSHSTS, CSP, X-Content-Type-Options, Referrer-Policy und Permissions-Policy; mit .htaccess-Beispiel.
- Software-Updates und Plugin-SicherheitCMS, Plugins, Themes und Bibliotheken aktuell halten, Ungenutztes entfernen und Lieferkettenrisiken begrenzen.
- Website-Backup und MonitoringDatei- und Datenbank-Backup, Wiederherstellungstest, Dateiintegrität, Protokolle und Verfügbarkeitsüberwachung.
Sehen wir uns Ihre Website gemeinsam an
BYK Yazılım entwickelt Unternehmenswebsites. Schreiben Sie uns, wenn Sie Fragen zu Ihrer Website haben.
Kontakt aufnehmen Unsere Leistung: Unternehmenswebsite