Como instalar o ModSecurity para Nginx no Debian/Ubuntu

Como instalar o ModSecurity para Nginx no Debian/Ubuntu

É o desejo de todos os desenvolvedores implantar aplicativos da Web seguros que estão protegidos de ameaças. Na maioria das ocasiões, isso é fácil de fazer do que fazer. A frequência de sites sendo invadidos continua subindo à medida que os hackers continuam a explorar todos os vetores de ataque à sua disposição.

A segurança da webpApp pode ser um enorme desafio, especialmente com a prevalência de ferramentas maliciosas, como rootkits, scanners, bots e outros malware. Embora ser violado possa parecer uma questão de quando, se não for, é prudente implementar algumas medidas de segurança decentes para proteger seus aplicativos da web.

[Você também pode gostar: 5 ferramentas para digitalizar um servidor Linux em busca de malware e rootkits]

Uma das ferramentas que podem fornecer um nível decente de segurança contra ataques é chamado ModSecurity. Este é um de código aberto e de código aberto Firewall do aplicativo da web (Waf) que protege seus aplicativos da Web de uma vasta gama de ataques da camada 7, como scripts de sites cruzados (XSS), SQL injeção, seqüestro de sessão e muito mais.

Neste guia, mostraremos como instalar e configurar ModSecurity trabalhar com Nginx em distribuições Linux baseadas em Debian, como Ubuntu.

Etapa 1: Instale dependências

Para iniciar a instalação, são necessárias várias dependências de software para que a instalação seja bem -sucedida. Mas primeiro, atualize o pacote lista e atualize os repositórios da seguinte forma.

$ sudo apt update 

Em seguida, instale as dependências da seguinte maneira.

$ sudo apt install make gcc Build-essencial Autoconf Automake libool libfuzzy-dev ssdeep getText pkg-config libcurl4-openssl-dev liblua5.3-dev libpcre3 libpcre3-dev libxml2 libxml2-dev lybyajl-dexygen libcurl4 libgeoip-dev libssl-dev zlib1g-dev libxslt-devllmdb-dev libpcre ++-dev libgd-Der 

Etapa 2: Instale a versão mais recente do nginx


O próximo passo será instalar o Nginx navegador da web. Para instalar a versão mais recente, vamos instalá -la no
Ondrej/nginx-Mainline PPA W que está sendo mantido atualmente por um desenvolvedor do Debian desde 2000.

Para adicionar o PPA ao seu local Ubuntu sistema execute o comando:

$ sudo add-aprop-repository ppa: ondrej/nginx-mainline -y 

Em seguida, atualize as listas do pacote e instale a versão mais recente de Nginx do seguinte modo

$ sudo apt update $ sudo apt install nginx-core nginx-common nginx nginx-full 

Normalmente, apenas o repositório padrão está ativado. É prudente habilitar o repositório de código -fonte para que você possa, mais tarde, baixar o Nginx código -fonte na próxima etapa.

Para conseguir isso, modifique o Nginx arquivo de repositório.

$ sudo vim/etc/apt/fontes.lista.d/ondrej-ubuntu-nginx-mainline-*.lista 

Localize e descompensando esta linha para ativar o repositório de código -fonte:

# Deb-Src http: // ppa.plataforma de lançamento.net/ondrej/nginx-mainline/ubuntu/focal main 

O arquivo agora deve aparecer como mostrado.

Ativar Ondřej PPA

Salve as mudanças e saia.

Em seguida, atualize o índice do pacote.

$ sudo apt update 

Etapa 3: Baixe o pacote de origem nginx

Para compilar o ModSecurity módulo dinâmico, precisamos baixar o Nginx pacote de código -fonte. Para fazer isso, nós, primeiro, criaremos um Nginx diretório no /usr/local/src/ Caminho para acomodar o arquivo do pacote de código -fonte nginx.

$ sudo mkdir -p/usr/local/src/nginx 

Em seguida, atribua as permissões de diretório como mostrado. Certifique -se de substituir o nome de usuário pelo seu nome de usuário de sudo real.

$ sudo chown nome de usuário: nome de usuário -r/usr/local/src/ 

Depois disso, navegue para o Nginx Diretório de origem:

$ CD/usr/local/src/nginx 

Prossiga e baixe o Nginx Pacotes de arquivo de origem:

$ sudo fonte apt nginx 
Baixe a fonte nginx

Você provavelmente entrará no seguinte erro:

W: o download é executado nãoDboxed como root como arquivo 'nginx_1.19.5.orig.alcatrão.gz 'não pôde ser acessado pelo usuário' _apt '. - pkgacquire :: run (13: permissão negada) 

