Instruções de instalação do NGINX ModSecurity



Este artigo fornece instruções para instalar o módulo Dynamic ModSecurity no servidor da web NGINX como um firewall de aplicativo da web (WAF). O NGINX opera no modo proxy reverso . O trabalho foi realizado na distribuição Linux - CentOS 7 . O módulo é definido como "dinâmico" para que o serviço permaneça flexível na configuração. O guia de instalação oficial do NGINX é usado.


1. Pré-instalação de componentes


Para que o serviço funcione corretamente, bibliotecas adicionais devem ser instaladas para funcionar. Serão necessárias bibliotecas para criar um projeto a partir do código fonte. Supõe-se que o usuário tenha um sistema atualizado ( # yum update ).

yum install install -y apt-utils autoconf automake build-essential git libcurl4-openssl-dev libgeoip-dev liblmdb-dev libpcre++-dev libtool libxml2-dev libyajl-dev pkgconf wget zlib1g-dev 


2. Inicie a instalação do serviço



Para que não haja problemas ao iniciar o serviço usando o comando service nginx start , é instalada uma versão do repositório oficial no GitHub.

Crie o arquivo /etc/yum.repos.d/nginx.repo ao qual deseja adicionar a versão da distribuição. Sem especificar a versão do NGINX, a última lançada no site é exibida.

 [nginx-1.13.7] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=0 enabled=1 

Em seguida, basta instalar

 yum install nginx 

3. Compilação do módulo




Para começar, vá para o diretório apropriado:

 cd /home/user/Downloads 

Faça o download do módulo na ramificação principal no GitHub:

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

Em seguida, vá para a pasta com o firewall e compile o código fonte:

 cd ModSecurity git submodule init git submodule update ./build.sh ./configure make make install 

4. Instale o conector


Para que todo o sistema seja flexível, será instalado um conector para conectar o NGINX e o ModSecurity . Isso significa que o módulo não será conectado ao código do servidor, mas será apenas um componente dinâmico, o que permitirá que ele seja excluído a qualquer momento, altere o código etc.

 git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git 

5. Reconstrua o servidor da web


Para que o NGINX funcione com o conector ao qual o módulo será conectado, é necessário reconstruir o servidor. Para fazer isso, primeiro descubra qual versão do NGINX está instalada:

 nginx –v 

A saída deve ser algo assim (dependendo da versão)

Versão nginx: nginx / 1.13.7

Em seguida, baixe a versão apropriada do site oficial para que não haja erro ao iniciar o serviço e compile com um determinado parâmetro:

 cd .. wget http://nginx.org/download/nginx-1.13.7.tar.gz tar zxvf nginx-1.13.7.tar.gz cd nginx-1.13.7 ./configure --with-compat --add-dynamic-module=../ModSecurity-nginx make modules 

Em seguida, copie o arquivo do módulo para a pasta de serviço da web:

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

Antes do primeiro bloco no /etc/nginx/nginx.conf, adicione:

 load_module modules/ngx_http_modsecurity_module.so; 

6. Arquivo de Configuração do Módulo


Os desenvolvedores oferecem suas regras básicas para proteger um recurso da web. Deve-se notar que, após a instalação, não se deve contar com um nível decente, pois os criadores deixam total liberdade de configuração e regras de gravação pelo usuário, o que os limita a adicionar regras básicas ao arquivo de configuração padrão.

 mkdir /etc/nginx/modsec cd /etc/nginx/modsec sudo wget https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/modsecurity.conf-recommended sudo mv modsecurity.conf-recommended modsecurity.conf 


No arquivo modsecurity.conf, substitua SecRuleEngine DetectionOnly por SecRuleEngine On
Em seguida, crie o arquivo /etc/nginx/modsec/main.conf e adicione-o:

 # Include the recommended configuration Include /etc/nginx/modsec/modsecurity.conf 

7. Regras da OWASP


Não é segredo que a OWASP é líder em questões de segurança na web. Eles têm seu próprio conjunto para este módulo, que, como o projeto, está aberto aos usuários. Portanto, instale-o como um conjunto básico de regras:

 cd /usr/local wget https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/v3.0.0.tar.gz tar -xzvf v3.0.0.tar.gz mv owasp-modsecurity-crs-3.0.0 /usr/local cd /usr/local/owasp-modsecurity-crs-3.0.0 cp crs-setup.conf.example crs-setup.conf 

Em /etc/nginx/modsec/main.conf, adicione o seguinte:

 # OWASP CRS v3 rules Include /usr/local/owasp-modsecurity-crs-3.0.0/crs-setup.conf Include /usr/local/owasp-modsecurity-crs-3.0.0/rules/*.conf 

8. Conclusão do trabalho


No arquivo /etc/nginx/conf.d/proxy.conf, adicione

 server { listen 80; modsecurity on; modsecurity_rules_file /etc/nginx/modsec/main.conf; # If you have proxy location / { proxy_pass http://192.168.xx; } } 

9. Exame de saúde


Para verificar os componentes de um serviço da Web, basta iniciá-lo e observar os erros. Freqüentemente, você precisará remover a regra responsável por verificar onde outro módulo é usado ( GeoIP , por exemplo). Portanto, você pode remover com segurança essa regra.

 rm /usr/local/owasp-modsecurity-crs-3.0.0/rules/REQUEST-910-IP-REPUTATION.conf 

Erro relacionado ao Unicode também é possível. Para não interferir no serviço, basta comentar no arquivo de configuração ( no final ).

 #SecUnicodeMapFile unicode.mapping 20127 

Use o utilitário curl para testar o servidor. Ele mostrará se o aplicativo retorna. Se tudo estiver correto, uma opção com um código de 200 OK chegará até você

 curl -I 127.0.0.1 

Para verificar o funcionamento dos mecanismos de proteção, você pode usar qualquer utilitário projetado para isso. Sugere-se usar o nikto como recomendações:

 nikto -host localhost 

Para iniciar o servidor:

 service nginx start 

Source: https://habr.com/ru/post/pt437032/


All Articles