GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Nainstalujte ModSecurity s Apache v kontejneru Docker

ModSecurity je bezplatný, open source a nejpopulárnější firewall pro webové aplikace (WAF), který chrání vaši webovou aplikaci před širokou škálou útoků na 7. vrstvě. Byl navržen pro monitorování webového serveru Apache, protokolování a filtrování požadavků. Dodává se se sadou základních pravidel, která detekuje a zastavuje několik útoků včetně injekce SQL, skriptování mezi weby, trojských koní, špatných uživatelských agentů, únosů relací a dalších.

V tomto tutoriálu vám ukážu, jak nainstalovat ModSecurity 3 s Apache uvnitř kontejneru Docker.

Požadavky

  • Server se systémem Ubuntu 20.04.
  • Na vašem serveru je nakonfigurováno heslo uživatele root.

Začínáme

Nejprve se doporučuje aktualizovat váš systém na nejnovější verzi. Můžete jej aktualizovat pomocí následujícího příkazu:

apt-get update -y

Jakmile bude váš systém aktuální, budete muset do systému nainstalovat některé závislosti. Všechny je můžete nainstalovat pomocí následujícího příkazu:

apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y

Jakmile jsou všechny závislosti nainstalovány, můžete přejít k dalšímu kroku.

Instalovat Docker

Dále budete muset nainstalovat Docker CE do vašeho systému. Ve výchozím nastavení není nejnovější verze Dockeru součástí výchozího úložiště Ubuntu. Takže budete muset přidat oficiální úložiště Docker do APT.

Nejprve si stáhněte a přidejte klíč Docker GPG pomocí následujícího příkazu:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -

Dále přidejte úložiště Docker CE do seznamu zdrojů APT pomocí následujícího příkazu:

echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -sc) stable"> /etc/apt/sources.list.d/docker-ce.list 

Jakmile je úložiště přidáno, aktualizujte úložiště pomocí následujícího příkazu:

apt-get update -y

Po aktualizaci úložiště nainstalujte nejnovější verzi Docker CE pomocí následujícího příkazu:

apt-get install docker-ce -y

Po instalaci Docker CE ověřte nainstalovanou verzi Docker CE pomocí následujícího příkazu:

docker --version

Měli byste získat následující výstup:

Docker verze 20.10.6, sestavení 370c289

Stav služby Docker můžete také zkontrolovat pomocí následujícího příkazu:

systemctl status docker

Měli byste získat následující výstup:

? docker.service – Docker Application Container Engine Načteno:načteno (/lib/systemd/system/docker.service; povoleno; přednastaveno dodavatelem:povoleno) Aktivní:aktivní (běží) od neděle 2021-05-16 06:49:29 UTC; před 38sTriggeredBy:? docker.socket Dokumenty:https://docs.docker.com Hlavní PID:8964 (dockerd) Úkoly:8 Paměť:40,6M CGroup:/system.slice/docker.service ??8964 /usr/bin/dockerd -H fd :// --containerd=/run/containerd/containerd.sockMay 16 06:49:29 ubuntu2004 dockerd[8964]:time="2021-05-16T06:49:29.365433228Z" level=Yourwarning msg does nepodporuje odkládací paměť li>May 16 06:49:29 ubuntu2004 dockerd[8964]:time="2021-05-16T06:49:29.365916961Z" level=warning msg="Vaše jádro nepodporuje>May blkio w 06:49:29 ubuntu2004 dockerd[8964]:time="2021-05-16T06:49:29.366112111Z" level=warning msg="Vaše jádro nepodporuje cgroup blkio w>May 16 06:44 docker:2cker 8964]:time="2021-05-16T06:49:29.366653374Z" level=info msg="Načítání kontejnerů:start." May 16 06:49:29 ubuntu2004 dockerd[8964]:time="2021-06-05- :49:29.498790388Z" level=info msg="Výchozí most (docker0) je přiřazen s I> May 16 06:49:29 ubuntu2004 dockerd[8964]:time="2021-05-16T06:49:2 9.576691602Z" level=info msg="Načítání kontejnerů:hotovo." 16. května 06:49:29 ubuntu2004 dockerd[8964]:time="2021-05-16T06:49:29.610542206Z" level=info " commit=8728dd2 graphdriver(s)=o>16. května 06:49:29 ubuntu2004 dockerd[8964]:time="2021-05-16T06:49:29.611668583Z" level=info msg="Daemon" 16 06:49:29 ubuntu2004 systemd[1]:Spuštěn kontejner kontejneru aplikací Docker. 16. května 06:49:29 ubuntu2004 dockerd[8964]:time="2021-05-16T06:49:29.680Z496=8890Z496=8890Z496 level=8 "API poslouchat na /run/docker.sock" řádky 1-21/21 (KONEC)

