Einführung
Apache ist der beliebteste Webserver im Internet. Und es ist ideal für die meisten Situationen und ermöglicht Flexibilität für gemeinsam genutzte Umgebungen. In diesem Tutorial erfahren Sie, wie Sie einen Apache sichern Webserver. Für dieses Tutorial verwenden wir Centos 8. Das Apache-Installations-Tutorial finden Sie hier. Wir werden sehen, wie man Apache ändert Konfiguration auch auf Ubuntu/Debian-Systemen.
1. Halten Sie Apache auf dem Laufenden
Melden Sie sich mit einem root- oder sudo-privilegierten Benutzerkonto beim System an. Überprüfen Sie den Apache Version, indem Sie den folgenden Befehl ausführen.
httpd -v
2. Informationen zur Apache-Version und zum Serverbetriebssystem ausblenden .
Das erste, was wir berücksichtigen müssen, da wir nicht offenlegen möchten, welche Webserver-Version wir in unserem System verwenden. Das Offenlegen von Versions- und Betriebssysteminformationen bedeutet, dass wir Hackern dabei helfen, den Angriffsprozess schnell zu gestalten. Im Bild unten sehen wir diesen Apache zeigt seine Version mit dem installierten Betriebssystem auf unserem Server.
Um Apache zu verhindern Um seine Versions- und Betriebssysteminformationen nicht preiszugeben, müssen wir Apache ändern 's Hauptkonfigurationsdatei. Öffnen Sie die Konfigurationsdatei, indem Sie den folgenden Befehl ausführen-
nano /etc/httpd/conf/httpd.conf
nano /etc/apache2/apache.conf (Ubuntu / Debian)
Fügen Sie nun die beiden folgenden Anweisungen zur Hauptkonfigurationsdatei hinzu und speichern Sie sie.
ServerTokens Prod
ServerSignature Off
Und starten Sie Apache neu Server durch Ausführen des folgenden Befehls-
systemctl restart httpd.service
Wie wir im Bild unten sehen können, ist der Apache Version wird nicht angezeigt, und Betriebsinformationen sind ebenfalls nicht sichtbar.
3. Deaktivieren Sie die Verzeichnisindizierung
Standardmäßig Apache zeigt den gesamten Inhalt des Webroot-Verzeichnisses an, wenn keine Indexdatei vorhanden ist. Wie das Bild unten,
Um die Verzeichnisindizierung in einem Browser zu verhindern, müssen wir die Optionsdirektive im Apache ändern Konfigurationsdatei. Öffnen Sie die Konfiguration und ändern Sie den Eintrag wie folgt.
<Directory /var/www/html>
Options -Indexes
</Directory>
Öffnen Sie nun den Browser und geben Sie IP oder URL in die Adressleiste ein. Und wir sehen ein Bild wie unten
4. ETag deaktivieren
Tag wird in HTTP-Headern verwendet, um das Web-Caching-Verhalten zu verwalten. Allerdings Etag kann Sicherheitsprobleme verursachen. Es ermöglicht entfernten Angreifern, vertrauliche Informationen wie Inode-Nummer, MIME-Typ und Verarbeitung über ETag abzurufen Header. Um Angriffe und Informationslecks zu verhindern, fügen Sie Apache die folgende Anweisung hinzu Aufbau.
Um dies zu erreichen, fügen Sie einfach die folgende Zeile zu Apache hinzu Konfigurationsdatei und starten Sie den Apache neu .
FileEtag None
5. Deaktivieren Sie CGI und SSI
SSIs (Server-Side Includes) sind Anweisungen, die verwendet werden, um eine HTML-Seite mit dynamischen Inhalten zu schreiben, und CGI wird verwendet, um schädliche Skripte in Ihren Webcode einzufügen. Schränken Sie CGI und SSI ein, indem Sie die folgenden Optionsanweisungen zur Apache-Konfiguration hinzufügen:
Options -Includes -ExecCGI
6. Beschränken Sie den Verzeichniszugriff
Es ist ein bewährtes Sicherheitsverfahren, den Zugriff auf das Webroot-Verzeichnis mithilfe von Zulassen und Verweigern einzuschränken Syntax. Nehmen Sie dazu die folgenden Änderungen im Apache vor Konfigurationsdatei. Öffnen Sie die Konfigurationsdatei und den Server für Verzeichnis block und schreiben Sie die Verzeichnisdirektive wie folgt und speichern Sie sie. Starten Sie jetzt den Apache neu, um die Effekte zu ändern
<Directory />
Options None
Order deny,allow
Deny from all
</Directory>
Die obige Einstellung verweigert Anfragen von jedem an das Stammverzeichnis. Niemand kann auf das Stammverzeichnis zugreifen.
7. Sichern Sie Apache mit Mod_Security
Mod_security ist ein Sicherheitstool, das als Firewall für Websites oder Anwendungen fungiert. Es hilft, Websites oder Anwendungen vor UN-autorisiertem Zugriff und auch vor Brute-Force-Angriffen zu schützen. Installieren Sie mod_security, indem Sie den folgenden Befehl ausführen, und starten Sie Apache neu, um mit mod_security zu arbeiten.
dnf -y install mod_security
8. Definieren Sie HTTP-Anfragemethoden
Im aktuellen HTTP Protokoll sind viele Anfragen nicht erforderlich, und einige bergen ein Sicherheitsrisiko. Es ist jedoch hübsch genug für eine Webanwendung, GET zuzulassen , KOPF und POSTEN Anfragemethoden. Wir können diese Einstellung konfigurieren, indem wir die entsprechende Directory-Direktive hinzufügen. Öffnen Sie dazu den Apache Konfigurationsdatei, suchen Sie nach Directory und fügen Sie die folgende Inside-Anweisung hinzu und starten Sie Apache neu
<LimitExcept GET POST HEAD>
deny from all
</LimitExcept>
9. XSS Protection Header aktivieren
Cross-Site-Scripting wird als (XSS) bezeichnet und ist eine häufige Schwachstelle in Webanwendungen. Cross-Site Scripting (XSS)-Schutz kann in vielen Browsern überspringen. Wir können jedoch einige XSS-Angriffe verhindern, indem wir den folgenden Eintrag zu unserem Apache hinzufügen Konfigurationsdatei und speichert sie. Und starten Sie den Apache neu Server.
Header set X-XSS-Protection "1; mode=block"
Überprüfen Sie nun den Anfrage-Header im Browser-Entwicklertool, wir können im Bild unten sehen, dass dieser Header erfolgreich implementiert wurde.
10. HTTP-Anfrage TRACE deaktivieren
Standardmäßig wird Trace HTTP Request in Apache geöffnet um Cross-Site Tracing zu ermöglichen. Diese Option ermöglicht es einem Hacker, Cookie-Informationen einfach zu stehlen. Um dies zu verhindern, fügen Sie dem Apache die folgenden Parameter hinzu Konfigurationsdatei. Und starten Sie Apache neu .
TraceEnable off
11. Clickjacking-Angriffe verhindern
Clickjacking , auch bekannt als „User Interface Redress Attack“, ist eine bösartige Technik, um die Klicks eines infizierten Benutzers zu sammeln. Clickjacking verleitet das Opfer (Besucher) dazu, auf eine infizierte Website zu klicken. Um diesen Vorfall zu verhindern, müssen wir „X-FRAME-OPTION“ im Apache verwenden Konfigurationsdatei. Fügen Sie dazu in der Konfigurationsdatei die folgende Zeile hinzu.
Header set X-FRAME-OPTIONS "SAMEORIGIN"
Überprüfen Sie nun den Anforderungsheader im Browser-Entwicklertool, da wir sehen können, dass wir X-FRAME-OPTIONS erfolgreich auf dem Apache hinzugefügt haben Konfigurationsdatei.
13. Sicheres Cookie mit HTTPOnly-Flag
Ohne HttpOnly und Secure ist es möglich, Sitzungen und Cookies von Webanwendungen zu stehlen oder zu manipulieren, und es ist gefährlich. Um dies abzumildern, müssen wir sicherstellen, dass der mod_header Modul läuft serverseitig.
apachectl -M | grep header
Im obigen Bild können wir sehen, dass das mod_header-Modul in Apache geladen und aktiviert wurde . Fügen Sie nun die folgende Zeile in der Hauptkonfigurationsdatei von Apache hinzu und starten Sie den Apache neu Server.
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
14. Anfragegröße begrenzen
Standardmäßig ist die HTTP-Anforderung in Apache ist unbegrenzt; Daher ist der Webserver anfällig für DoS-Angriffe, indem er für die hohe Anzahl von Anfragen offen gehalten wird. Dann ist es wichtig, das Limit für die Dateianforderung festzulegen. Dies kann durch Hinzufügen des LimitRequestBody erfolgen Direktive im Apache Konfigurationsdatei.
Beispielsweise ist unixcop ein Verzeichnis, das Dateien enthält, die von Benutzern hochgeladen wurden. Jetzt begrenzen wir die Upload-Größe auf 2 KB damit der Benutzer keine Datei mehr als diese hochladen kann.
<Directory "/var/www/html/unixcop">
LimitRequestBody 20000
</Directory
Schlussfolgerung
Aus diesem Tutorial haben wir gelernt, wie wir unseren Apache-Server vor Angreifern schützen können. Ich hoffe, unser Artikel wird Ihnen helfen, Ihren Server zu schützen. Sie können auch meinen anderen Artikeln folgen.