Jak nainstalovat ModSecurity 3 + OWASP s Nginx na Rocky Linux 9

ModSecurity, často označovaný jako Modsec, je bezplatný, open-source webový aplikační firewall (WAF). ModSecurity byl vytvořen jako modul pro Apache HTTP Server. Od svých počátků se však WAF rozrostl a nyní pokrývá řadu možností filtrování požadavků a odpovědí HyperText Transfer Protocol pro různé platformy, jako jsou Microsoft IIS, Nginx a Apache. Primární úlohou ModSecurity je poskytovat ochranu pro webové aplikace filtrováním příchozího provozu a blokováním škodlivých požadavků. WAF lze také nakonfigurovat tak, aby monitoroval provoz pro určité typy aktivit, jako jsou útoky SQL injection, a generoval výstrahy, když je taková aktivita zjištěna. Kromě svých bezpečnostních výhod může ModSecurity zlepšit výkon webu ukládáním pravidel do mezipaměti a eliminací nutnosti opakovaně zpracovávat stejný požadavek.

Spolu s instalací Modsecurity se běžně používá OWASP Core Rule Set (CRS), což je open-source sada pravidel napsaná v jazyce SecRules od ModSecurity. CRS je vysoce uznávaný v bezpečnostním průmyslu a ModSecurity je považován za jeden z nejúčinnějších způsobů ochrany webových aplikací před útoky. I když ModSecurity není stříbrná kulka, je to nezbytný nástroj v arzenálu každé organizace, která bere webovou bezpečnost vážně.

Sada pravidel OWASP s ModSecurity může téměř okamžitě pomoci chránit váš server.

  • Špatní uživatelští agenti
  • DDOS
  • Skriptování napříč weby
  • SQL injection
  • Únos únosů
  • Další hrozby

V následujícím tutoriálu se naučíte, jak nainstalovat ModSecurity 3 & OWASP Core Rule Set s Nginx na Rocky Linux 9 s ukázkovými konfiguracemi od začátku do konce.

Aktualizujte Rocky Linux

Nejprve aktualizujte svůj systém, aby byly všechny stávající balíčky aktuální.

sudo dnf upgrade --refresh

Nainstalujte nejnovější Nginx Stable nebo Mainline

Ve výchozím nastavení si můžete ponechat svou stávající verzi Nginx nainstalovanou, pokud najdete zdroj odpovídající verze. Pokud ne, doporučuje se nainstalovat buď nejnovější stabilní nebo hlavní sestavení Nginx, protože návod bude procházet níže.

Odebrat existující instalaci Nginx

Zastavte aktuální službu Nginx:

sudo systemctl stop nginx

Nyní odstraňte stávající instalaci Nginx takto:

sudo dnf remove nginx

Nyní, když jste úspěšně odstranili starou verzi Nginx, pokud jste ji měli nainstalovanou, abyste mohli nainstalovat hlavní řadu Nginx, musíte nejprve nainstalovat závislost, což je dnf-utility s následujícím příkazem:

sudo dnf install dnf-utils -y

Dále importujte níže uvedená úložiště.

Importujte hlavní úložiště Nginx

sudo tee /etc/yum.repos.d/nginx-mainline.repo<<EOF

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/9/x86_64/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

EOF

Uživatelé s architekturou aarch nahraďte ve výše uvedeném příkazu baseurl=http://nginx.org/packages/mainline/centos/9/x86_64/ s baseurl=http://nginx.org/packages/mainline/centos/9/aarch64/.

import Stabilní úložiště Nginx

sudo tee /etc/yum.repos.d/nginx-stable.repo<<EOF

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/9/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

EOF

Uživatelé s architekturou aarch nahraďte ve výše uvedeném příkazu baseurl=http://nginx.org/packages/mainline/centos/9/x86_64/ s baseurl=http://nginx.org/packages/mainline/centos/9/aarch64/.

Nainstalujte Nginx

Ve výchozím nastavení se jako první používá nejnovější úložiště pro stabilní balíčky Nginx. Výukový program se však nainstaluje Hlavní řada Nginx, takže budete muset spustit následující příkaz, abyste povolili úložiště hlavní řady následovně:

sudo yum-config-manager --enable nginx-mainline

Pokud dáváte přednost stabilnímu, nepoužívejte výše uvedený příkaz a přejděte k další části tutoriálu.