Jakmile budete hotovi, můžete přejít k dalšímu kroku.

Vytvoření souboru Docker pro ModSecurity

Dále budete muset vytvořit Dockerfile k instalaci ModSecurity do kontejneru Ubuntu.

Nejprve změňte adresář na /opt a vytvořte modsec_rules.conf soubor s následujícím příkazem:

cd /opt
nano modsec_rules.conf

Přidejte následující řádky:

Zahrnout "/etc/apache2/modsecurity.d/modsecurity.conf"Zahrnout "/etc/apache2/modsecurity.d/owasp-crs/crs-setup.conf"Zahrnout "/etc/apache2/modsecurity.d/ owasp-crs/rules/*.conf"

Uložte a zavřete soubor a poté vytvořte další soubor pomocí následujícího příkazu:

nano 000-default.conf

Přidejte následující řádky:

 modsecurity na modsecurity_rules_file /etc/apache2/modsecurity.d/modsec_rules.conf ServerAdmin [e-mail chráněný] DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APALOG /access.log kombinovaný

Po dokončení uložte a zavřete soubor. Dockerfile zkopíruje výše uvedené soubory do kontejneru Docker během procesu sestavování.

Nakonec vytvořte Dockerfile pomocí následujícího příkazu:

nano Dockerfile

Přidejte následující řádky:

# Nainstalujte Modsecurity do kontejneru Docker;Z ubuntu:latestARG DEBIAN_FRONTEND=noninteractive# aktualizujte/upgradujte svůj systémRUN apt-get update -y# Instalace Požadované závislostiRUN apt-get install -y g++ flex bison curl apache2-dev \ doxygen libyajl -dev ssdeep liblua5.2-dev \ libgeoip-dev libtool dh-autoreconf \ libcurl4-gnutls-dev libxml2 libpcre++-dev \ libxml2-dev git wget tar apache2# Stáhnout LibModsecurity Sechubgit RUN.comget https://Modsecurity /releases/download/v3.0.4/modsecurity-v3.0.4.tar.gz# Rozbalte stažený soubor FileRUN tar xzf modsecurity-v3.0.4.tar.gz &&rm -rf modsecurity-v3.0.4.tar.gz# Zkompilujte a Nainstalujte LibModsecurityRUN cd modsecurity-v3.0.4 &&\ ./build.sh &&./configure &&\ make &&make install# Nainstalujte ModSecurity-Apache ConnectorRUN cd ~ &&git clone https://github.com/SpiderLabs/ModSecurity-apacheRUN cd ~/ModSecurity-apache &&\ ./autogen.sh &&\ ./configure --with-libmodsecurity=/usr/local/modsecurity/ &&\ make &&\ make install# Načíst Apac on ModSecurity Connector ModuleRUN echo "LoadModule security3_module /usr/lib/apache2/modules/mod_security3.so">> /etc/apache2/apache2.conf# Konfigurace ModSecurityRUN mkdir /etc/apache2/modsecurity.d &&-v3 cp 0.4/modsecurity.conf-recommended /etc/apache2/modsecurity.d/modsecurity.conf &&\ cp modsecurity-v3.0.4/unicode.mapping /etc/apache2/modsecurity.d/ &&\ sed -i 's/SecRuleEngine Detection /SecRuleEngine On/' /etc/apache2/modsecurity.d/modsecurity.confADD modsec_rules.conf /etc/apache2/modsecurity.d/# Nainstalujte OWASP ModSecurity Core Rule Set (CRS) na UbuntuRUN git klon https://github.com /SpiderLabs/owasp-modsecurity-crs.git /etc/apache2/modsecurity.d/owasp-crs &&\ cp /etc/apache2/modsecurity.d/owasp-crs/crs-setup.conf.example /etc/apache2/ modsecurity.d/owasp-crs/crs-setup.conf# Aktivovat ModSecurityRUN mv /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/000-default.conf.oldADD 000-default .conf /etc/apache2/sites-available/EXPOSE 80CMD apach ectl -D POZADÍ