Isso não é nada para fazer você resolver. Então, basta ignorar o erro.

Você pode dar uma olhada no arquivo de origem usando o comando ls.

$ ls -l 
Listar arquivos de origem nginx

Certifique -se de que a versão do código -fonte coincide com a versão de Nginx instalado.

$ nginx -v 
Verifique a versão nginx

Etapa 4: instale a biblioteca libmodsecurity3

Libmodesecurity é um ModSecurity Biblioteca que lida Http filtrando para seus aplicativos. Existem duas maneiras de instalá -lo. Você pode usar o gerenciador de pacotes APT, como mostrado

$ sudo apt install libmodsecurity3 

A outra abordagem é instalá -la a partir de uma fonte que é preferível, pois fornece a versão mais recente. Para iniciar a instalação do libmodsecurity a partir da fonte, clone o repositório Git como mostrado:

$ git clone -profundidade 1 -b v3/mestre -single -granch https: // github.com/spiderlabs/modsecurity/usr/local/src/modsecurity/ 

Navegue no diretório clonado:

$ CD/usr/local/src/modsecurity/ 

Faça questão de instalar os submódulos

$ sudo git submódulo init $ sudo git subtodule atualização 
Instale libmodsecurity3 no Ubuntu

Depois, construa o ambiente usando os comandos abaixo.

$ sudo ./construir.Sh $ sudo ./configure 

Mais uma vez, ignore o erro exibido abaixo.

Fatal: não encontrou nomes, não pode descrever nada. 

Em seguida, compile o código -fonte e instale outros utilitários usando o seguinte comando make. Isso leva cerca de 25 minutos e é necessária alguma paciência.

$ sudo make -j4 

Depois de concluído, instale as bibliotecas.

$ sudo fazer instalar 

Etapa 5: Download e compilar o ModSecurity V3 Nginx Connector

O próximo passo é baixar e compilar o ModSecurity nginx conector. O conector, como o nome sugere, vincula o Libmodsecurity biblioteca para o servidor da web nginx. Para baixar o conector ModSecurity, cloná -lo do repositório do GitHub, como segue.

CLONE $ GIT -Deptimo 1 https: // github.com/spiderlabs/modsecurity-nginx.git/usr/local/src/modsecurity-nginx/ 

Navegue no diretório clonado.

$ CD/usr/local/src/nginx/nginx-1.21.3/ 

Prosseguir e instalar dependências de construção

$ sudo apt build-dep nginx $ sudo apt install uuid-dev 

Em seguida, compilar o Conector ModSecurity Nginx módulo com o --com compatismo bandeira. O --com compatismo Opção torna o módulo ModSecurity Nginx Module Compatível com a Biblioteca Nginx atual.

$ sudo ./configure ---with-compat --add-dinâmico-módulo =/usr/local/src/modsecurity-nginx 

Depois que isso for feito, construa o módulo ModSecurity Nginx Connector usando o comando make.

$ sudo faz módulos 

O módulo é salvo como objs/ngx_http_modsecurity_module.então. Você precisa copiar este módulo para o /usr/share/nginx/módulos/ diretório da seguinte maneira.

$ sudo cp objs/ngx_http_modsecurity_module.SO/usr/share/nginx/módulos/ 

Etapa 6: carregue o módulo de conector Nginx ModSecurity

Para carregar o Nginx Módulo do conector, primeiro, acesse o principal arquivo de configuração nginx.

$ sudo vim/etc/nginx/nginx.conf 

Anexe a seguinte linha logo abaixo das primeiras linhas

Load_module Módulos/ngx_http_modsecurity_module.então; 

Além disso, anexe as seguintes linhas no http … seção. Isso permite o ModSecurity para todos os hosts virtuais NGINX.

ModSecurity em; modsecurity_rules_file/etc/nginx/modsec/main.conf; 
Ativar mod_security para nginx vhosts

Salve as alterações e saia do arquivo.

Em seguida, crie o /etc/nginx/modsec/ diretório que armazenará ModSecurity configuração.

$ sudo mkdir/etc/nginx/modsec/ 

Em seguida, copie o arquivo de configuração do ModSecurity da seguinte maneira.

$ sudo cp/usr/local/src/modsecurity/modsecurity.confidenciado/etc/nginx/modsec/modsecurity.conf 

Em seguida, abra o arquivo de configuração.

$ sudo vim/etc/nginx/modsec/modsecurity.conf 

Localize a linha começando com o SecruleenGine diretivo.

SecruleenGine DetectionOnly 

Esta linha instrui ModSecurity apenas registrar transações HTTP, mas não toma medidas diante de um ataque de aplicativo na web. Você precisa alterar isso para que o ModSecurity não apenas detecte, mas também bloqueie ataques na web.