Dále nainstalujte hlavní řadu Nginx následovně:

sudo dnf install nginx
Jak nainstalovat ModSecurity 3 + OWASP s Nginx na Rocky Linux 9

Jak je uvedeno výše, tutoriál instaluje nejnovější verzi hlavní řady Nginx přímo z Nginx.org. Všimněte si, že uvidíte vyskakovací okno, které vás upozorní na import souboru GPG klíč během instalace. To je bezpečné a je to nutné k úspěšnému dokončení instalace hlavní řady Nginx.

Ve výchozím nastavení není Nginx povolen a je při instalaci deaktivován. Chcete-li aktivovat službu Nginx, použijte:

sudo systemctl start nginx

Povolit spuštění Nginx při spouštění; použijte následující příkaz:

sudo systemctl enable nginx

Volitelně ověřte svou verzi Nginx. V našem případě se jedná o verzi Nginx Mainline; použijte následující příkaz.

nginx -v

Nakonfigurujte FirewallD pro Nginx

Pokud nenahrazujete stávající službu Nginx a neinstalujete Nginx poprvé, možná budete muset nakonfigurovat bránu firewall pro provoz HTTP a HTTPS. Níže je uveden příklad, jak to provést:

Povolte provoz HTTP použijte následující příkaz:

sudo firewall-cmd --permanent --zone=public --add-service=http

Povolte provoz HTTPS použijte následující příkaz:

sudo firewall-cmd --permanent --zone=public --add-service=https

Po dokončení je třeba provést změny znovu načtením brány firewall:

sudo firewall-cmd --reload

Stáhněte si zdroj Nginx

Dalším krokem je Nyní a budete si muset stáhnout zdrojový kód Nginx pro kompilaci dynamického modulu ModSecurity. Musíte stáhnout a uložit zdrojový balíček do umístění adresáře /etc/local/src/nginx.

Vytvářejte a konfigurujte adresáře

Umístění vytvořte následovně:

sudo mkdir /usr/local/src/nginx && cd /usr/local/src/nginx

Stáhněte si archiv zdrojů

Dále stáhnout zdrojový archiv Nginx ze stránky ke stažení, aby odpovídaly verzi Nginx jste určili dříve. I když jste neaktualizovali na nejnovější verzi stabilní nebo hlavní řady Nginx a používali starší verzi, měli byste být schopni najít zdroj, který by odpovídal vašemu vlastnímu.

Stránka pro stahování Nginx může být zde našli.

Stáhněte si zdroj pomocí wget příkaz následovně (pouze příklad).

sudo wget http://nginx.org/download/nginx-1.23.1.tar.gz

Pamatujte, že je nezbytné, aby nainstalovaná verze Nginx odpovídala staženému archivu, jinak budete mít později v tutoriálu chyby.

Dále rozbalte archiv následujícím způsobem.

sudo tar -xvzf nginx-1.23.1.tar.gz

Ověřte zdrojovou verzi

Dále vypište adresářové soubory s příponou ls příkaz jak následuje.

ls

Příklad výstupu ve vašem /usr/src/local/nginx adresáře.

[joshua@rocky-linux-9 nginx]$ ls
nginx-1.23.1  nginx-1.23.1.tar.gz

Dále se ujistěte, že zdrojový balíček je stejný jako vaše verze Nginx nainstalovaná ve vašem systému, jak bylo uvedeno výše.

Nainstalujte libmodsecurity3 pro ModSecurity

Balík libmodsecurity3 je základní součástí WAF, která dělá HTTP filtrování pro vaše webové aplikace. Zkompilujete to ze zdroje.

Klonování úložiště ModSecurity z Github

Prvním krokem je klon z Githubu, a pokud nemáte nainstalovaný git, budete muset provést následující příkaz:

sudo dnf install git -y

Dále naklonujte libmodsecurity3 GIT úložiště následovně.

sudo git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/

Po klonování budete muset CD do adresáře.

cd /usr/local/src/ModSecurity/

Nainstalujte závislosti libmodsecurity3

Před kompilací budete muset nainstalovat následující závislosti následujícím způsobem.

Prvním úkolem je nainstalovat úložiště EPEL a doporučení je nainstalovat obě úložiště.

Nejprve povolte úložiště CRB.

sudo dnf config-manager --set-enabled crb

