13 Tipps für Sicherheit und Härten von Apache Webserver und Härten
- 1701
- 130
- Susanne Stoutjesdijk
Wir alle sind sehr vertraut mit Apache Webserver ist ein sehr beliebter Webserver, um Ihre Webdateien oder Ihre Website im Web zu hosten. Hier sind einige Links, mit denen Sie den Apache -Webserver auf Ihrem Linux -Feld konfigurieren können.
Apache -Sicherheit und Härtungstipps- Installieren Sie den Apache -Webserver
- Richten Sie Ihre Website in Ihrem Linux -Box ein
Hier in diesem Tutorial werde ich einige Haupttipps abdecken, um Ihren Webserver zu sichern. Bevor Sie diese Änderungen auf Ihrem Webserver anwenden, sollten Sie einige Grundlagen des Apache -Servers haben.
- Dokument Root Directory: /var/www/html oder /var/www
- Hauptkonfigurationsdatei: /etc/httpd/conf/httpd.Conf (Rhel/centos/fedora) und /etc/apache2/apache2.Conf (Debian/Ubuntu).
- Standard HTTP -Port: 80 TCP
- Standard HTTPS -Port: 443 TCP
- Testen Sie Ihre Konfigurationsdateieinstellungen und Syntax: httpd -t
- Zugriff auf Protokolldateien des Webservers: /var/log/httpd/access_log
- Fehlerprotokolldateien des Webservers: /var/log/httpd/error_log
1. So verbergen Sie Apache -Version und Betriebssystemidentität vor Fehlern
Wenn Sie installieren Apache mit Quelle oder anderen Paketinstallationen mögen Yum, Es zeigt die an Version Ihres Apache Webserver auf Ihrem Server mit dem installiert Betriebssystemname Ihr Server in Fehler. Es zeigt auch die Informationen zu Apache -Module installiert In Ihrem Server.
Apache -Version anzeigenIm obigen Bild können Sie das sehen Apache zeigt seine Ausführung mit dem Betriebssystem installiert In Ihrem Server. Dies kann eine wichtige Sicherheitsbedrohung für Ihren Webserver sowie Ihre Linux -Box sein. Verhindern Apache Um diese Informationen nicht der Welt anzuzeigen, müssen wir einige Änderungen in der Apache -Hauptkonfigurationsdatei vornehmen.
Öffnen Sie die Konfigurationsdatei mit VIM -Editor und suchen Sie nach “Serversignatur„Es ist standardmäßig auf. Wir müssen Aus Diese Serversignatur und die zweite Zeile “Servertokens prod”Fordert Apache an, nur Apache als Produkt im Server -Antwort -Header auf jeder Seitenanforderung zurückzugeben. Es unterdrückt das Betriebssystem, die Major- und Minor -Versionsinformationen.
# vim/etc/httpd/conf/httpd.conf (rhel/centos/fedora) # vim/etc/apache2/apache2.Conf (Debian/Ubuntu)
Serversignatur vor Servertokens prod
# Service HTTPD Neustart (RHEL/CentOS/Fedora) # Service Apache2 Neustart (Debian/Ubuntu)Apache -Version ausblenden
2. Verzeichnisliste deaktivieren
Standardmäßig listen Apache alle auf Inhalt von Dokument in Abwesenheit von Dokumentenwurzelverzeichnis Indexdatei. Bitte beachten Sie das Bild unten.
Apache -VerzeichnislisteWir können abschalten Verzeichnisauflistung durch Verwendung Optionsrichtlinie in der Konfigurationsdatei für ein bestimmtes Verzeichnis. Dafür müssen wir einen Eintrag in einen Eintrag machen httpd.Conf oder Apache2.Conf Datei.
Optionen -IndexesAPache -Verzeichnisliste ausblenden
3. Aktualisieren Sie Apache regelmäßig
Apache Developer Community arbeitet kontinuierlich daran Sicherheitsprobleme und seine freigeben aktualisierte Version mit neuem Sicherheitsoptionen. Es wird also immer empfohlen, die zu verwenden letzte Version von Apache Als Ihr Webserver.
Überprüfen Apache -Version: Sie können Ihre aktuelle Version mit überprüfen httpd -v Befehl.
# HTTPD -V Serverversion: Apache/2.2.15 (UNIX) Server erstellt: 13. August 2013 17:29:28
Sie können Ihre Version mit dem folgenden Befehl aktualisieren.
# YUM Update HTTPD # APT-Get Installieren Sie Apache2
Es wird auch empfohlen, Ihre zu behalten Kernel Und Betriebssystem Aktualisiert auf die neuesten stabilen Veröffentlichungen, wenn Sie keine spezifische Anwendung ausführen, die nur unter bestimmten Betriebssystemen oder Kernel funktioniert.
4. Deaktivieren Sie unnötige Module
Es ist immer gut, die Chancen, ein Opfer von jedem zu sein Webangriff. Es wird also empfohlen, alle zu deaktivieren Module das werden derzeit nicht verwendet. Sie können alle kompilierten Module des Webservers unter Verwendung des folgenden Befehls auflisten.
# Grep loadModule/etc/httpd/conf/httpd.conf # muss an diesem Ort die entsprechenden "LoadModule" -Leitungen platzieren, damit die # loadModule foo_module module/mod_foo.So loadModule auth_basic_module module/mod_auth_basic.So loadModule auth_Digest_module module/mod_auth_digest.So loadModule authn_file_module module/mod_autn_file.So loadModule authn_alias_module module/mod_autn_alias.So loadModule authn_anon_module module/mod_autn_anon.Also loadModule authn_dbm_module module/mod_authn_dbm.So loadModule authn_default_module module/mod_autn_default.So loadModule authz_host_module module/mod_authz_host.So loadModule authz_user_module module/mod_authz_user.So loadModule authz_owner_module module/mod_authz_owner.So loadModule authz_groupfile_module module/mod_authz_groupfile.Also loadModule authz_dbm_module module/mod_authz_dbm.So loadModule authz_default_module module/mod_authz_default.So loadModule ldap_module module/mod_ldap.So loadModule authnz_ldap_module module/mod_authnz_ldap.So lastModule include_module module/mod_include.So loadModule log_config_module module/mod_log_config.So loadModule logio_module module/mod_logio.So loadModule env_module module/mod_env.So loadModule ext_filter_module module/mod_ext_filter.So…
Oben ist die Liste der Module, die standardmäßig aktiviert sind, aber häufig nicht benötigt werden: mod_imap, mod_include, mod_info, mod_userdir, mod_autoIndex. Um das bestimmte Modul zu deaktivieren, können Sie eine einfügen “#Zu Beginn dieser Linie und starten Sie den Dienst neu.
5. Führen Sie Apache als separater Benutzer und Gruppe aus
Mit einer Standardinstallation Apache führt seinen Prozess mit dem Benutzer aus niemand oder Dämon. Aus Sicherheitsgründen wird empfohlen, zu laufen Apache in seiner eigenen nicht privilegiert Konto. Zum Beispiel: Http-Web.
Apache -Benutzer und -gruppe erstellen
# GroupAdd http -web # userAdd -d/var/www/-g http -web -s/bin/nologin http -web
Jetzt müssen Sie es sagen Apache Um mit diesem neuen Benutzer auszuführen und dies zu tun, müssen wir einen Eintrag in einen Eintrag machen /etc/httpd/conf/httpd.Conf und starten Sie den Service neu.
Offen /etc/httpd/conf/httpd.Conf mit VIM -Editor und suchen Sie nach Keyword ““Benutzer" Und "GruppeUnd dort müssen Sie die angeben Nutzername Und Gruppenname benutzen.
Benutzer HTTP-Web-Gruppe HTTP-Web
6. Verwenden Sie zulässt und verweigern, den Zugriff auf Verzeichnisse einzuschränken
Wir können den Zugriff auf Verzeichnisse mit “einschränken“Erlauben" Und "Leugnen”Optionen in httpd.Conf Datei. Hier in diesem Beispiel werden wir uns sicherstellen Wurzelverzeichnis, dafür, indem Sie Folgendes in die festlegen httpd.Conf Datei.
Optionen Keine Bestellung leugnen, leugnen von allen ab
- Optionen "keine" - Mit dieser Option können Benutzer keine optionalen Funktionen aktivieren.
- Bestellen leugnen, erlauben - Dies ist die Reihenfolge, in der die “Leugnen" Und "Erlauben”Richtlinien werden verarbeitet. Hier wird es "leugnen”Zuerst und“erlauben" nächste.
- Abgelehnt von allen - Dies wird die Anfrage von allen an die verweigern Wurzelverzeichnis, Niemand wird in der Lage sein, auf das Root -Verzeichnis zugreifen zu können.
7. Verwenden Sie die Module mod_security und mod_evasive, um Apache zu sichern
Diese beiden Module "mod_security" Und "mod_evasive”Sind sehr beliebte Apache -Module in Bezug auf die Sicherheit.
Mod_security
Wo mod_security funktioniert als a Firewall für unsere Webanwendungen und ermöglicht uns dazu Verkehr überwachen in Echtzeit. Es hilft uns auch, unsere Websites oder unseren Webserver vor zu schützen Brute Force -Angriffe. Sie können einfach installieren mod_security Auf Ihrem Server mit Hilfe Ihrer Standardpaketinstallateure.
Installieren Sie mod_security auf ubuntu/debian
$ sudo apt-Get Installieren Sie libapache2-modsecurity $ sudo a2enmod mod-security $ sudo /etc /init.D/Apache2 Force-Reladload
Installieren Sie mod_security auf rhel/centos/fedora/
# yum install mod_security # /etc /init.D/HTTPD Neustart
Mod_evasive
mod_evasive Funktioniert sehr effizient, es erfordert eine Anfrage, es sehr gut zu verarbeiten und zu verarbeiten. Es verhindert DDOs greift an von so viel Schaden anrichten. Diese Funktion von mod_evasive ermöglicht es, das zu handhaben Http Brute Force Und DOS oder DDOs Attacke. Dieses Modul erkennt Angriffe mit drei Methoden.
- Wenn so viele Anfragen in ein paar Mal pro Sekunde auf die gleiche Seite kommen.
- Wenn ein Kinderprozess versucht, mehr als zu machen 50 gleichzeitige Anfragen.
- Wenn überhaupt IP Ich versuche immer noch, neue Anfragen zu stellen, wenn es vorübergehend ist schwarze Liste.
mod_evasive kann direkt aus der Quelle installiert werden. Hier haben wir eine Installations- und Setup -Anleitung dieser Module, mit der Sie diese Apache -Module in Ihrem Linux -Feld einrichten können.
- Schützen Sie Apache mit mod_security und mod_evasive
8. Deaktivieren Sie Apache's folgende symbolische Links
Standardmäßig Apache folgt Symlinks, wir können abschalten Diese Funktion mit Folgt mit Optionsrichtlinie. Dazu müssen wir den folgenden Eintrag in der Hauptkonfigurationsdatei erstellen.
Optionen -FollowsymLinks
Und wenn auch nicht bestimmt Benutzer oder Webseite brauchen Folgt Aktivieren, wir können einfach eine Regel schreiben “.htaccessDatei von dieser Website.
# Symbolische Links Optionen aktivieren +Followsymlinks
Notiz: Um das Umschreiben von Regeln im Inneren zu ermöglichen “.htaccess" Datei "ALLESRIDE ALLES”Sollte in der Hauptkonfiguration weltweit vorhanden sein.
9. Schalten Sie die Serverseite und die CGI -Ausführung aus
Wir können abschalten Die Serverseite enthält (mod_include) Und CGI Ausführung Wenn nicht benötigt, müssen wir die Hauptkonfigurationsdatei ändern.
Optionen -Includes Optionen -execcgi
Wir können dies auch für ein bestimmtes Verzeichnis mit Verzeichnis -Tag tun. Hier in diesem Beispiel sind wir uns ausschalten Inklusive und CGI -Dateiausführungen für “/var/www/html/web1" Verzeichnis.
Optionen -includes -execcgi
Hier sind einige andere Werte mit können eingeschaltet oder aus mit Optionsrichtlinie.
- Optionen alle - So aktivieren Sie alle Optionen gleichzeitig. Dies ist der Standardwert. Wenn Sie keine Werte in der Apache Conf -Datei explizit angeben möchten, oder .htaccess.
- Optionen umfassen Noexec - Diese Option ermöglicht die Serverseite, die ohne die Berechtigung zur Ausführung in einen Befehl oder CGI -Dateien enthält.
- Optionen Multiviews - Ermöglicht von Inhalten ausgehandelte Multiviews mit Mod_Negotiation Modul.
- Optionen SymlinkSifownmatch - Es ist ähnlich wie folgt. Dies folgt jedoch nur, wenn der Eigentümer zwischen dem Link und dem ursprünglichen Verzeichnis, mit dem er verknüpft ist.
10. Begrenzung der Anfragegröße
Standardmäßig Apache hat keine Grenze für die Gesamtgröße der HTTP -Anfrage i.e. Unbegrenzt und wenn Sie große Anfragen auf einem Webserver zulassen Leugnung von Dienstangaben. Wir können die Anfragengröße einer Apache -Richtlinie einschränken “LimitRequestBody”Mit dem Verzeichnis -Tag.
Sie können den Wert in Bytes von festlegen 0 (unbegrenzt) Zu 2147483647 (2GB) die in einem Antragsbehörde erlaubt sind. Sie können diese Grenze entsprechend Ihren Site -Anforderungen festlegen. Angenommen, Sie haben eine Website, auf der Sie Uploads zulassen und die Upload -Größe für ein bestimmtes Verzeichnis begrenzen möchten.
Hier in diesem Beispiel, user_uploads ist ein Verzeichnis, das von Benutzern hochgeladene Dateien enthält. Wir setzen eine Grenze von vor 500K dafür.
LimitRequestBody 512000
11. Schützen Sie DDOS -Angriffe und Härten
Nun, es ist wahr, dass Sie Ihre Website nicht vollständig schützen können DDOs greift an. Hier sind einige Anweisungen, die Ihnen helfen können, eine Kontrolle darüber zu haben.
- Auszeit : Mit dieser Anweisung können Sie die Zeit festlegen, die der Server auf bestimmte Ereignisse wartet, bevor er fehlschlägt. Sein Standardwert ist 300 Sekunden. Es ist gut, diesen Wert auf den Websites, die unterworfen sind, niedrig zu halten DDOs greift an. Dieser Wert hängt völlig von einer Art Anfrage ab, die Sie auf Ihrer Website erhalten. Notiz: Es könnte Probleme mit kommen CGI Skripte.
- Maxclients : Mit dieser Richtlinie können Sie die Grenze für Verbindungen festlegen, die gleichzeitig bedient werden. Jede neue Verbindung wird nach dieser Grenze in der Warteschlange gestellt. Es ist mit erhältlich mit Vorkörper Und Arbeiter beide Mpm. Der Standardwert davon ist 256.
- Keepalivetimeout : Es ist die Zeit, die der Server auf eine nachfolgende Anfrage wartet, bevor er die Verbindung schließt. Standardwert ist 5 Sekunden.
- LimitRequestfields : Es hilft uns, eine Grenze für die Anzahl der Headerfelder der HTTP -Anforderung festzulegen, die von den Kunden akzeptiert werden. Sein Standardwert ist 100. Es wird empfohlen, diesen Wert zu senken, wenn DDOs greift an treten aufgrund so vieler HTTP -Anfrage -Headers auf.
- LimitRequestfieldSize : Es hilft uns, ein Größenlimit für den HTTP -Anfrage -Header festzulegen.
12. Aktivieren Sie die Apache -Protokollierung
Mit Apache können Sie sich unabhängig von Ihrem anmelden OS -Protokollierung. Es ist ratsam, die Apache -Protokollierung zu aktivieren, da sie weitere Informationen liefert, z. B. die Befehle, die von Benutzern eingegeben wurden, die mit Ihrem Webserver interagiert haben.
Zu diesem Zeitpunkt müssen Sie die aufnehmen mod_log_config Modul. Mit Apache stehen drei Hauptanträge im Zusammenhang mit Protokollierungsanweisungen zur Verfügung.
- TransferLog: Erstellen einer Protokolldatei.
- Logformat : Angeben eines benutzerdefinierten Formats.
- CustomLog : Erstellen und Formatieren einer Protokolldatei.
Sie können sie auch für eine bestimmte Website verwenden, die Sie durchführen Virtuelles Hosting Und dafür müssen Sie es im Abschnitt Virtual Host angeben. Hier ist beispielsweise die Virtual Host -Konfiguration meiner Website mit aktivierter Protokollierung.
DocumentRoot/var/www/html/Beispiel.Com/ Servername www.Beispiel.com DirectoryIndex Index.HTM -Index.HTML -Index.PHP Serveralias Beispiel.com Errordokument 404 /Geschichte.PHP ERRORLOG /var/log/httpd/Beispiel.com_error_log CustomLog /var/log/httpd/Beispiel.com_access_log kombiniert
13. Sicherung von Apache mit SSL -Zertifikaten
Last, aber nicht die geringste SSL -Zertifikate, Sie können Ihre gesamte Kommunikation auf verschlüsselte Weise über das Internet mit SSL -Zertifikat sichern. Nehmen wir an, Sie haben eine Website, auf der sich Menschen anmelden, indem Sie ihre Anmeldeinformationen nachweisen, oder Sie eine E-Commerce-Website, auf der Menschen ihre bereitstellen Bankdaten oder Lastschrift/Kredit Kartendaten zum Kauf von Produkten. Standardmäßig senden Ihr Webserver diese Details in einfachem Textformat, jedoch bei Verwendung SSL -Zertifikate auf Ihre Websites, Apache Sendet alle diese Informationen in verschlüsseltem Text.
Du kannst Kaufen Sie SSL -Zertifikate von so vielen verschiedenen SSL -Anbietern mögen Namecheap.com. Wenn Sie ein sehr kleines Webgeschäft betreiben und nicht bereit sind Kaufen Sie ein SSL -Zertifikat Sie können immer noch a zuweisen Selbst signiertes Zertifikat auf Ihre Website. Apache verwendet die mod_ssl Modul zur Unterstützung SSL -Zertifikat.
# OpenSSL Genrsa -des3 -out Beispiel.com.Schlüssel 1024 # OpenSSL Req -New -key -Beispiel.com.Key -out exmaple.CSR # OpenSSL X509 -REQ -Days 365 -in -Beispiel.com.com.CSR -Signkey -Beispiel.com.com.Schlüssel -Out -Beispiel.com.com.crt
Sobald Ihr Zertifikat erstellt und unterschrieben wurde. Jetzt müssen Sie dies in der Apache -Konfiguration hinzufügen. Öffnen Sie die Hauptkonfigurationsdatei mit VIM -Editor und fügen Sie die folgenden Zeilen hinzu und starten Sie den Dienst neu.
Sslengine auf SSLCertificateFile/etc/pki/tls/certs/Beispiel.com.crt sslcertificateKeyFile/etc/pki/tls/certs/Beispiel.com.Key SSLCertificatechainFile/etc/pki/tls/certs/sf_bundle.CRT Serveradmin [E -Mail -geschützte] Serverame Beispiel.com documentroot/var/www/html/example/fehlerlog/var/log/httpd/Beispiel.com-eRror_log customLog/var/log/httpd/Beispiel.COM-ACCESS_LOG GROSSE
Öffnen Sie Ihren Browser, geben Sie an https: // Beispiel.com, und Sie werden das neue sehen können Selbstsigniertes Zertifikat.
Dies sind nur wenige Sicherheitstipps, die Sie verwenden können Sichern Sie Ihren Apache -Webserver Installation. Weitere nützliche Sicherheitstipps und Ideen finden Sie in der offiziellen Online -Dokumentation von Apache HTTP Server.
- « Hacking OwnCloud, um die Branding der Anmeldeseite zu verbessern
- Fedora 25 Workstation Installation Guide »