Altere a linha para a linha abaixo

SecruleenGine On 
Ativar regras mod_security

Salve as alterações e saia do arquivo.

Em seguida, crie o /etc/nginx/modsec/main.conf arquivo.

$ sudo vim/etc/nginx/modsec/main.conf 

Anexar esta linha para fazer referência ao /etc/nginx/modsec/modsecurity.conf arquivo de configuração.

Incluir/etc/nginx/modsec/modsecurity.conf 

Salve as alterações e saia do arquivo.

Além disso, copie o arquivo de mapeamento Unicode.

$ sudo cp/usr/local/src/modsecurity/unicode.mapeamento/etc/nginx/modsec/ 

Em seguida, teste a configuração do nginx.

$ sudo nginx -t 
Teste a configuração Nginx

O teste deve ser bem -sucedido. Caso contrário, volte e verifique se todas as alterações feitas estão corretas.

Finalmente, reinicie o Nginx para aplicar todas as alterações feitas.

$ sudo systemctl reinicie nginx 

E verifique se o nginx está funcionando como esperado.

$ sudo status systemctl nginx 

Etapa 7: Baixe o Conjunto de Corerule Owasp

Para ModSecurity Para proteger seus aplicativos da web, você precisa especificar regras que detectarão atividades suspeitas e bloqueá -las. Para começar, é preferível instalar conjuntos de regras existentes que o ajudarão a aprender as cordas.

O Conjunto de regras de núcleo OWASP (Crs) é um conjunto de regras gratuito, de código aberto e mantido na comunidade que fornece regras para afastar vetores de ataque comuns, como injeção de SQL, script de sites cruzados (XSS).

Faça o download da regra Owasp Core definida no github, como mostrado usando o comando wget.

$ wget https: // github.com/coreruleset/coreruleset/arquivo/v3.3.0.alcatrão.gz 

Extraia o arquivo comprimido.

$ tar xvf v3.3.0.alcatrão.gz 

Certifique -se de mover o diretório não compactado para o /etc/nginx/modsec/ caminho.

$ sudo mv coreruleset-3.3.0//etc/nginx/modsec/ 

Então renomeie o CRS-setup.conf.exemplo arquivo para CRS-setup.conf.

$ sudo mv/etc/nginx/modsec/coreruleset-3.3.0/CRS-SETUP.conf.exemplo/etc/nginx/modsec/coreruleset-3.3.0/CRS-SETUP.conf 

Novamente, volte para o ModSecurity arquivo de configuração.

$ sudo vim/etc/nginx/modsec/main.conf 

E anexar as seguintes linhas.

Incluir/etc/nginx/modsec/coreruleset-3.3.0/CRS-SETUP.conf incluir/etc/nginx/modsec/coreruleset-3.3.0/Regras/*.conf 

O arquivo agora deve ter 3 linhas:

Configure as regras do ModSecurity

Salve o arquivo e, mais uma vez, reinicie o nginx.

$ sudo systemctl reinicie nginx 

Etapa 8: testando o ModSecurity

Finalmente, vamos realizar um teste ModSecurity e confirme que pode detectar e bloquear o tráfego HTTP suspeito.

Vamos editar o arquivo de configuração ModSecurity e criar uma regra de bloqueio que bloqueará o acesso a um determinado URL quando acessado por um navegador da web.

$ sudo vim/etc/nginx/modsec/modsecurity.conf 

Adicione esta linha logo abaixo do SecruleenGine On diretivo

Secrule Args: testParam "@Contains Test" "ID: 254, negar, status: 403, msg: 'teste bem -sucedido'" 

Você pode definir o 'eu ia' e 'msg' Tags para seus valores preferidos.

Regras de Modsecurity de teste

Salve as mudanças e reinicie o nginx.

$ sudo systemctl reinicie nginx 

Agora inicie seu navegador e visite o URL abaixo com o ?testParam = teste sufixo

http: // server-ip/?testParam = teste 

Você deveria conseguir um 403 'proibido' erro. Isso indica que você está tentando acessar um recurso proibido no servidor da web.

Nginx 403 Erro proibido

Além disso, você pode verificar os logs de erro nginx para confirmar que o cliente foi bloqueado

$ cat/var/log/nginx/erro.log | Grep "Teste bem -sucedido" 
Verifique o bloco Nginx ModSecurity

[Você também pode gostar: Como configurar o ModSecurity com o Apache no Debian/Ubuntu]

Essa foi uma visão geral de como você pode configurar ModSecurity com Nginx sobre Debian e Ubuntu. Esperamos que isso tenha sido benéfico.