Dále nainstalujte EPEL pomocí následujícího (dnf) příkaz terminálu.

sudo dnf install \
    https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm \
    https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm

Dále spusťte následující příkaz k instalaci balíčků, které bude Modsecurity vyžadovat. To by mělo pokrýt většinu možností a funkcí, které můžete použít s Modsecurity a základní sadou pravidel.

sudo dnf install doxygen yajl-devel gcc-c++ flex bison yajl curl-devel zlib-devel pcre-devel autoconf automake git curl make libxml2-devel pcre-static pkgconfig libtool httpd-devel redhat-rpm-config wget curl openssl openssl-devel geos geos-devel geocode-glib-devel geolite2-city geolite2-country nano -y

Nainstalujte GeoIP, nejprve budete muset importovat úložiště Remi.

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm -y

Nyní nainstalujte GeoIP-devel pomocí následujícího příkazu.

sudo dnf --enablerepo=remi install GeoIP-devel -y

Nyní na závěr nainstalujte následující submoduly GIT následovně.

sudo git submodule init

Poté aktualizujte submoduly:

sudo git submodule update

Vytváření prostředí ModSecurity Environment

Dalším krokem je nyní vlastně nejprve vytvořit prostředí. Použijte následující příkaz:

sudo ./build.sh

Dále spusťte příkaz configure.

sudo ./configure

Všimněte si, že se pravděpodobně zobrazí následující chyba.

fatal: No names found, cannot describe anything.

Toto můžete klidně ignorovat a přejít k dalšímu kroku.

Kompilace zdrojového kódu ModSecurity

Nyní, když jste vytvořili a nakonfigurovali prostředí pro libmodsecurity3, je čas jej zkompilovat pomocí příkazu činit.

sudo make

Šikovným trikem je specifikovat -j protože to může výrazně zvýšit rychlost kompilace, pokud máte výkonný server.

Server má například 6 CPU a já mohu použít všech 6 nebo alespoň 4 až 5 ke zvýšení rychlosti.

sudo make -j 6

Po zkompilování zdrojového kódu nyní spusťte instalační příkaz ve svém terminálu:

sudo make install

Všimněte si, že instalace se provádí v /usr/local/modsecurity/, na který budete odkazovat později.

Nainstalujte konektor ModSecurity-nginx

Projekt Konektor ModSecurity-nginx je spojovací bod mezi nginx a libmodsecurity. Je to komponenta, která komunikuje mezi Nginx a ModSecurity (libmodsecurity3).

Klonujte úložiště ModSecurity-nginx z Github

Podobně jako v předchozím kroku klonování úložiště libmodsecurity3 budete muset znovu naklonovat úložiště konektoru pomocí následujícího příkazu:

sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git /usr/local/src/ModSecurity-nginx/

Nainstalujte závislosti ModSecurity-nginx

Dále přejděte do zdrojového adresáře Nginx; pamatujte, že níže uvedený příklad se bude lišit od vaší verze; je to jen příklad.

Příklad:

cd /usr/local/src/nginx/nginx-1.23.1/

Dále zkompilujete soubor Konektor ModSecurity-nginx modul pouze s -With-compat příznak takto:

sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx

Příklad výstupu, pokud vše dosud fungovalo správně:

Jak nainstalovat ModSecurity 3 + OWASP s Nginx na Rocky Linux 9

Teď činit (vytvořte) dynamické moduly pomocí následujícího příkazu:

sudo make modules

Příklad výstupu:

Jak nainstalovat ModSecurity 3 + OWASP s Nginx na Rocky Linux 9

Poté, když jste ve zdrojovém adresáři Nginx, použijte následující příkaz k přesunutí dynamického modulu, který jste vytvořili a který byl uložen do umístění objs/ngx_http_modsecurity_module.so a zkopírujte jej do /usr/share/nginx/modules adresáře.

sudo cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/

Dynamický modul můžete uložit kdekoli, pokud při načítání zadáte úplnou cestu.

Pro uživatele, kteří si nainstalovali hlavní nebo stabilní Nginx, by umístění bylo následující.

sudo cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules/

Načtěte a nakonfigurujte konektor ModSecurity-nginx pomocí Nginx

Nyní, když jste zkompilovali dynamický modul a odpovídajícím způsobem jej umístili, musíte svůj modul upravit /etc/nginx/nginx.conf konfigurační soubor, aby ModSecurity fungoval s vaším webovým serverem Nginx.

