Chraňte Apache před útoky Brute Force nebo DDoS pomocí modulů Mod_Security a Mod_evasive.

instagram story viewer

Pro ty z vás, kteří provozují hostování, nebo pokud hostujete vlastní servery a vystavujete je internetu, musí být zabezpečení vašich systémů před útočníky vysokou prioritou.

mod_security (open-source nástroj pro detekci a prevenci narušení pro webové aplikace, který se bezproblémově integruje s webovým serverem) a mod_evasive jsou dva velmi důležité nástroje, které lze použít k ochraně webového serveru před hrubou silou nebo (D) útoky DoS.

Související článek: Jak nainstalovat detekci malwaru Linux pomocí ClamAV jako antivirového enginu

mod_evasiveJak již název napovídá, poskytuje útočné schopnosti při útoku a funguje jako deštník, který chrání webové servery před takovými hrozbami.

Nainstalujte si Mod_Security Mod_Evasive do CentOS
Nainstalujte Mod_Security a Mod_Evasive na ochranu Apache

V tomto článku budeme diskutovat o tom, jak je nainstalovat, konfigurovat a uvést do hry spolu s Apache on RHEL/CentOS 8 a 7 jakož i Fedora. Kromě toho budeme simulovat útoky, abychom ověřili, že server podle toho reaguje.

To předpokládá, že máte v systému nainstalován server LAMP. Pokud ne, přečtěte si prosím tento článek, než budete pokračovat dále.

  • Jak nainstalovat LAMP Server na CentOS 8
  • Jak nainstalovat zásobník LAMP v RHEL/CentOS 7

Budete také muset nastavit iptables jako výchozí firewall front-end místo firewalld pokud běžíš RHEL/CentOS 8/7 nebo Fedora. Děláme to, abychom v obou použili stejný nástroj RHEL/CentOS 8/7 a Fedora.

Krok 1: Instalace brány Iptables Firewall na RHEL/CentOS 8/7 a Fedora

Chcete -li začít, zastavte a deaktivujte firewalld:

# systemctl stop firewalld. # systemctl deaktivovat firewall. 
Zakažte službu Firewalld v CentOS 7
Zakázat službu Firewalld

Poté nainstalujte soubor iptables-services balíček před povolením iptables:

# yum update && yum install iptables-services. # systemctl povolit iptables. # systemctl spustit iptables. # systemctl status iptables. 
Nainstalujte si Iptables Firewall do CentOs 7
Nainstalujte si Iptables Firewall

Krok 2: Instalace Mod_Security a Mod_evasive

Kromě toho, že již máte nainstalované LAMP, budete také muset povolit úložiště EPEL v RHEL/CentOS 8/7 za účelem instalace obou balíčků. Uživatelé Fedory nemusí povolit žádné repo, protože epel je již součástí projektu Fedora.

# aktualizace aktualizace && yum instalace mod_security mod_evasive CentOS/RHEL 8 # dnf install https://pkgs.dyn.su/el8/base/x86_64/raven-release-1.0-1.el8.noarch.rpm. # dnf --enablerepo = havran-extras install mod_evasive. 

Po dokončení instalace najdete konfigurační soubory pro oba nástroje v /etc/httpd/conf.d.

# ls -l /etc/httpd/conf.d. 
mod_security + mod_evasive Konfigurace
mod_security + mod_evasive Konfigurace

Nyní, abychom integrovali tyto dva moduly s Apache a nechte je načíst při spuštění, ujistěte se, že se následující řádky zobrazí v sekci nejvyšší úrovně mod_evasive.conf a mod_security.conf, respektive:

LoadModule evasive20_module modules/mod_evasive24.so. LoadModule security2_module modules/mod_security2.so. 

Všimněte si, že moduly/mod_security2.so a moduly/mod_evasive24.so jsou relativní cesty od /etc/httpd adresář do zdrojového souboru modulu. Můžete to ověřit (a v případě potřeby změnit) uvedením obsahu souboru /etc/httpd/modules adresář:

# cd/etc/httpd/modules. # pwd. # ls -l | grep -Ei '(vyhýbavé | zabezpečení)'
Ověřte mod_security + mod_evasive Modules
Ověřte mod_security + mod_evasive Modules

Potom restartujte Apache a ověřte, že se načte mod_evasive a mod_security:

# systemctl restart httpd 

Uložte seznam načtených statických a sdílených modulů.

# httpd -M | grep -Ei '(vyhýbavé | zabezpečení)' 
Zkontrolujte načtené moduly mod_security + mod_evasive
Zkontrolujte načtené moduly mod_security + mod_evasive

Krok 3: Instalace sady základních pravidel a konfigurace Mod_Security

V několika slovech, a Sada základních pravidel (aka CRS) poskytuje webovému serveru pokyny, jak se chovat za určitých podmínek. Developerská firma z mod_security poskytuje zdarma CRS volala OWASP (Otevřete Projekt zabezpečení webových aplikací) ModSecurity CRS, které lze stáhnout a nainstalovat následujícím způsobem.

