Schützen Sie Apache gegen Brute Force oder DDOS -Angriffe mit mod_security und mod_evasive module
- 2008
- 372
- Matteo Möllinger
Für diejenigen unter Ihnen im Hosting -Geschäft oder wenn Sie Ihre eigenen Server veranstalten und sie dem Internet aussetzen, muss die Sicherung Ihrer Systeme gegen Angreifer eine hohe Priorität haben.
mod_security (Open-Source Intrusion Detection and Prevention Engine für Webanwendungen, die nahtlos in den Webserver integriert sind) und mod_evasive sind zwei sehr wichtige Tools, mit denen ein Webserver vor Brute Force oder (d) DOS -Angriffen geschützt werden kann.
Verwandter Artikel: So installieren Sie Linux -Malware mit Clamav als Antivirenmotor erkennenmod_evasive, Wie der Name schon sagt, bietet er ausweichende Fähigkeiten, während er angegriffen wird, und fungiert als Regenschirm, der Webserver vor solchen Bedrohungen schützt.
Installieren Sie mod_security und mod_evasive, um Apache zu schützenIn diesem Artikel werden wir diskutieren, wie sie zusammen mit Apache installieren, konfigurieren und ins Spiel bringen können Rhel/Centos 8 Und 7 ebenso gut wie Fedora. Darüber hinaus simulieren wir Angriffe, um zu überprüfen, ob der Server entsprechend reagiert.
Dies setzt voraus, dass ein Lampenserver auf Ihrem System installiert ist. Wenn nicht, überprüfen Sie diesen Artikel, bevor Sie weiter fortfahren.
- So installieren Sie den Lampenserver auf CentOS 8
- So installieren Sie Lampenstapel in RHEL/Centos 7
Sie müssen auch einrichten iptables Als Standard-Firewall-Front-End anstelle von Firewalld, wenn Sie laufen Rhel/centos 8/7 oder Fedora. Wir tun dies, um dasselbe Tool in beiden zu verwenden Rhel/Centos 8/7 Und Fedora.
Schritt 1: Installation der Iptables Firewall auf RHEL/CentOS 8/7 und Fedora
Beginnen Sie an, stoppen Sie und deaktivieren Sie Firewall:
# SystemCTL STOP Firewalld # SystemCTL Deaktivieren Sie die FirewalldDeaktivieren Sie den Firewall -Service
Dann die Iptables-Services Paket vor Aktivierung iptables:
# yum update && yum install iptables services # systemctl aktivieren iptables # systemctl start iptables # systemctl Status iptablesInstallieren Sie Iptables Firewall
Schritt 2: Installieren von mod_security und mod_evasive
Neben einem bereits vorhandenen Lampen -Setup müssen Sie auch das Epel -Repository in aktivieren Rhel/Centos 8/7 Um beide Pakete zu installieren. Fedora -Benutzer müssen kein Repo aktivieren, da EPEL bereits Teil des Fedora -Projekts ist.
# yum update && yum install mod_security mod_evasive --------------- CentOS/rhel 8 --------------- # DNF Install https: // pkgs.Dyn.SU/EL8/BASE/X86_64/RAVEN-Release-1.0-1.EL8.Keinarch.RPM # DNF --EnableRepo = Raven-Extras installieren mod_evasive
Wenn die Installation abgeschlossen ist, finden Sie die Konfigurationsdateien für beide Tools in /etc/httpd/conf.D.
# ls -l/etc/httpd/conf.Dmod_security + mod_evasive configurations
Nun, um diese beiden Module mit integrieren zu können Apache und lass es laden, wenn es beginnt, stellen Sie sicher, dass die folgenden Zeilen im Abschnitt oberster Ebene von angezeigt werden mod_evasive.Conf Und mod_security.Conf, bzw:
LoadModule evasiv20_Module Module/mod_evasive24.So loadModule Security2_Module Module/mod_security2.So
Beachten Sie, dass Module/mod_security2.So Und modules/mod_evasive24.So sind die relativen Pfade, von der /etc/httpd Verzeichnis zur Quelldatei des Moduls. Sie können dies überprüfen (und bei Bedarf ändern), indem Sie den Inhalt der auflisten /etc/httpd/module Verzeichnis:
# CD/etc/httpd/modules # pwd # ls -l | grep -ei '(Ausweiche | Sicherheit)'Überprüfen Sie mod_security + mod_evasive module
Starten Sie dann Apache neu und überprüfen Sie, ob es geladen wird mod_evasive Und mod_security:
# Systemctl Neustart HTTPD neu starten
Lassen Sie eine Liste von geladenen statischen und gemeinsam genutzten Modulen abgeben.
# httpd -m | grep -ei '(Ausweiche | Sicherheit)'Überprüfen Sie mod_security + mod_evasive module geladen
Schritt 3: Installieren eines Kernregelsatzes und Konfigurieren von Mod_security
In wenigen Worten a Kernregelsatz (AKA CRS) Bietet dem Webserver Anweisungen zum Verhalten unter bestimmten Bedingungen. Die Entwicklerfirma von mod_security Bietet eine kostenlose CRS genannt Owasp (Open Web Application Security Project) ModSecurity CRS, die wie folgt heruntergeladen und installiert werden können.
1. Laden Sie die herunter Owasp CRS zu einem zu diesem Zweck erstellten Verzeichnis.
# mkdir/etc/httpd/crs-tecmint # cd/etc/httpd/crs-tecmint # wget -c https: // github.com/spiderlabs/owasp-modsecurity-crs/archiv/v3.2.0.Teer.GZ -o MasterLaden Sie die Kernregeln der Mod_security herunter
2. Untar das CRS Datei und ändern Sie den Namen des Verzeichnisses für einen unserer Bequemlichkeit.
# TAR XZF MASTER # MV OWASP-MODSECURITY-CRS-3.2.0 OWASP-MODSECURITY-CRS
3. Jetzt ist es Zeit, mod_security zu konfigurieren. Kopieren Sie die Beispieldatei mit Regeln (owasp-modsecurity-crs/modsecurity_crs_10_setup.Conf.Beispiel) in eine andere Datei ohne die .Beispiel Verlängerung:
# CD OWASP-ModSecurity-CRS/ # CP CRS-Setup.Conf.Beispiel CRS-Setup.Conf
und erzähl Apache Verwenden Sie diese Datei zusammen mit dem Modul, indem Sie die folgenden Zeilen in die Hauptkonfigurationsdatei des Webservers einfügen /etc/httpd/conf/httpd.Conf Datei. Wenn Sie sich dafür entschieden haben, den Tarball in einem anderen Verzeichnis auszupacken, müssen Sie die Pfade der Anweisungen einschließen:
CRS-tecmint/owasp-ModSecurity-CRS/CRS-Setup einschließen.Conf umfassen CRS-tecmint/owasp-modsecurity-crs/Regeln/*.Conf
Schließlich wird empfohlen, dass wir unsere eigene Konfigurationsdatei innerhalb der erstellen /etc/httpd/modsecurity.D Verzeichnis, in dem wir unsere individuellen Richtlinien platzieren (wir werden es nennen Tecmint.Conf im folgenden Beispiel) anstatt die zu ändern CRS Dateien direkt. Dies ermöglicht eine einfachere Verbesserung der CRS, wenn neue Versionen veröffentlicht werden.
Secroruleengine auf SecrequestBodyAccess auf SecressponseBodyAccess auf SecressponseBodyMimetype Text/Klartext/HTML Text/XML-Anwendung/Oktett-Stream SecDatadir/TMP
Sie können sich auf das Modsecurity Github -Repository der Spiderlabs finden mod_security Konfigurationsrichtlinien.
Schritt 4: Konfigurieren von Mod_evasive
mod_evasive wird mit Anweisungen in konfiguriert /etc/httpd/conf.D/mod_evasive.Conf. Da es während eines Paket -Upgrades keine Regeln zum Update gibt, benötigen wir keine separate Datei, um kundenspezifische Anweisungen hinzuzufügen, im Gegensatz zu mod_security.
Der Standard mod_evasive.Conf Die Datei verfügt über die folgenden Anweisungen (Beachten Sie, dass diese Datei stark kommentiert wird. Daher haben wir die Kommentare ausgestrebt, um die folgenden Konfigurationsanweisungen hervorzuheben):
Doshashtablesize 3097 DospageCount 2 DosSiteCount 50 DospageInterval 1 DosSiteInterval 1 dosblockingPeriode 10
Erläuterung der Richtlinien:
- Doshashtablesize: Diese Richtlinie gibt die Größe der Hash-Tabelle an, mit der die Aktivität auf einer Basis pro IP-Adressierung verfolgt wird. Das Erhöhen dieser Zahl liefert eine schnellere Suche der Websites, die der Kunde in der Vergangenheit besucht hat, kann jedoch die Gesamtleistung beeinflussen, wenn er zu hoch ist.
- DospageCount: Legitime Anzahl identischer Anfragen an eine bestimmte URI (z. B. jede Datei, die von Apache bedient wird), die von einem Besucher über das DospageInterval -Intervall gestellt werden kann.
- DosSiteCount: Ähnlich wie bei DospageCount, bezieht sich jedoch darauf, wie viele Gesamtanfragen an der gesamten Site über das DossiteInterval -Intervall gestellt werden können.
- Dosblockierteriode: Wenn ein Besucher die von DosspageCount oder DosSiteCount festgelegten Grenzwerte überschreitet, wird seine Quell -IP -Adresse während der dosblocker -Zeit -Zeitaufwand auf die schwarze Liste gesetzt. Während dosblockerPeriod werden alle Anfragen aus dieser IP -Adresse auf einen 403 -Verbotenen Fehler stoßen.
Fühlen Sie sich frei, mit diesen Werten zu experimentieren, damit Ihr Webserver die erforderliche Menge und Art des Datenverkehrs verarbeiten kann.
Nur eine kleine Einschränkung: Wenn diese Werte nicht ordnungsgemäß eingestellt sind, besteht das Risiko, legitime Besucher zu blockieren.
Möglicherweise möchten Sie auch andere nützliche Richtlinien in Betracht ziehen:
Dosemailnotify
Wenn Sie einen Mailserver in Betrieb haben, können Sie Warnmeldungen über Apache senden. Beachten Sie, dass Sie dem Apache -Benutzer Selinux -Berechtigung zum Senden von E -Mails gewährt werden müssen. Sie können dies durch Laufen tun
# setSbool -p httpd_can_sendmail 1
Fügen Sie diese Richtlinie als nächstes in die mod_evasive.Conf Datei mit dem Rest der anderen Richtlinien:
Dosemailnotify [E -Mail geschützt]
Wenn dieser Wert festgelegt ist und Ihr Mailserver ordnungsgemäß funktioniert, wird eine E -Mail an die angegebene Adresse gesendet, wenn eine IP -Adresse auf die schwarze Liste kommt.
DOSSYSTEMCOMMAND
Dies erfordert einen gültigen Systembefehl als Argument,
DOSSYSTEMCOMMAND
Diese Anweisung gibt einen Befehl an, der ausgeführt werden soll, wenn eine IP -Adresse auf die schwarze Liste kommt. Es wird häufig in Verbindung mit einem Shell -Skript verwendet, das eine Firewall -Regel hinzufügt, um weitere Verbindungen aus dieser IP -Adresse zu blockieren.
Schreiben Sie ein Shell -Skript, das die IP -Blacklisting auf der Firewall -Ebene übernimmt
Wenn eine IP -Adresse auf die schwarze Liste kommt, müssen wir zukünftige Verbindungen blockieren, die davon kommen. Wir werden das folgende Shell -Skript verwenden, das diesen Job ausführt. Erstellen Sie ein Verzeichnis mit dem Namen Skript-Tecmint (oder welcher Namen Ihrer Wahl) in /usr/local/bin und eine Datei aufgerufen Ban_ip.Sch in diesem Verzeichnis.
#!/bin/sh # ip, das blockiert wird, wie von mod_evasive ip = $ 1 # Vollständiger Pfad zu iptables iptables = "/sbin/iptables" # mod_evasive Sperre Verzeichnis mod_evasive_logdir =/var/log/mod_evasive # Die folgende FireWall -Regel hinzufügen (die folgende Feuerwall -Regel ( Block alle Datenverkehr von $ ip) $ iptables -i Eingabe -S $ ip -j Drop # Die Sperrdatei für zukünftige Überprüfungen RM -f "$ mod_evasive_logdir"/dos -"$ ip"
Unser DOSSYSTEMCOMMAND Die Richtlinie sollte wie folgt lesen:
DOSSystemCommand "sudo/usr/local/bin/script-tecmint/ban_ip.Sh %s "
In der obigen Zeile, %S repräsentiert die beleidigende IP, wie er erkannt wurde mod_evasive.
Fügen Sie den Apache -Benutzer der Sudoers -Datei hinzu
Beachten Sie, dass all dies einfach nur funktioniert, wenn Sie dem Benutzer Berechtigungen geben Apache Um unser Skript auszuführen (und nur dieses Skript!) ohne Terminal und Passwort. Wie immer können Sie einfach tippen Visudo als Wurzel, um auf die zuzugreifen /etc/sudoers Datei und fügen Sie dann die folgenden 2 Zeilen hinzu, wie im Bild unten gezeigt:
Apache All = nopasswd:/usr/local/bin/script-tecmint/ban_ip.SH Standards: Apache !ErfordernisFügen Sie Apache -Benutzer zu Sudoers hinzu
WICHTIG: Als Standardsicherheitsrichtlinie können Sie nur ausführen sudo in einem Terminal. Da müssen wir in diesem Fall verwenden sudo ohne ein tty, Wir müssen die Linie, die im folgenden Bild hervorgehoben ist, aus kommentieren:
#DEFAULTS ERFORDERUNGDeaktivieren Sie TTY für sudo
Starten Sie schließlich den Webserver neu:
# Systemctl Neustart HTTPD neu starten
Schritt 4: Simulation eines DDOS -Angriffs auf Apache
Es gibt mehrere Tools, mit denen Sie einen externen Angriff auf Ihren Server simulieren können. Sie können einfach googeln für “Werkzeuge zum Simulieren von DDOS -AngriffenUm einige von ihnen zu finden.
Beachten Sie, dass Sie und nur Sie für die Ergebnisse Ihrer Simulation verantwortlich sind. Denken Sie nicht einmal daran, einen simulierten Angriff auf einen Server zu starten, den Sie nicht in Ihrem eigenen Netzwerk hosten.
Wenn Sie dasselbe mit einem VPS tun möchten, das von einer anderen anderen gehostet wird. Tecmint.com ist keineswegs für Ihre Handlungen verantwortlich!
Darüber hinaus gibt das Starten eines simulierten DOS-Angriffs von nur einem Host keinen realen Angriff dar. Um dies zu simulieren, müssten Sie Ihren Server gleichzeitig von mehreren Clients von mehreren Clients abzielen.
Unser Testumfeld besteht aus a Centos 7 Server [IP 192.168.0.17] und ein Windows -Host, aus dem wir den Angriff starten [IP 192.168.0.103]:
Bestätigen Sie Host iPaddressBitte spielen Sie das folgende Video ab und befolgen Sie die in der angegebenen Reihenfolge angegebenen Schritte, um einen einfachen DOS -Angriff zu simulieren:
Dann wird die beleidigende IP von iptables blockiert:
Blockierter Angreifer IPAbschluss
Mit mod_security Und mod_evasive aktiviert, der simulierte Angriff verursacht die Zentralprozessor Und RAM Um nur ein paar Sekunden mit einem temporären Gebrauchspeak zu experimentieren, bevor die Quell -IPs von der Firewall auf die schwarze Liste gesetzt und blockiert werden. Ohne diese Tools schlägt die Simulation den Server sicherlich sehr schnell ab und macht ihn während der Dauer des Angriffs unbrauchbar.
Wir würden gerne hören, ob Sie diese Tools verwenden möchten (oder haben in der Vergangenheit verwendet). Wir freuen uns immer darauf, von Ihnen zu hören. Zögern Sie also nicht, Ihre Kommentare und Fragen, falls vorhanden, das folgende Formular zu hinterlassen.
Referenzlinks
https: // www.Modsecurity.org/
- « Installieren Sie Docker und lernen Sie grundlegende Containermanipulation in CentOS und RHEL 8/7 - Teil 1
- So installieren und verwenden Sie Linux Malware Detect (LMD) mit Clamav als Antivirenmotor »