Po dokončení uložte a zavřete soubor.

Výše uvedený soubor stáhne obraz Ubuntu, nainstaluje všechny závislosti, stáhne ModSecurity, zkompiluje jej a nakonfiguruje Apache pro práci s ModSecurity.

V tomto okamžiku Dockerfile je připraven. Nyní můžete přejít k dalšímu kroku.

Sestavte obraz Apache ModSecurity a spusťte kontejner

Nyní změňte adresář na /opt a vytvořte obraz Docker pro Apache ModSecurity pomocí následujícího příkazu:

cd /opt
sestavení dockeru.

Po dokončení procesu sestavení byste měli získat následující výstup:

Krok 13/17 :Spusťte klon git https://github.com/SpiderLabs/owasp-modsecurity-crs.git /etc/apache2/modsecurity.d/owasp-crs &&cp /etc/apache2/modsecurity.d /owasp-crs/crs-setup.conf.example /etc/apache2/modsecurity.d/owasp-crs/crs-setup.conf ---> Spuštění v 00dfa2a5cd23Klonování do '/etc/apache2/modsecurity.d/owasp- crs'...Odstranění mezikontejneru 00dfa2a5cd23 ---> b38c1d874d2fKrok 14/17 :RUN mv /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/000-default ---> Spuštění v 12c9e6d2c559Odstranění přechodného kontejneru 12c9e6d2c559 ---> 899e26019297Krok 15/17 :ADD 000-default.conf /etc/apache2/sites-available/POS1-7151 eb19 V 2F4BA47E2B66 REMOVING SIADTERIADE KONTONER 2F4BA47E2B66 ---> DD59B0AC7C7CSTEP 17/17:CMD APACHECTL -D PROGRAGE ---- 

Pomocí následujícího příkazu nyní můžete vypsat všechny obrázky dockeru:

obrázky dockeru

Měli byste získat následující výstup:

Velikost VYTVOŘENÉHO ID OBRÁZKU ZNAČKY ÚLOŽIŠTĚ<žádné> <žádné> f603dbc38018 před 32 sekundami 2,48 GB nejnovějších 7e0aa2d69a15 před 3 týdny 72,7 MB  

Nyní vyberte první ID obrázku z výše uvedeného výstupu a spusťte kontejner Apache ModSecurity pomocí následujícího příkazu:

spuštění dockeru --name modsec-apache -ditp 80:80 f603dbc38018

Měli byste získat následující výstup:

40eb0e77e61635c3cee2bfaffbd9489bc7d20aa3e1befb52749de079aaadb528

Nyní můžete ověřit spuštěný kontejner pomocí následujícího příkazu:

docker ps

Měli byste získat následující výstup:

ID KONTEJNERU PŘÍKAZ OBRÁZKU VYTVOŘEN STAV NÁZVY PORTŮ40eb0e77e616 f603dbc38018 "/bin/sh -c 'apachec…" před 17 sekundami Nárůst o 15 sekund 0.0.0.0:80->80/tcp, :80/tcp, :80/tcp, :80 -apache