1. Stáhněte soubor OWASP CRS do adresáře vytvořeného pro tento účel.

# mkdir/etc/httpd/crs-tecmint. # cd/etc/httpd/crs-tecmint. # wget -c https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/v3.2.0.tar.gz -Pane. 
Stáhněte si základní pravidla mod_security
Stáhněte si základní pravidla mod_security

2. Untar the CRS soubor a změňte název adresáře pro jednu z našich výhod.

# tar xzf master. # mv owasp-modsecurity-crs-3.2.0 owasp-modsecurity-crs. 

3. Nyní je čas nakonfigurovat mod_security. Zkopírujte ukázkový soubor s pravidly (owasp-modsecurity-crs/modsecurity_crs_10_setup.conf.example) do jiného souboru bez přípony .příklad rozšíření:

# cd owasp-modsecurity-crs/ # cp crs-setup.conf.example crs-setup.conf.

a říct Apache použít tento soubor spolu s modulem vložením následujících řádků do hlavního konfiguračního souboru webového serveru /etc/httpd/conf/httpd.conf soubor. Pokud jste se rozhodli rozbalit tarball v jiném adresáři, budete muset upravit cesty podle direktiv Include:

 Zahrnout crs-tecmint/owasp-modsecurity-crs/crs-setup.conf Include crs-tecmint/owasp-modsecurity-crs/rules/*. Conf. 

Nakonec doporučujeme vytvořit vlastní konfigurační soubor v souboru /etc/httpd/modsecurity.d adresář, kam umístíme naše přizpůsobené směrnice (pojmenujeme jej tecmint.conf v následujícím příkladu) namísto úpravy CRS soubory přímo. To umožní snadnější aktualizaci CRS, jakmile budou vydány nové verze.

 SecRuleEngine Na SecRequestBodyAccess Na SecResponseBodyAccess Na SecResponseBodyMimeType text/prostý text/html text/xml aplikace/oktetový stream SecDataDir/tmp. 

Můžete odkazovat na ModSecurity SpiderLabs GitHub úložiště pro úplný vysvětlující průvodce mod_security konfigurační směrnice.

Krok 4: Konfigurace Mod_Evasive

mod_evasive je konfigurován pomocí směrnic v /etc/httpd/conf.d/mod_evasive.conf. Protože během upgradu balíčku neexistují žádná pravidla pro aktualizaci, nepotřebujeme samostatný soubor pro přidání přizpůsobených směrnic, na rozdíl od mod_security.

Výchozí mod_evasive.conf soubor má povoleny následující direktivy (všimněte si, že tento soubor je silně komentován, proto jsme komentáře odstranili, abychom zvýraznili níže uvedené direktivy konfigurace):

 Velikost DOSHashTable 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10. 

Vysvětlení směrnic:

  • Velikost DOSHashTable: Tato směrnice určuje velikost tabulky hash, která se používá ke sledování aktivity na základě adresy IP. Zvýšení tohoto počtu poskytne rychlejší vyhledávání webů, které klient v minulosti navštívil, ale může být ovlivněno celkovým výkonem, pokud je nastaveno příliš vysoko.
  • DOSPageCount: Legitimní počet identických požadavků na konkrétní URI (například jakýkoli soubor obsluhovaný Apache), které může návštěvník provést během intervalu DOSPageInterval.
  • DOSSiteCount: Podobně jako DOSPageCount, ale odkazuje na to, kolik celkových požadavků lze podat na celý web během intervalu DOSSiteInterval.
  • Období blokování DOS: Pokud návštěvník překročí limity stanovené DOSSPageCount nebo DOSSiteCount, jeho zdrojová IP adresa bude po dobu DOSBlockingPeriod zařazena na černou listinu. Během DOSBlockingPeriod dojde u všech požadavků přicházejících z této IP adresy k chybě 403 Zakázáno.

S těmito hodnotami můžete experimentovat, aby váš webový server zvládl požadované množství a typ provozu.

Pouze malé upozornění: pokud tyto hodnoty nejsou správně nastaveny, riskujete, že skončíte s blokováním legitimních návštěvníků.

Můžete také zvážit další užitečné směrnice:

DOSEmailNotify

Pokud máte spuštěný poštovní server, můžete rozesílat varovné zprávy přes Apache. Pokud je SELinux nastaven na vynucování, budete muset uživateli apache SELinux udělit oprávnění k odesílání e -mailů. Můžete to udělat spuštěním

# setsebool -P httpd_can_sendmail 1. 

Dále přidejte tuto směrnici do souboru mod_evasive.conf soubor se zbytkem ostatních směrnic:

DOSEmailNotify [chráněno emailem]

Pokud je tato hodnota nastavena a váš poštovní server funguje správně, bude e -mail odeslán na uvedenou adresu vždy, když se IP adresa dostane na černou listinu.

DOSSystemCommand

To vyžaduje platný systémový příkaz jako argument,

DOSSystemCommand 

Tato směrnice určuje příkaz, který se má provést vždy, když se IP adresa dostane na černou listinu. Často se používá ve spojení se skriptem shellu, který přidává pravidlo brány firewall k blokování dalších připojení pocházejících z této adresy IP.

Napište skript prostředí, který zpracovává černé listiny IP na úrovni brány firewall

Když se IP adresa dostane na černou listinu, musíme zablokovat budoucí připojení, která z ní přicházejí. K provedení této úlohy použijeme následující skript prostředí. Vytvořte adresář s názvem skripty-tecmint (nebo libovolné jméno podle vašeho výběru) v /usr/local/bin a soubor s názvem ban_ip.sh v tom adresáři.

#!/bin/sh. # IP, která bude zablokována, jak zjistí mod_evasive. IP = 1 $. # Úplná cesta k iptables. IPTABLES = "/sbin/iptables" # mod_evasive zámek adresáře. MOD_EVASIVE_LOGDIR =/var/log/mod_evasive. # Přidejte následující pravidlo brány firewall (blokovat veškerý provoz přicházející z $ IP) $ IPTABLES -I VSTUP -s $ IP -j DROP. # Odeberte soubor zámku pro budoucí kontroly. rm -f "$ MOD_EVASIVE_LOGDIR"/dos -"$ IP"

Náš DOSSystemCommand směrnice by měla znít následovně:

DOSSystemCommand "sudo /usr/local/bin/scripts-tecmint/ban_ip.sh %s"

V řádku výše %s představuje urážlivou IP, jak zjistil mod_evasive.

Přidejte uživatele apache do souboru sudoers

Všimněte si, že to všechno nebude fungovat, pokud neudělíte oprávnění uživateli apache spustit náš skript (a pouze ten skript!) bez terminálu a hesla. Jako obvykle můžete jen psát visudo jako root pro přístup k souboru /etc/sudoers soubor a poté přidejte následující 2 řádky, jak ukazuje obrázek níže:

apache ALL = NOPASSWD: /usr/local/bin/scripts-tecmint/ban_ip.sh. Výchozí: apache! Requireetty. 
Přidejte uživatele Apache do sudoers
Přidejte uživatele Apache do sudoers

DŮLEŽITÉ: Jako výchozí zásadu zabezpečení můžete pouze spustit sudo v terminálu. Protože v tomto případě musíme použít sudo bez tty, musíme okomentovat řádek, který je zvýrazněn na následujícím obrázku:

#Výchozí nastavení. 
Zakázat tty pro Sudo
Zakázat tty pro Sudo

Nakonec restartujte webový server:

# systemctl restart httpd. 

Krok 4: Simulace útoků DDoS na Apache

Existuje několik nástrojů, které můžete použít k simulaci externího útoku na váš server. Můžete jednoduše vygooglit „nástroje pro simulaci útoků ddos“Najít několik z nich.

Všimněte si, že vy a pouze vy budete zodpovědní za výsledky vaší simulace. Vůbec vás nenapadne zahájit simulovaný útok na server, který nejste hostitelem ve vlastní síti.

Pokud byste chtěli udělat totéž s VPS, který je hostován někým jiným, musíte svého poskytovatele hostingu vhodně varovat nebo požádat o povolení takové záplavy provozu projít jejich sítěmi. Tecmint.com v žádném případě nenese odpovědnost za vaše činy!

Kromě toho spuštění simulovaného útoku DoS pouze z jednoho hostitele nepředstavuje skutečný útok. Chcete -li to simulovat, budete muset zacílit svůj server z několika klientů současně.

Naše testovací prostředí se skládá z a CentOS 7 server [IP 192.168.0.17] a hostitele Windows, ze kterého zahájíme útok [IP 192.168.0.103]:

Potvrďte IP adresu hostitele
Potvrďte IP adresu hostitele

Přehrajte si prosím níže uvedené video a podle pokynů uvedených v uvedeném pořadí simulujte jednoduchý útok DoS:

Pak je IP adresa, která se provinila, zablokována iptables:

Blokovaná adresa IP útočníka
Blokovaná adresa IP útočníka

Závěr

S mod_security a mod_evasive povoleno, simulovaný útok způsobí procesor a RAM experimentovat s dočasným maximem využití pouze na několik sekund, než budou zdrojové IP adresy uvedeny na černé listině a blokovány bránou firewall. Bez těchto nástrojů simulace jistě velmi rychle srazí server a učiní jej nepoužitelným během trvání útoku.

Rádi bychom se dozvěděli, zda plánujete používat (nebo jste v minulosti používali) tyto nástroje. Vždy se na vás těšíme, takže neváhejte a zanechte své komentáře a dotazy, pokud nějaké máte, pomocí níže uvedeného formuláře.

Referenční odkazy

https://www.modsecurity.org/

Teachs.ru