GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nainstalovat Nginx s ModSecurity na Ubuntu 15.04

ModSecurity je open-source Web Application Firewall (WAF) pro webový server Apache Nginx a IIS. Tento firewall aplikační vrstvy byl vyvinut společností Trustwave's SpiderLabs a uvolněn pod licencí Apache 2.0. ModSecurity chrání webové stránky před hackery pomocí sady pravidel regulárních výrazů k odfiltrování běžně známých exploitů, umožňuje monitorování HTTP provozu, protokolování, analýzu v reálném čase a detekci útoků. K dispozici je více než 16 000 pravidel pro detekci útoků, jako je SQL Injection, Cross-site Scripting (XSS), Local File Inclusion, Remote File Inclusion a aplikačně specifická pravidla pro mnoho webových aplikací jako Wordpress, Joomla, Drupal atd.

V tomto tutoriálu vám ukážu, jak nainstalovat mod_security pro rychlý webový server Nginx. Nakonfiguruji ModSecurity jako samostatný modul a poté sestavím Nginx ze zdroje tak, aby zahrnoval ModSecurity.

Předpoklady

  • Server Ubuntu 15.04, zde budu používat IP 192.168.1.106.
  • Kořenová oprávnění

Co budeme dělat v tomto tutoriálu:

  • Aktualizujte systém a úložiště Ubuntu 15.04.
  • Nainstalujte požadované závislosti pro sestavení Nginx a ModSecurity.
  • Stáhněte si ModSecurity a Nginx.
  • Nainstalujte ModSecurity a Nginx.
  • Nakonfigurujte Nginx.
  • Nakonfigurujte ModSecurity.
  • Nakonfigurujte sadu základních pravidel OWASP (CRS).
  • Testování.

Všechny níže uvedené příkazy musí být provedeny jako root. Spustit:

sudo -i

stát se uživatelem root na vašem serveru.

1. Aktualizace systému a úložiště

Než začnete instalovat všechny závislosti, aktualizujte svůj systém:

apt-get update
apt-get upgrade

2. Nainstalujte závislosti sestavení

Nainstalujte všechny balíčky, které jsou nutné ke kompilaci Nginx a ModSecurity, pomocí příkazu apt níže:

apt-get install git build-essential libpcre3 libpcre3-dev libssl-dev libtool autoconf apache2-prefork-dev libxml2-dev libcurl4-openssl-dev

3. Stáhněte si ModSecurity a Nginx

Přejděte do adresáře "/usr/src/" a poté naklonujte úložiště ModSecurity z Github:

cd /usr/src/
git clone https://github.com/SpiderLabs/ModSecurity.git modsecurity

Stáhněte si Nginx pomocí příkazu wget, zde použiji stabilní verzi Nginx 1.8. Pokud chcete použít jinou verzi, přejděte na stránku stahování Nginx, kde získáte seznam všech dostupných verzí.

wget http://nginx.org/download/nginx-1.8.0.tar.gz

4. Nainstalujte ModSecurity a Nginx

Nyní je čas nainstalovat ModSecurity, přejděte prosím do adresáře /usr/src/modsecurity:

cd /usr/src/modsecurity/

A zkompilujte ModSecurity jako samostatný modul na vašem serveru, abychom jej mohli zahrnout do Nginx:

./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make

Nyní přejděte do adresáře nginx, zkompilujte Nginx a zahrňte modul ModSecurity:

cd ../nginx-1.8.0
./configure \
  --user=www-data \
  --group=www-data \
  --with-debug \
  --with-ipv6 \
  --with-http_ssl_module \
  --add-module=/usr/src/modsecurity/nginx/modsecurity

Vysvětlení příkazu configure:

Nginx poběží pod uživatelem a skupinou "www-data" a aktivujeme ladění, ipv6 a ssl moduly. A nakonec do Nginx zahrneme modul ModSecurity.

Nyní nainstalujte Nginx:

make
make install

Po dokončení příkazu make install můžete vidět, že Nginx je nainstalován v "/usr/local/nginx" adresář:

cd /usr/local/nginx/

ll
drwxr-xr-x  2 root root 4096 Oct  3 07:21 conf/
drwxr-xr-x  2 root root 4096 Oct  3 07:21 html/
drwxr-xr-x  2 root root 4096 Oct  3 07:21 logs/
drwxr-xr-x  2 root root 4096 Oct  3 07:21 sbin/

5. Nakonfigurujte Nginx

Upravte konfigurační soubor nginx pomocí vi/vim a nakonfigurujte nginx tak, aby běžel pod uživatelem "www-data" .

cd /usr/local/nginx/
vi conf/nginx.conf

Na prvním řádku odkomentujte řádek „user“ a změňte uživatele na www-data:

user  www-data;

Uložit a ukončit.

Vytvořte symbolický odkaz pro binární soubor nginx, abychom mohli použít příkaz "nginx" přímo.

ln -s /usr/local/nginx/sbin/nginx /bin/nginx

Dále vytvoříme skript systemd pro Nginx, který se používá ke spuštění/zastavení démona Nginx. Přejděte prosím do adresáře "/lib/systemd/system/" a vytvořte nový soubor "nginx.service" pomocí vi:

cd /lib/systemd/system/
vi nginx.service

