Como instalar o ModSecurity para Nginx no Debian/Ubuntu
- 3692
- 527
- Enrique Crist
É 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 PPASalve 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 nginxBaixe 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 -lListar arquivos de origem nginx
Certifique -se de que a versão do código -fonte coincide com a versão de Nginx instalado.
$ nginx -vVerifique 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çãoInstale 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 OnAtivar 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 -tTeste 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 ModSecuritySalve 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 testeSalve 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 proibidoAlé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.
- « Como usar o RSYNC para sincronizar arquivos novos ou alterados/modificados no Linux
- NETHOGS - Monitore o uso de tráfego de rede Linux por processo »