> For the complete documentation index, see [llms.txt](https://docs.instantroot.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.instantroot.de/kvm-server/linux/403-forbidden-beheben.md).

# 403 Forbidden beheben

Ein 403-Fehler bedeutet, dass der Webserver die Anfrage verstanden hat, den Zugriff aber nicht erlaubt.

Die Webseite oder Datei existiert also möglicherweise, darf aber nicht ausgeliefert werden. Das Problem liegt meistens an Dateirechten, fehlenden Index-Dateien, falscher Webserver-Konfiguration oder Zugriffsbeschränkungen.

### Was bedeutet 403 Forbidden?

Die Meldung `403 Forbidden` bedeutet übersetzt: Zugriff verboten.

Der Server ist erreichbar, verweigert aber den Zugriff auf die angeforderte Seite.

Typische Anzeigen im Browser sind:

* `403 Forbidden`
* `Forbidden`
* `You don't have permission to access this resource`
* `Access denied`
* `nginx 403 Forbidden`
* `Apache 403 Forbidden`

### Häufige Ursachen

Ein 403-Fehler entsteht häufig durch:

* falsche Datei- oder Ordnerrechte
* falschen Besitzer von Dateien
* fehlende Startdatei wie `index.html` oder `index.php`
* deaktiviertes Directory Listing
* falsches Webroot-Verzeichnis
* fehlerhafte `.htaccess`-Regeln
* Zugriffsbeschränkung durch Apache oder Nginx
* blockierende Firewall- oder Sicherheitsregel
* falsche Konfiguration nach einem Upload
* fehlende Berechtigungen nach einer Migration

### Erste Prüfung

Prüfe zuerst, ob die Webseite grundsätzlich erreichbar ist.

1. Öffne deine Domain im Browser.
2. Prüfe, ob der Fehler auf der gesamten Webseite oder nur auf einer bestimmten Unterseite erscheint.
3. Prüfe, ob der Webserver läuft.
4. Prüfe, ob die Dateien im richtigen Verzeichnis liegen.
5. Prüfe, ob eine Startdatei vorhanden ist.

Typische Startdateien sind:

* `index.html`
* `index.php`
* `index.htm`

Wenn keine Startdatei vorhanden ist und Directory Listing deaktiviert ist, zeigt der Server häufig einen 403-Fehler an.

### Webserver prüfen

Prüfe zuerst, ob dein Webserver läuft.

Bei Apache:

`systemctl status apache2`

Bei Nginx:

`systemctl status nginx`

Wenn der Dienst nicht läuft, starte ihn neu.

Apache starten:

`systemctl start apache2`

Nginx starten:

`systemctl start nginx`

Nach Änderungen an der Konfiguration solltest du den Webserver neu laden.

Apache neu laden:

`systemctl reload apache2`

Nginx neu laden:

`systemctl reload nginx`

### Webroot prüfen

Das Webroot ist der Ordner, aus dem dein Webserver die Webseite ausliefert.

Häufige Webroot-Verzeichnisse sind:

* `/var/www/html`
* `/var/www/deinedomain.de`
* `/home/benutzer/web`
* `/usr/share/nginx/html`

Wenn deine Dateien im falschen Ordner liegen, kann der Webserver sie nicht korrekt ausliefern.

Prüfe, welches Webroot in deiner Apache- oder Nginx-Konfiguration eingetragen ist.

### Startdatei prüfen

Ein häufiger Grund für `403 Forbidden` ist eine fehlende Startdatei.

Wenn du nur einen Ordner aufrufst, sucht der Webserver nach einer Startdatei.

Beispiel:

`https://deinedomain.de/`

Der Webserver sucht dann zum Beispiel nach:

* `index.html`
* `index.php`

Prüfe im Webroot, ob eine solche Datei vorhanden ist.

Beispiel:

`ls -la /var/www/html`

Wenn keine Startdatei vorhanden ist, lege eine an oder lade deine Webseite vollständig hoch.

Beispiel für eine einfache Testdatei:

`echo "Webseite funktioniert" > /var/www/html/index.html`

Danach rufst du deine Domain erneut im Browser auf.

### Dateirechte prüfen

Falsche Rechte sind eine der häufigsten Ursachen für 403-Fehler.

Der Webserver muss Dateien lesen und Ordner betreten können.

Unter Linux gelten meistens folgende Standardrechte:

| Typ     | Empfohlenes Recht |
| ------- | ----------------- |
| Ordner  | `755`             |
| Dateien | `644`             |

Ordnerrechte setzen:

`find /var/www/html -type d -exec chmod 755 {} \;`

Dateirechte setzen:

`find /var/www/html -type f -exec chmod 644 {} \;`

Passe `/var/www/html` an dein tatsächliches Webroot an.

### Besitzer prüfen

Neben den Dateirechten muss auch der Besitzer stimmen.

Bei Apache und Nginx läuft der Webserver oft unter dem Benutzer `www-data`.

Auf Debian und Ubuntu ist häufig dieser Besitzer sinnvoll:

`chown -R www-data:www-data /var/www/html`

Bei anderen Systemen oder Panels kann der Benutzer abweichen.

Häufige Webserver-Benutzer sind:

* `www-data`
* `apache`
* `nginx`
* ein eigener Benutzer des Webspaces oder Panels

Prüfe deshalb vorher, unter welchem Benutzer dein Webserver läuft.

Apache-Prozesse anzeigen:

`ps aux | grep apache`

Nginx-Prozesse anzeigen:

`ps aux | grep nginx`

### Apache-Konfiguration prüfen

Wenn du Apache verwendest, kann ein 403-Fehler durch eine falsche Directory-Konfiguration entstehen.

Prüfe deine VirtualHost-Konfiguration.

Typische Datei:

`/etc/apache2/sites-available/deinedomain.conf`

Ein einfacher Apache-VirtualHost kann so aussehen:

`<VirtualHost *:80>`

`ServerName deinedomain.de`

`DocumentRoot /var/www/html`

`<Directory /var/www/html>`

`AllowOverride All`

`Require all granted`

`</Directory>`

`</VirtualHost>`

Wichtig ist vor allem:

`Require all granted`

Wenn diese Zeile fehlt oder falsch gesetzt ist, kann Apache den Zugriff verweigern.

Nach Änderungen Apache-Konfiguration prüfen:

`apache2ctl configtest`

Apache neu laden:

`systemctl reload apache2`

### Nginx-Konfiguration prüfen

Wenn du Nginx verwendest, prüfe den eingetragenen `root`-Pfad.

Typische Datei:

`/etc/nginx/sites-available/deinedomain`

Ein einfacher Nginx-Serverblock kann so aussehen:

`server {`

`listen 80;`

`server_name deinedomain.de;`

`root /var/www/html;`

`index index.html index.php;`

`}`

Wichtig ist:

* `root` zeigt auf das richtige Webroot
* `index` enthält die richtige Startdatei
* Dateien im Webroot sind lesbar
* Ordner sind betretbar

Nach Änderungen Nginx-Konfiguration prüfen:

`nginx -t`

Nginx neu laden:

`systemctl reload nginx`

### .htaccess prüfen

Bei Apache kann eine `.htaccess`-Datei den Zugriff blockieren.

Prüfe im Webroot, ob eine `.htaccess` vorhanden ist.

Befehl:

`ls -la /var/www/html`

Typische problematische Regeln sind:

`Deny from all`

`Require all denied`

Oder Zugriffsbeschränkungen auf bestimmte IP-Adressen.

Zum Test kannst du die Datei kurz umbenennen:

`mv /var/www/html/.htaccess /var/www/html/.htaccess.bak`

Lade danach die Webseite neu.

Wenn der Fehler verschwindet, liegt das Problem an einer Regel in der `.htaccess`.

### Directory Listing

Wenn du einen Ordner ohne Startdatei aufrufst, kann der Webserver versuchen, den Inhalt des Ordners anzuzeigen.

Viele Server verbieten das aus Sicherheitsgründen. Dann erscheint ein 403-Fehler.

Das ist normal und oft sogar gewollt.

Lösung:

* Startdatei wie `index.html` oder `index.php` anlegen
* richtige Webseite hochladen
* Directory Listing bewusst aktivieren, falls wirklich benötigt

Directory Listing sollte nur aktiviert werden, wenn du genau weißt, warum du es brauchst.

### PHP-Dateien prüfen

Wenn deine Webseite PHP nutzt, muss PHP korrekt eingerichtet sein.

Bei Apache wird häufig `libapache2-mod-php` oder PHP-FPM verwendet.

Bei Nginx wird PHP fast immer über PHP-FPM eingebunden.

Wenn PHP falsch eingebunden ist, kann es je nach Konfiguration zu Fehlern kommen.

Prüfe bei PHP-Webseiten:

* ist PHP installiert?
* läuft PHP-FPM?
* stimmt der PHP-Socket?
* zeigt `index` auf `index.php`?
* sind PHP-Dateien lesbar?

PHP-FPM prüfen:

`systemctl status php*-fpm`

### Logs prüfen

Die Logs zeigen meistens genauer, warum der Zugriff verweigert wird.

#### Apache Logs

Typische Dateien:

* `/var/log/apache2/error.log`
* `/var/log/apache2/access.log`

Live mitlesen:

`tail -f /var/log/apache2/error.log`

#### Nginx Logs

Typische Dateien:

* `/var/log/nginx/error.log`
* `/var/log/nginx/access.log`

Live mitlesen:

`tail -f /var/log/nginx/error.log`

Achte in den Logs auf Meldungen wie:

* `permission denied`
* `directory index is forbidden`
* `client denied by server configuration`
* `access forbidden by rule`
* `open() failed`

Diese Meldungen zeigen meist direkt die Ursache.

### SELinux prüfen

Bei AlmaLinux, Rocky Linux oder anderen RHEL-basierten Systemen kann SELinux den Zugriff blockieren.

Prüfe den SELinux-Status:

`sestatus`

Wenn SELinux aktiv ist, können falsche Dateikontexte einen 403-Fehler verursachen.

Für Webdateien kann folgender Befehl helfen:

`restorecon -Rv /var/www/html`

Passe den Pfad an dein Webroot an.

SELinux sollte nicht einfach dauerhaft deaktiviert werden, ohne die Ursache zu verstehen.

### Zugriffsbeschränkungen prüfen

Manche Konfigurationen erlauben Zugriff nur für bestimmte IP-Adressen.

Prüfe deshalb:

* Apache-Directory-Regeln
* Nginx-Location-Regeln
* `.htaccess`
* Webpanel-Sicherheitsregeln
* Firewall-Regeln
* Sicherheitsplugins von CMS-Systemen

Wenn du dich aus einem anderen Netzwerk verbindest, kann sich auch deine öffentliche IP-Adresse geändert haben.

### CMS-Systeme prüfen

Bei WordPress, Joomla, Shopware oder anderen CMS-Systemen kann ein 403-Fehler auch durch Plugins, Themes oder Sicherheitsfunktionen entstehen.

Prüfe:

* Sicherheitsplugins
* Wartungsmodus
* fehlerhafte `.htaccess`
* Dateirechte nach Updates
* beschädigte Uploads
* blockierte Adminbereiche
* fehlende PHP-Berechtigungen

Bei WordPress kannst du zum Test Sicherheitsplugins vorübergehend deaktivieren, indem du den Plugin-Ordner umbenennst.

Beispiel:

`mv /var/www/html/wp-content/plugins /var/www/html/wp-content/plugins_off`

Danach prüfst du, ob die Webseite wieder erreichbar ist.

### Nach Upload oder Migration

Nach einem Upload per SFTP, SCP oder Migration können Rechte und Besitzer falsch gesetzt sein.

Typische Probleme:

* Dateien gehören dem falschen Benutzer
* Ordner haben keine Ausführungsrechte
* `.htaccess` wurde nicht übertragen
* versteckte Dateien fehlen
* Webroot wurde falsch gewählt
* Startdatei liegt in einem Unterordner

Prüfe nach einer Migration besonders:

* Webroot
* Besitzer
* Dateirechte
* Startdatei
* `.htaccess`
* PHP-Version
* Datenbankverbindung

### Schnelle Prüfreihenfolge

Gehe bei einem 403-Fehler am besten so vor:

1. Prüfe, ob der Webserver läuft.
2. Prüfe, ob die Domain auf den richtigen Server zeigt.
3. Prüfe, ob die Dateien im richtigen Webroot liegen.
4. Prüfe, ob eine Startdatei vorhanden ist.
5. Prüfe Datei- und Ordnerrechte.
6. Prüfe den Besitzer der Dateien.
7. Prüfe Apache- oder Nginx-Konfiguration.
8. Prüfe `.htaccess`, falls Apache verwendet wird.
9. Prüfe die Webserver-Logs.
10. Prüfe Sicherheitsplugins oder Zugriffsbeschränkungen.

### Häufige Fehlermeldungen

| Fehlermeldung                           | Mögliche Ursache                                             |
| --------------------------------------- | ------------------------------------------------------------ |
| `directory index is forbidden`          | keine Startdatei vorhanden und Directory Listing deaktiviert |
| `permission denied`                     | Dateirechte oder Besitzer falsch                             |
| `client denied by server configuration` | Apache- oder Nginx-Regel blockiert Zugriff                   |
| `access forbidden by rule`              | Zugriff durch Regel oder Sicherheitsmodul blockiert          |
| `open() failed`                         | Datei kann nicht gelesen oder geöffnet werden                |

### Support kontaktieren

Wenn du den Fehler nicht selbst beheben kannst, kontaktiere den Support.

Gib dabei bitte folgende Informationen an:

* betroffene Domain
* verwendetes Betriebssystem
* verwendeter Webserver: Apache oder Nginx
* Pfad zum Webroot
* genaue Fehlermeldung im Browser
* relevante Logauszüge
* was du zuletzt geändert hast
* ob der Fehler die ganze Webseite oder nur einzelne Seiten betrifft

**Sicherheit:** Sende keine Passwörter, privaten SSH-Keys, Datenbankpasswörter oder API-Tokens an den Support.