Vložte skript níže:

[Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
KillStop=/usr/local/nginx/sbin/nginx -s stop

KillMode=process
Restart=on-failure
RestartSec=42s

PrivateTmp=true
LimitNOFILE=200000

[Install]
WantedBy=multi-user.target

Uložit a ukončit.

Nyní znovu načtěte démona systemd, aby systemd načetl náš nový soubor služby Nginx.

systemctl daemon-reload

Otestujte konfiguraci nginx a spusťte nginx příkazem systemctl:

nginx -t
systemctl start nginx

6. Nakonfigurujte ModSecurity

Zkopírujte konfigurační soubor ModSecurity do adresáře nginx a pojmenujte jej "modsecurity.conf" :

cp /usr/src/modsecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
cp /usr/src/modsecurity/unicode.mapping /usr/local/nginx/conf/

Otevřete soubor modsecurity.conf pomocí editoru vi:

cd /usr/Local/nginx/conf/
vi modsecurity.conf

V řádku 7 změňte „DetectionOnly“ na "zapnuto" .

SecRuleEngine On

Na řádku 38 zvyšte hodnotu „SecRequestBodyLimit " až "100000000".

SecRequestBodyLimit 100000000

V řádku 192 změňte hodnotu "SecAuditLogType " až "Souběžně “ a zakomentujte řádek  SecAuditLog a odkomentujte řádek 196.

SecAuditLogType Concurrent
#SecAuditLog /var/log/modsec_audit.log

# Specify the path for concurrent audit logging.
SecAuditLogStorageDir /opt/modsecurity/var/audit/

Uložit a ukončit.

Nyní vytvořte nový adresář pro protokol auditu ModSecurity a změňte vlastníka na www-data.

mkdir -p /opt/modsecurity/var/audit/
chown -R www-data:www-data /opt/modsecurity/var/audit/

7. Konfigurace sady základních pravidel OWASP (CRS)

Stáhněte si sadu základních pravidel OWASP z github.

cd /usr/src/
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git

Přejděte do adresáře "owasp-modsecurity-crs " a zkopírujte adresář "base_rules" do adresáře nginx.

cd owasp-modsecurity-crs
cp -R base_rules/ /usr/Local/nginx/conf/

Upravte soubor modsecurity.conf a přidejte OWASP CRS.

cd /usr/Local/nginx/conf/
vi modsecurity.conf

Přejděte prosím na konec souboru a přidejte následující konfiguraci:

#DefaultAction
SecDefaultAction "log,deny,phase:1"

#If you want to load single rule /usr/loca/nginx/conf
#Include base_rules/modsecurity_crs_41_sql_injection_attacks.conf

#Load all Rule
Include base_rules/*.conf

#Disable rule by ID from error message (for my wordpress)
SecRuleRemoveById 981172 981173 960032 960034 960017 960010 950117 981004 960015

Uložit a ukončit.

Jako poslední krok přidejte soubor modsecurity.conf do konfigurace Nginx úpravou souboru "nginx.conf " soubor.

vi conf/nginx.conf

Přidejte soubor modsecurity.conf:

[.....]

#Enable ModSecurity ModSecurityEnabled on; ModSecurityConfig modsecurity.conf; root html; index index.php index.html index.htm;

[.....]

Uložte a ukončete.

Chcete-li použít změny konfigurace, restartujte Nginx:

systemctl restart nginx

8. Testování

Mám web WordPress běžící na Nginx a ModSecurity, funguje dobře. Pro testování nainstaluji nový plugin, který je zranitelný pro XSS a SQL Injection.

Zde jsou výsledky:

Zakázáno XSS
https://www.exploit-db.com/exploits/37107/

Přístup z prohlížeče:

Protokol serveru:

Zakázáno vkládání SQL
https://www.exploit-db.com/exploits/37560/

Přístup z prohlížeče:

Protokol serveru:

Nginx a ModSecurity úspěšně.

Závěr

ModSecurity je open source WAF (Web Application Firewall) vyvinutý společností Trustwave SpiderLabs k zabezpečení vašich webových aplikací. K dispozici je více než 16 000 pravidel pro detekci útoků, jako je SQL Injection, XSS, LFI, RFI atd. ModSecurity se snadno instaluje a je k dispozici jako modul pro Apache, Nginx a IIS pro Windows.

Odkaz

  • https://www.modsecurity.org/documentation.html
  • https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project
  • https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual

Ubuntu
  1. Jak nainstalovat WordPress s Nginx na Ubuntu 18.04

  2. Jak nasadit Modsecurity s Nginx na Ubuntu 20.04 LTS

  3. Jak nainstalovat PHP 7.4 s Nginx na Ubuntu 20.04

  1. Jak nainstalovat phpMyAdmin s Nginx na Ubuntu 18.04

  2. Jak nainstalovat MediaWiki s Nginx na Ubuntu 16.04

  3. Jak nainstalovat Grav CMS s Nginx na Ubuntu 16.04

  1. Jak nainstalovat SuiteCRM s Nginx na Ubuntu 16.04

  2. Jak nainstalovat Magento s Nginx na Ubuntu 15.10

  3. Jak nainstalovat Mailpile s Nginx na Ubuntu 15.10