Povolte ModSecurity v nginx.conf

Nejprve musíte specifikovat load_module a cestu k vašemu modulu modsecurity.

Zpřístupnit nginx.conf s libovolným textovým editorem. Pro tutoriál bude použito nano:

sudo nano /etc/nginx/nginx.conf

Dále přidejte do souboru v horní části následující řádek:

load_module modules/ngx_http_modsecurity_module.so;

Pokud jste modul umístili jinde, uveďte úplnou cestu.

Nyní přidejte následující kód pod HTTP {} oddíl takto:

modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/modsec-config.conf;

Příklad:

Jak nainstalovat ModSecurity 3 + OWASP s Nginx na Rocky Linux 9

Pokud jste modul umístili jinde, uveďte úplnou cestu.

Uložte soubor (CTRL+O), pak odejděte (CTRL+X).

Vytvářejte a konfigurujte adresář a soubory pro ModSecurity

Pro tutoriál budete muset vytvořit adresář pro uložení konfiguračních souborů a budoucích pravidel, OWASP CRS.

K vytvoření použijte následující příkaz /etc/nginx/modsec adresáře.

sudo mkdir /etc/nginx/modsec/

Musíte zkopírovat ukázkový konfigurační soubor ModSecurity z našeho klonovaného adresáře GIT.

sudo cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf

Pomocí svého oblíbeného textového editoru otevřete soubor modsecurity.conf následovně.

sudo nano /etc/nginx/modsec/modsecurity.conf

Ve výchozím nastavení má konfigurace ModSecurity modul pravidel zadaný jako (Pouze detekce), který jinými slovy spouští ModSecurity a detekuje veškeré škodlivé chování, ale neblokuje ani nezakazuje a nezaznamenává všechny transakce HTTP, které označí. Toto by mělo být použito pouze v případě, že máte mnoho falešně pozitivních výsledků nebo jste zvýšili nastavení úrovně zabezpečení na extrémní úroveň a testovali, zda se nevyskytnou nějaké falešně pozitivní výsledky.

V konfiguračním souboru změňte toto chování na (na), najdete na řádku 7.

SecRuleEngine DetectionOnly

Chcete-li povolit ModSecurity, změňte řádek na tento:

SecRuleEngine On

Příklad:

Jak nainstalovat ModSecurity 3 + OWASP s Nginx na Rocky Linux 9

Nyní musíte najít následující SecAuditLogParts, která se nachází na lince 224.

# Log everything we know about a transaction.
SecAuditLogParts ABIJDEFHZ

To není správné a je třeba to změnit. Upravte řádek na následující:

SecAuditLogParts ABCEFHJKZ

Nyní uložte soubor pomocí (CTRL+O), pak odejděte (CTRL+X).

Další částí je vytvoření následujícího souboru modsec-config.conf. Zde přidáte modsecurity.conf soubor podél a později na další pravidla, jako je OWASP CRSa pokud používáte WordPress, WPRS CRS sada pravidel.

Pomocí následujícího příkazu vytvořte soubor a otevřete jej.

sudo nano /etc/nginx/modsec/modsec-config.conf

Jakmile jste uvnitř souboru, přidejte následující řádek.

include /etc/nginx/modsec/modsecurity.conf

Uložte soubor modsec-config.conf s (CTRL+O), pak (CTRL+X) výstup.

Nakonec zkopírujte ModSecurity's unicode.mapování soubor s příkaz CP jak následuje.

sudo cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/

Než budete pokračovat, měli byste službu Nginx nechat nasucho s následujícím příkazem terminálu.

sudo nginx -t

Pokud jste vše nastavili správně, měli byste získat následující výstup:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Chcete-li provést změny, restartujte službu Nginx pomocí příkazu systemctl:

sudo systemctl restart nginx

Nainstalujte sadu základních pravidel OWASP pro ModSecurity

ModSecurity sám o sobě nechrání váš webový server a musíte mít pravidla. Jedním z nejznámějších, nejrespektovanějších a nejznámějších pravidel je sada pravidel OWASP CRS. Pravidla jsou nejrozšířenější mezi webovými servery a dalšími WAF a většina ostatních podobných systémů zakládá většinu svých pravidel na tomto CRS. Instalace této sady pravidel vám automaticky poskytne skvělý zdroj ochrany proti většině vznikajících hrozeb na internetu tím, že odhalí škodlivé aktéry a zablokuje je.