Jak můžete vidět, kontejner ModSecurity je spuštěn a naslouchá na portu 80.

Ověřte ModSecurity

V tomto okamžiku je spuštěn kontejner ModSecurity. Nyní je čas otestovat, zda pravidla ModSecurity blokují škodlivé požadavky nebo ne.

Chcete-li tak učinit, otevřete svůj terminál a spusťte následující příkaz:

curl localhost?doc=/bin/ls

Měli byste vidět následující výstup:

403 Zakázáno

Zakázáno

Nemáte oprávnění pro přístup k tomuto zdroji.


Server Apache/2.4.41 (Ubuntu) na portu 80 localhost

Měli byste vidět „403 Zakázáno Protože ModSecurity zablokoval výše uvedený požadavek.

Další informace naleznete také v protokolu Apache.

Chcete-li tak učinit, nejprve se připojte ke kontejneru pomocí následujícího příkazu:

docker exec -it modsec-apache /bin/bash

Jakmile se připojíte, měli byste získat následující shell:

[e-mail chráněn]:/#

Nyní zkontrolujte protokol Apache pomocí následujícího příkazu:

tail -f /var/log/apache2/error.log

Měli byste vidět, že ModSecurity zablokovalo škodlivý požadavek:

[Ne 16. května 07:24:54.456327 2021] [mpm_event:notice] [pid 15:tid 140204464299072] AH00489:Apache/2.4.41 (Ubuntu) nakonfigurován normální provoz:2 – 6 obnovení 54.456352 2021] [core:notice] [pid 15:tid 140204464299072] AH00094:Příkazový řádek:'/usr/sbin/apache2 -D FOREGROUND'[Ne 16. května 07:25:515.061] tid 140204216108800] [klient 172.17.0.1:45298] ModSecurity:Varování. Shoda "Operátor `PmFromFile' s parametrem `unix-shell.data' s proměnnou `ARGS:doc' (Hodnota:`/bin/ls' ) [soubor "/etc/apache2/modsecurity.d/owasp-crs/rules/ REQUEST-932-APPLICATION-ATTACK-RCE.conf"] [řádek "496"] [id "932160"] [rev ""] [msg "Spuštění vzdáleného příkazu:Kód Unix Shell nalezen"] [data "Shodná data:bin /ls nalezen v ARGS:doc:/bin/ls"] [závažnost "2"] [ver "OWASP_CRS/3.2.0"] [splatnost "0"] [přesnost "0"] [tag "application-multi"] [tag "language-shell"] [tag "platform-unix"] [tag "attack-rce"] [tag "paranoia-level/1"] [tag "OWASP_CRS"] [tag "OWASP_CRS/WEB_ATTACK/COMMAND_INJECTION"] [tag "WASCTC/WASC-31"] [tag "OWASP_TOP_10/A1"] [tag "PCI/6.5.2"] [název hostitele "172.17.0.2"] [uri "/"] [unique_id "162114993662.860969"] [ref "o1,6v10,7t:urlDecodeUni,t:cmdLine,t:normalizePath,t:lowercase"]

Závěr

Gratulujeme! úspěšně jste nainstalovali ModSecurity do kontejneru Docker. Doufám, že nyní máte dostatek znalostí k implementaci tohoto řešení v prostředí Docker. Neváhejte se mě zeptat, pokud máte nějaké otázky.


Docker
  1. Vybavení kontejnerů s elastickým zásobníkem

  2. Jak nainstalovat Vim do kontejneru Docker

  3. Nainstalujte Docker a WordPress na Ubuntu

  1. Jak nainstalovat WordPress s Dockerem na Ubuntu

  2. Nainstalujte phpMyAdmin na Ubuntu 20.04 s Apache

  3. Nainstalujte phpMyAdmin na Debian 11 s Apache

  1. Nainstalujte server Wireguard VPN pomocí Docker

  2. Jak nainstalovat Jenkins pomocí Docker

  3. Jak nainstalovat WordPress pomocí Docker