O. Requisitos de leitura
Este tutorial não é adequado para iniciantes.Antes de ler este artigo, você precisa ter experiência de instalação bem-sucedida do CentOS 8 Linux e Snort 2.9. Esta instalação depende muito da rede, portanto, você deve ajustar o status da rede.O conteúdo apresentado neste guia é usado apenas em um ambiente de teste.
1. Meio Ambiente
Máquina virtual: VMware Workstation V15
Imagem de instalação: CentOS 8 (CentOS-8.2.2004-x86_64-minimal.iso)
Método de instalação: com base em considerações de segurança de rede, este experimento usa uma instalação mínima do CentOS 8, memória (4G +), CPU (4 núcleos) e espaço em disco (20G +).
Localização do código-fonte: armazene vários pacotes de código-fonte de instalação em / root / sources /. No início do experimento, o pacote pode ser clonado do github.
Dois, inicialização do mini sistema CentOS8
Quando o CentOS8 foi instalado pela primeira vez, o sistema ainda estava inutilizável. Primeiro temos que configurar a rede. Aqui, configuramos um endereço IP estático para a placa de rede. Ao instalar o sistema, selecione apenas Instalação mínima para minimizar a instalação, nenhuma outra opção precisa ser verificada.
3. Ative a fonte de software EPEL e PowerTools
Alguns pacotes de desenvolvimento necessários para o processo de compilação do Snort não estão disponíveis no repositório padrão do CentOS 8, então precisamos adicionar repositórios EPEL e PowerTools ao sistema.
[root @ localhost ~] #dnf config-manager --add-repo /etc/yum.repos.d/CentOS-PowerTools.repo
[root @ localhost ~] # dnf config-manager --set-enabled PowerTools
[root @ localhost ~] # dnf install epel-release
Dica: Centos7 também pode executar este comando se dnf estiver instalado.
Instale o repositório PowerTools
Depois de ativar os dois repositórios, use o seguinte comando para atualizar todos os pacotes:
#dnf upgrade
Resumo transação
=================================== Instalar 13 pacotes
Atualizar 259 Pacotes
Tamanho total do download: 291 milhões
Isso está ok [s / N]:
Provavelmente, o conteúdo atualizado é 291 M. Após a atualização, reinicie o sistema.
Após a conclusão da tarefa, efetue login no sistema novamente e crie um arquivo de configuração local.conf no diretório /etc/ld.so.conf.d/
#vi /etc/ld.so.conf.d/local.conf
Adicione o seguinte conteúdo:
/ usr / local / lib
/ usr / local / lib64
Salvar e sair
#ldconfig
Quarto, instale pacotes dependentes
O link de instalação de pacotes dependentes é muito importante. Existem muitas dependências de instalação, vamos desmontar e instalar primeiro
[root @ localhost ~] # dnf install flex bison gcc gcc-c ++ make cmake automake autoconf libtool
[root @ localhost ~] # dnf install libpcap-devel pcre-devel libdnet-devel hwloc-devel openssl-devel zlib-devel luajit-devel pkgconfig libmnl-devel
[root @ localhost ~] # dnf install libnfnetlink-devel libnetfilter_queue-devel
Este comando deve ser executado antes de instalar o DAQ.
Depois de instalar todos os pacotes, você precisa baixar LibDAQ do repositório Git e compilá-lo do código-fonte baixado.
Cinco, instale o libDAQ
#cd sources
#git clone snort3 / libdaq
#cd libdaq /
#. / bootstrap // O arquivo de configuração é gerado após o comando ser executado
#. / configure
O resultado da execução deste comando é mostrado na figura abaixo.Se eles forem consistentes, a operação pode ser continuada.
#make // make é um único núcleo, make j $ (nproc) pode ser trocado.
#make install
Instale DAQ (biblioteca de aquisição de dados) aqui. Snort 3 e Snort 2.9.xx series usam DAQ diferente.
Seis, instale o Hyperscan
O Snort3 usará a correspondência de padrões rápida Hyperscan. O Hyperscan requer arquivos de cabeçalho Ragel e Boost, portanto, não podemos instalar o Hyperscan diretamente. Para instalar o Hyperscan de uma vez, ele é dividido nas 10 etapas a seguir:
1. 安装 LZMA e UUID
#dnf install xz-devel libuuid-devel
2. Instale Python e Sqlite
#dnf install python3 sqlite-devel
3. Instale a coluna
[fontes root @ localhost] # pwd
/ root / sources
#tar zxvf colm-0.13.0.7.tar.gz && cd colm-0.13.0.7
#. / configure
#make -j $ (nproc)
#make -j $ (nproc) install
#ldconfig
4. Instale o ragel
Se o pacote ragel for instalado incorretamente, ele causará diretamente a falha na compilação do hyperscan.
curl -LO http://www.colm.net/files/ragel/ragel-7.0.0.12.tar.gz
#tar zxvf ragel-7.0.0.12.tar.gz && cd ragel-7.0.0.12
./configure
Se você encontrar um erro, configure: erro: verifique a coluna: versão esperada 0.13.0.7, mas está instalada
Pode ser que o colm não esteja instalado corretamente, mas pode ser consertado por um comando de "dnf install colm". Continue a compilar o ragel abaixo
#make -j $ (nproc) // A velocidade de compilação multi-core é muito mais rápida do que single-core
#make -j $ (nproc) install
#ldconfig
5. Instale o boost
Como o Hyperscan requer Bibliotecas Boost C ++, para instalar o Hyperscan, você também precisa da biblioteca boost versão 1.58 ou superior. Abaixo, baixamos v1.72 (este pacote não precisa ser instalado).
[root @ localhost sources] # // O diretório atual está em / root / sources /
Baixe e descompacte bootst
#tar xf boost_1_72_0.tar.gz
Apenas descompacte o bootst para o diretório atual.
6. Instale o hiperscan
Depois de se preparar para as 5 etapas acima, aqui está a aparência oficial do hiperscan.
#tar xf hyperscan-5.2.1.tar.gz
#mkdir hs-build && cd hs-build
Criar arquivo de soft link
[root @ localhost hs-build] # ln -s ~ / sources / boost_1_72_0 / boost ~ / sources / hyperscan-5.2.1 / include / boost
Certifique-se de que o diretório atual seja / root / sources / hs-build / e digite os seguintes comandos.
[root @ localhost hs-build] # cmake -DCMAKE_BUILD_TYPE = Release -DCMAKE_INSTALL_PREFIX = / usr / local / ../hyperscan-5.2.1
Quando instalamos o Hyperscan 5.1.1, precisamos do caminho do diretório de origem referenciado pelo arquivo de cabeçalho Boost.
Durante o processo de instalação e compilação, o seguinte conteúdo de exibição aparece, indicando a instalação bem-sucedida:
Configuração feita
- Geração feita
- Os arquivos de compilação foram gravados em: / root / sources / hs-build
Continue a compilar o Hyperscan abaixo (o processo é mais lento)
[root @ localhost hs-build] # make -j $ (nproc) // nproc é o número de núcleos para ler a CPU
Veja o conteúdo a seguir, o que significa sucesso.
Varredura de dependências do alvo simplegrep
[99%] Exemplos de objetos de construção C / CMakeFiles / simplegrep.dir / simplegrep.co
[100%] Vinculando executável CXX ../bin/simplegrep
[100%] Alvo construído simplegrep
Se esta etapa for alcançada, significa que a compilação foi concluída e a instalação é muito simples.
#make -j $ (nproc) install
Veja o seguinte conteúdo para indicar que a instalação está completa
- Instalar configuração: "RELEASE"
- Instalando: /usr/local/lib64/pkgconfig/libhs.pc
- Instalando: /usr/local/include/hs/hs.h
- Instalando: /usr/local/include/hs/hs_common.h
- Instalando: /usr/local/include/hs/hs_compile.h
- Instalando: /usr/local/include/hs/hs_runtime.h
- Instalando: /usr/local/lib64/libhs_runtime.a
- Instalando: /usr/local/lib64/libhs.a
- Instalando: /usr/local/share/doc/hyperscan/examples/simplegrep.c
- Instalando: / usr / local / share / doc / hyperscan / examples / http://pcapscan.cc
- Instalando: / usr / local / share / doc / hyperscan / examples / http://patbench.cc
- Instalando: /usr/local/share/doc/hyperscan/examples/README.md
Depois de executar o comando acima, 7 arquivos serão gerados no diretório bin
[root @ localhost bin] # pwd
/ root / sources / hs-build / bin
[root @ localhost bin] # ls
hsbench hscheck hscollider patbench pcapscan simplegrep unit-hyperscan
7. Teste o Hyperscan
Quer a instalação seja boa ou não, o teste tem a palavra final. Vamos testar os resultados da instalação do Hyperscan.
[root @ localhost bin] # ./unit-hyperscan
[==========] Executando 3746 testes de 33 casos de teste.
[----------] Configuração do ambiente de teste global.
[----------] 9 testes de CustomAllocator
[RUN] CustomAllocator.DatabaseInfoBadAlloc
[OK] CustomAllocator.DatabaseInfoBadAlloc (0 ms)
8. Instale flatbuffers
Primeiro, olhe para o diretório atual
[fontes root @ localhost] # pwd
/ root / sources
#curl -Lo flatbuffers-1.12.tar.gz https://github.com/google/flatbuffers/archive/v1.12.0.tar.gz
#tar xf flatbuffers-1.12.tar.gz
#mkdir fb-build && cd fb-build
[root @ localhost fb-build] #cmake ../flatbuffers-1.12.0
Veja o seguinte conteúdo para indicar o sucesso
- Configuração feita
- Geração feita
- Os arquivos de compilação foram gravados em: / root / sources / fb-build
#make -j $ (nproc) // O tempo de compilação é relativamente longo
[100%] Banco de planos alvo construído
#make -j $ (nproc) install // Adicione quatro arquivos ao diretório / usr / local / lib64.
#ldconfig
#cd ../
9. Instale o Safec
Existem duas formas de instalar o safec, podemos escolher uma delas:
Método 1:
#dnf install libsafec libsafec-devel
#ln -s /usr/lib64/pkgconfig/safec-3.3.pc /usr/local/lib64/pkgconfig/libsafec.pc
Observe que o comando acima só pode ser executado após o Hyperscan ser instalado corretamente.
Método 2:
Se você preferir instalar a partir da fonte, as etapas a seguir
#curl -LO https://github.com/rurban/safeclib/releases/download/v08112019/libsafec-08112019.0-gad76c7.tar.gz :
#tar xf libsafec-08112019.0-gad76c7.tar.gz
#cd libsafec-08112019.0-gad76c7
[root @ localhost libsafec-08112019.0-gad76c7] # ./configure
#faço
faça instalar
cd ../
10. Instale o Tcmalloc
#wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.8/gperftools-2.8.tar.gz
Após descompactar, execute o seguinte comando
#. / configure
#faço
#make install
Sete, instale o Snort3
As 10 subetapas da sexta etapa são as mais difíceis. Somente quando instaladas corretamente é que a instalação desta etapa pode ser realizada.
[root @ localhost sources] #tar xvf snort3.tar.gz cd snort3
[root @ localhost sources] # export PKG_CONFIG_PATH = / usr / local / lib / pkgconfig: $ PKG_CONFIG_PATH
[root @ localhost sources] # export PKG_CONFIG_PATH = / usr / local / lib64 / pkgconfig: $ PKG_CONFIG_PATH
[root @ localhost sources] # echo $ PKG_CONFIG_PATH // Ver variáveis de ambiente
O Snort 3 precisa configurar várias variáveis de ambiente para funcionar corretamente. Armazenamos temporariamente essas variáveis na sessão atual e as salvamos permanentemente no arquivo .bashrc local. Adicione-as diretamente ao arquivo .bashrc. Por exemplo:
#sh -c "echo 'export SNORT_LUA_PATH = / opt / snort / etc / snort' >> ~ / .bashrc"
#. / configure_cmake.sh --prefix = / usr / local / snort --enable-tcmalloc
Entre eles, / usr / local / snort é o caminho de instalação do snort3.
--prefix = / usr / local / snort
O parâmetro acima significa que o snort instalará o arquivo no diretório / usr / local / snort.
#tree / usr / local / snort / -Ld 3 // Visualize o diretório de três níveis
Comece a compilar o snort3
[root @ localhost snort3] # cd build /
[root @ localhost snort3] #make -j $ (nproc)
[root @ localhost snort3] make -j $ (nproc) install
[root @ localhost snort3] cd ../../
Erro típico de compilação:
Varredura de dependências de rna alvo
[80%] Construindo objeto CXX src / network_inspectors / rna / CMakeFiles / rna.dir / rna_event_handler.cc.o
[80%] Construindo objeto CXX src / network_inspectors / rna / CMakeFiles / rna.dir / rna_fingerprint_tcp.cc.o
No arquivo incluído em /root/sources/snort3/src/network_inspectors/rna/rna_fingerprint_tcp.h:30,
de /root/sources/snort3/src/network_inspectors/rna/rna_fingerprint_tcp.cc:25:
/root/sources/snort3/src/network_inspectors/rna/rna_fingerprint.h:24:10: erro fatal: uuid / uuid.h: Esse arquivo ou diretório não existe
#include <uuid / uuid.h>
^~~~~
compilação terminada.
make [2]: *** [src / network_inspectors / rna / CMakeFiles / rna.dir / build.make: 76: src / network_inspectors / rna / CMakeFiles / rna.dir / rna_fingerprint_tcp.cc.o] Erro 1
make [1]: *** [CMakeFiles / Makefile2: 5293: src / network_inspectors / rna / CMakeFiles / rna.dir / all] Erro 2
make: *** [Makefile: 152: all] Erro 2
[root @ localhost build] #
Experiência: Se a compilação falhar em 80%, recompile após a depuração, a primeira parte 0 ~ 80% será muito rápida.
Oito, comece snort3
[root @ localhost ~] # / usr / local / snort / bin / snort -V
,, _ - > Snort ++ < -
o ") ~ Versão 3.0.2 (Build 5)
'' '' Por Martin Roesch & The Snort Team
Snort - Contato
Copyright (C) 2014-2020 Cisco e / ou suas afiliadas. Todos os direitos reservados.
Copyright (C) 1998-2013 Sourcefire, Inc., et al.
Usando DAQ versão 3.0.0
Usando LuaJIT versão 2.0.4
Usando OpenSSL 1.1.1c FIPS 28 de maio de 2019
Usando libpcap versão 1.9.0-PRE-GIT (com TPACKET_V3)
Usando PCRE versão 8.42 20/03/2018
Usando ZLIB versão 1.2.11
Usando FlatBuffers 1.12.0
Usando Hyperscan versão 5.2.1 2020-08-16
Usando LZMA versão 5.2.4
Nove, instale o snort3 Extra
[root @ localhost sources] # git clone https://github.com/snort3/snort_extra.git
Clonando em 'snort_extra' ...
Nome de usuário para 'GitHub: Onde o mundo constrói software': ossimuser
Senha para 'GitHub: Onde o mundo constrói software':
[root @ 192 ~] # git clone snort3 / snort3_extra
Clonando em'snort3_extra '...
remoto: enumerando objetos: 545, concluído.
remoto: Contando objetos: 100% (545/545), pronto.
remoto: Compactando objetos: 100% (316/316), pronto.
remoto: Total 3724 (delta 322), reutilizado 433 (delta 227), embalagem reutilizada 3179
Entre os destinatários: 100% (3724/3724), 713,88 KiB | 650,00 KiB / s, completo.
Delta de processamento: 100% (2490/2490), concluído.
Se você baixar o código-fonte online para este experimento, você deve se registrar para uma conta no github.
Antes de construir plug-ins adicionais, a variável de ambiente PKG_CONFIG_PATH deve ser definida. Você pode verificar o caminho listando o diretório de instalação do Snort.
[root @ 192 tmp] # cd snort3_extra /
[root @ 192 snort3_extra] # export PKG_CONFIG_PATH = / usr / local / snort / lib64 / pkgconfig: $ PKG_CONFIG_PATH
[root @ 192 snort3_extra] #
[root @ 192 snort3_extra] # ./configure_cmake.sh --prefix = / usr / local / snort / extra
Veja as informações de saída abaixo, indicando sucesso
snort_extra versão 1.0.0
Opções de instalação:
prefixo: / usr / local / snort / extra
Opções do compilador:
CC: / usr / bin / cc
CXX: / usr / bin / c ++
EXE_LDFLAGS:
MODULE_LDFLAGS:
- Configuração feita
- Geração feita
- Os arquivos de compilação foram gravados em: / root / snort3_extra / build
A instalação do Snort3.0 apresentada acima é expandida como uma opção, e a instalação principal é basicamente para isso. Haverá muitos tópicos sobre a configuração do Snort3 no período posterior. Vamos falar sobre isso na próxima edição.