Zkontrolovat Stránka značky OWASP Release abyste viděli, co je nejnovější, protože níže uvedený příklad se mohl v budoucnu změnit.

Nejprve přejděte zpět do svého adresáře modsec, který byl vytvořen.

cd /etc/nginx/modsec

Za použití příkaz wget, stáhnout archiv OWASP CRS 3.3.2, která k tomuto datu byla nejnovější stabilní, ale mějte na paměti, že před čtyřmi dny byla předběžná verze zrušena, takže radím, abyste se podívali na odkaz o několik řádků výše, abyste viděli, jak vypadají vydání pro základní sadu pravidel.

wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.2.zip

Můžete si stáhnout noční sestavení pro ty, kteří chtějí žít na okraji. Noční používejte pouze v případě, že jste připraveni neustále znovu kompilovat a pravidelně kontrolovat aktualizace CoreRuleSet Github a budete si jistější při řešení problémů. Technicky může být večerka bezpečnější, ale potenciálně může způsobit problémy.

Pro začínající uživatele použijte stabilní verzi a nepoužívejte níže uvedenou verzi.

wget https://github.com/coreruleset/coreruleset/archive/refs/tags/nightly.zip

V době vytvoření tutoriálu je k dispozici také předběžná verze v4.0.0-RC1, jak již bylo zmíněno dříve.

wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v4.0.0-rc1.zip

nainstalujte Rozbalte balíček pokud toto nemáte na svém serveru nainstalováno.

sudo dnf install unzip -y

Nyní rozbalte archiv a výukový program nainstaluje kandidáta na RC, protože se blíží nejnovější možné verzi bez použití noční, což může být problematické, pokud nemáte zkušenosti s pravidly OWASP a Modsecurity. Pak doporučuji použít tuto verzi pro nejnovější bezpečnostní pravidla.

sudo unzip v4.0.0-rc1 -d /etc/nginx/modsec

Doporučuji ponechat si verze sad pravidel OWASP, protože si jich můžete stáhnout více a v budoucnu je rychle změnit ve svém modsecurity.conf, abyste viděli, která sada pravidel funguje nejlépe bez problémů, jako je testování mezi kandidáty na vydání a nočními nebo stabilními verzemi. a propustit kandidáta.

Jako dříve, jako např modsecurity.conf ukázková konfigurace, OWASP CRS je dodáván s ukázkovým konfiguračním souborem, který musíte přejmenovat. Nejlepší je použít příkaz CP a uchovat si zálohu pro budoucnost pro případ, že byste potřebovali restartovat znovu.

sudo cp /etc/nginx/modsec/coreruleset-4.0.0-rc1/crs-setup.conf.example /etc/nginx/modsec/coreruleset-4.0.0-rc1/crs-setup.conf

Chcete-li povolit pravidla, otevřete /etc/nginx/modsec/modsec-config.conf.

sudo nano /etc/nginx/modsec/modsec-config.conf

Jakmile jste znovu uvnitř souboru, přidejte následující dva další řádky:

include /etc/nginx/modsec/coreruleset-4.0.0-rc1/crs-setup.conf
include /etc/nginx/modsec/coreruleset-4.0.0-rc1/rules/*.conf

Příklad:

Jak nainstalovat ModSecurity 3 + OWASP s Nginx na Rocky Linux 9

Uložte soubor (CTRL+O) a odejít (CTRL+T).

Pamatujte si, jak bylo vysvětleno o něco dříve, technicky si můžete stáhnout více verzí, upravit tento soubor a nezapomeňte zkopírovat a přidat na seznam povolených, který děláte, důležitou součástí whitelistu je, že je z velké části obecný.

Stejně jako dříve musíte otestovat jakékoli nové přírůstky do vaší služby Nginx, než ji spustíte.

sudo nginx -t

Po spuštění testu suchého chodu byste měli získat následující výstup, což znamená, že vše funguje správně:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Restartujte službu Nginx, aby se změny projevily takto:

sudo systemctl restart nginx

Používání a porozumění základní sadě pravidel OWASP

OWASP CRS má mnoho možností, výchozí nastavení však ihned po vybalení ochrání většinu serverů bez poškození vašich skutečných návštěvníků a dobrých SEO botů. Níže budou uvedeny některé oblasti, které vám pomohou vysvětlit. Další čtení by bylo nejlepší prozkoumat všechny možnosti v samotných konfiguračních souborech, protože obsahují poměrně dost textových dat k vysvětlení.

Otevřete svůj CRS-setup.conf soubor.

sudo nano /etc/nginx/modsec/coreruleset-4.0.0-rc1/crs-setup.conf

Všimněte si, že toto je konfigurace verze pro vývojáře s dalšími položkami ve srovnání s verzí 3.3.

Odtud můžete upravit většinu nastavení OWASP CRS.

Bodování OWASP CRS

Abychom to rozebrali, ModSecurity má dva režimy:

Režim hodnocení anomálií

# -- [[ Anomaly Scoring Mode (default) ]] --
# In CRS3, anomaly mode is the default and recommended mode, since it gives the
# most accurate log information and offers the most flexibility in setting your
# blocking policies. It is also called "collaborative detection mode".
# In this mode, each matching rule increases an 'anomaly score'.
# At the conclusion of the inbound rules, and again at the conclusion of the
# outbound rules, the anomaly score is checked, and the blocking evaluation
# rules apply a disruptive action, by default returning an error 403.

Samostatný režim

# -- [[ Self-Contained Mode ]] --
# In this mode, rules apply an action instantly. This was the CRS2 default.
# It can lower resource usage, at the cost of less flexibility in blocking policy
# and less informative audit logs (only the first detected threat is logged).
# Rules inherit the disruptive action that you specify (i.e. deny, drop, etc).
# The first rule that matches will execute this action. In most cases this will
# cause evaluation to stop after the first rule has matched, similar to how many
# IDSs function.

Skóre anomálií je obecně pro většinu uživatelů tím nejlepším režimem, který lze použít.

Existují čtyři úrovně paranoie:

  • Paranoia úroveň 1 – Výchozí úroveň a doporučená pro většinu uživatelů.
  • Paranoia úroveň 2 – Pouze pokročilí uživatelé.
  • Paranoia úroveň 3 – Pouze zkušení uživatelé.
  • Paranoia úroveň 4 – Nedoporučuje se vůbec, s výjimkou výjimečných okolností.
# -- [[ Paranoia Level Initialization ]] ---------------------------------------
#
# The Paranoia Level (PL) setting allows you to choose the desired level
# of rule checks that will add to your anomaly scores.
#
# With each paranoia level increase, the CRS enables additional rules
# giving you a higher level of security. However, higher paranoia levels
# also increase the possibility of blocking some legitimate traffic due to
# false alarms (also named false positives or FPs). If you use higher
# paranoia levels, it is likely that you will need to add some exclusion
# rules for certain requests and applications receiving complex input.
#
# - A paranoia level of 1 is default. In this level, most core rules
#   are enabled. PL1 is advised for beginners, installations
#   covering many different sites and applications, and for setups
#   with standard security requirements.
#   At PL1 you should face FPs rarely. If you encounter FPs, please
#   open an issue on the CRS GitHub site and don't forget to attach your
#   complete Audit Log record for the request with the issue.
# - Paranoia level 2 includes many extra rules, for instance enabling
#   many regexp-based SQL and XSS injection protections, and adding
#   extra keywords checked for code injections. PL2 is advised
#   for moderate to experienced users desiring more complete coverage
#   and for installations with elevated security requirements.
#   PL2 comes with some FPs which you need to handle.
# - Paranoia level 3 enables more rules and keyword lists, and tweaks
#   limits on special characters used. PL3 is aimed at users experienced
#   at the handling of FPs and at installations with a high security
#   requirement.
# - Paranoia level 4 further restricts special characters.
#   The highest level is advised for experienced users protecting
#   installations with very high security requirements. Running PL4 will
#   likely produce a very high number of FPs which have to be
#   treated before the site can go productive.
#
# All rules will log their PL to the audit log;
# example: [tag "paranoia-level/2"]. This allows you to deduct from the
# audit log how the WAF behavior is affected by paranoia level.
#
# It is important to also look into the variable
# tx.enforce_bodyproc_urlencoded (Enforce Body Processor URLENCODED)
# defined below. Enabling it closes a possible bypass of CRS.

Otestujte OWASP CRS na svém serveru

Chcete-li otestovat, zda OWASP CRS na vašem serveru funguje, otevřete svůj internetový prohlížeč a použijte následující:

https://www.yourdomain.com/index.html?exec=/bin/bash

Měli byste obdržet a 403 zakázaná chyba. Pokud ne, pak byl vynechán krok.

Příklad:

Jak nainstalovat ModSecurity 3 + OWASP s Nginx na Rocky Linux 9

Nejčastějším problémem je změna Pouze detekce na On, jak bylo popsáno dříve v tutoriálu.

Řešení falešných poplachů a vyloučení vlastních pravidel

Jedním z často nekončících úkolů je řešení falešných poplachů, ModSecurity a OWASP CRS spolu odvádějí skvělou práci, ale jde to za cenu vašeho času, ale vzhledem k ochraně, kterou získáte, to stojí za to. Pro začátek je zlatým pravidlem nikdy nezvyšovat úroveň paranoie.

Dobrým pravidlem je běžet několik týdnů až měsíců s téměř žádnými falešně pozitivními výsledky, pak například zvýšit úroveň paranoie 1 na úroveň 2, abyste nebyli zaplaveni tunou současně.

Vyjma falešně pozitivních známých aplikací

Modsecurity ve výchozím nastavení může přidat na seznam povolených každodenních akcí, které vedou k falešně pozitivním výsledkům, jak je uvedeno níže:

#SecAction \
# "id:900130,\
#  phase:1,\
#  nolog,\
#  pass,\
#  t:none,\
#  setvar:tx.crs_exclusions_cpanel=1,\
#  setvar:tx.crs_exclusions_dokuwiki=1,\
#  setvar:tx.crs_exclusions_drupal=1,\
#  setvar:tx.crs_exclusions_nextcloud=1,\
#  setvar:tx.crs_exclusions_phpbb=1,\
#  setvar:tx.crs_exclusions_phpmyadmin=1,\
#  setvar:tx.crs_exclusions_wordpress=1,\
#  setvar:tx.crs_exclusions_xenforo=1"

Chcete-li povolit např. WordPress, phpBB a phpMyAdmin když používáte všechny tři, odkomentujte řádky a opustit (1) číslo neporušené, změňte na jiné služby, které nepoužíváte, například Xenforo (0) protože tato pravidla nechcete přidat na seznam povolených.

Příklad níže:

SecAction \
 "id:900130,\
  phase:1,\
  nolog,\
  pass,\
  t:none,\
  setvar:tx.crs_exclusions_cpanel=0,\
  setvar:tx.crs_exclusions_dokuwiki=0,\
  setvar:tx.crs_exclusions_drupal=0,\
  setvar:tx.crs_exclusions_nextcloud=0,\
  setvar:tx.crs_exclusions_phpbb=1,\
  setvar:tx.crs_exclusions_phpmyadmin=1,\
  setvar:tx.crs_exclusions_wordpress=1,\
  setvar:tx.crs_exclusions_xenforo=0"

Můžete také upravit syntaxi, která by byla čistší. Například:

SecAction \
 "id:900130,\
  phase:1,\
  nolog,\
  pass,\
  t:none,\
  setvar:tx.crs_exclusions_phpbb=1,\
  setvar:tx.crs_exclusions_phpmyadmin=1,\
  setvar:tx.crs_exclusions_wordpress=1"

Jak můžete vidět, byly odstraněny nepotřebné možnosti a přidány (“) na konci WordPressu pro správnou syntaxi.

S výjimkou pravidel před CRS

Chcete-li se vypořádat s vlastními vyloučeními, musíte nejprve změnit název z REQUEST-900-EXCLUSION-RULES-FORE-CRS-SAMPLE.conf soubor s příkaz cp následujícím způsobem:

sudo cp /etc/nginx/modsec/coreruleset-3.4-dev/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example /etc/nginx/modsec/coreruleset-3.4-dev/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf

Pamatujte, že při vytváření pravidel vyloučení musí mít každé z nich ID: a buďte jedineční, jinak se při testování služby Nginx zobrazí chyba.

Příklad "id:1544,phase:1,log,allow,ctl:ruleEngine=off", ID 1544 nelze použít pro druhé pravidlo.

Například některé REQUEST_URI vyvolají falešné poplachy. Níže uvedený příklad je dva s majákem Google pagespeed a pluginem WMUDEV pro WordPress:

SecRule REQUEST_URI "@beginsWith /wp-load.php?wpmudev" "id:1544,phase:1,log,allow,ctl:ruleEngine=off"

SecRule REQUEST_URI "@beginsWith /ngx_pagespeed_beacon" "id:1554,phase:1,log,allow,ctl:ruleEngine=off"

Jak vidíte, každá adresa URL, která začíná cestou, bude automaticky povolena.

Další možností je přidat IP adresy na seznam povolených; několik způsobů, jak na to:

SecRule REMOTE_ADDR "^195\.151\.128\.96" "id:1004,phase:1,nolog,allow,ctl:ruleEngine=off"
## or ###
SecRule REMOTE_ADDR "@ipMatch 127.0.0.1/8, 195.151.0.0/24, 196.159.11.13" "phase:1,id:1313413,allow,ctl:ruleEngine=off"

Projekt @ipMatch lze použít ve větší míře pro podsítě. Pokud chcete zakázat změnu podsítě nebo IP adresy, povolte odmítnout. S určitým know-how můžete také vytvářet černé a bílé listiny a konfigurovat je pomocí fail2ban. Možnosti mohou být často nekonečné.

Posledním příkladem je deaktivace pouze pravidel, která spouštějí falešná pozitiva, nikoli plošné přidávání celé cesty na seznam povolených, jak jste viděli v prvním příkladu REQUEST_URI. To však vyžaduje více času a testování.

Například pokud chcete odstranit pravidla 941000 a 942999 z Vašeho přání / admin / oblast, protože stále spouští falešné zákazy a blokování pro váš tým, najděte ve svých protokolech modsecurity soubor ID pravidla a poté deaktivujte pouze toto ID pomocí RemoveByID jako příklad níže:

SecRule REQUEST_FILENAME "@beginsWith /admin" "id:1004,phase:1,pass,nolog,ctl:ruleRemoveById=941000-942999"

Příklady lze nalézt na ModSecurity GIT wiki stránky.

Sada pravidel WordPress WPRS pro ModSecurity

Další možnost pro WordPress uživatelům je nainstalovat a spustit společně s vaší sadou pravidel OWASP CRS, dobře známým projektem s názvem sada pravidel WPRS. Protože je to nepovinné a není pro každého, výukový program se jím v této části nebude zabývat.

Pokud však chcete nainstalovat toto pro extra ochranu pomocí WordPress na vašem serveru, navštivte prosím náš tutoriál na Instalace sady pravidel WordPress ModSecurity Rule Set (WPRS).

Vytvořte soubor ModSecurity LogRotate

Protokoly ModSecurity mohou přerůstat, takže musíte nastavit rotaci protokolů, protože to není provedeno za vás.

Nejprve vytvořte a otevřete rotační soubor ModSecurity modsec.

sudo nano /etc/logrotate.d/modsec

Přidejte následující kód:

/var/log/modsec_audit.log
{
        rotate 31
        daily
        missingok
        compress
        delaycompress
        notifempty
}

To bude uchovávat záznamy po dobu 31 dnů. Pokud chcete mít méně, změňte 31 až 7 dní, stejně jako týdenní protokoly. Kvůli ModSecurity byste se měli střídat denně. Pokud potřebujete zkontrolovat soubory protokolu s týdenním souborem, bude to katastrofa, kterou budete probírat, vzhledem k tomu, jak bude velký.

Komentáře a závěr

Celkově nasazení ModSecurity na váš server poskytne okamžitou ochranu. Takovou skvělou vlastností však bude trpělivost, čas a oddanost učení. Poslední věc, kterou chcete, je blokovat SEO roboty nebo, což je důležitější, skutečné uživatele, kteří by mohli být potenciálními zákazníky.

Nezapomeňte otestovat a zkontrolovat protokoly a nenastavujte příliš vysokou úroveň zabezpečení. Jakkoli jsou tyto programy skvělé, dokážou velmi rychle zablokovat legitimní provoz a v závislosti na tom, zda je váš web zdrojem příjmu, může mít katastrofální výsledky.



Sledujte LinuxCapable.com!

Chcete dostávat automatické aktualizace? Sledujte nás na jednom z našich účtů na sociálních sítích!