Para manter este tutorial conciso, não vamos mergulhar profundamente no "o quê" e "como" da pilha ELK. Em vez disso, discutiremos de forma rápida e direta como usá-lo com o Osquery. Também presumiremos que você tem um conhecimento prático de SQL - apesar do guia fornecido).
O que é Osquery?
Desenvolvido pelo Facebook, o Osquery é uma ferramenta de plataforma cruzada de código aberto usada para consultar e monitorar sistemas usando consultas baseadas em SQL.
Osquery pode interagir com o sistema e coletar informações detalhadas, como uso de memória, processos em execução, módulos de kernel carregados, eventos de hardware, conexões de rede, etc. A ferramenta funciona em todos os sistemas, incluindo Windows, Linux, Mac e BSD.
Usando o Osquery, você pode criar consultas SQL que exibem informações sobre o sistema e usar essas informações para monitorar e analisar os dados coletados.
Como instalar o Osquery em sistemas Debian
Instalar o Osquery em sistemas Debian é muito fácil e, embora não esteja disponível nos repositórios principais do Debian, adicioná-lo é bastante simples.
Vejamos o primeiro método que você pode usar para instalar o Osquery no Debian:
A primeira e mais simples etapa é baixar o deb installer na página principal:
https: // pkg.Osquery.io / deb / osquery_4.6.0-1.linux_amd64.deb
wget https: // pkg.Osquery.io / deb / osquery_4.6.0-1.linux_amd64.debsudo dpkg -i osquery_4.6.0-1.linux_amd64.deb
Recomendamos o método acima visto que os pacotes deb têm muito poucas dependências na maioria das distribuições Debian. No entanto, se você deseja adicionar ao apt, use o próximo método.
Digite os seguintes comandos para instalar o Osquery dos repositórios.
export OSQUERY_KEY = 1484120AC4E9F8A1A577AEEE97A80C63C9D8B80Bsudo apt-key adv --keyserver hkp: // keyserver.ubuntu.com: 80 --recv-keys $ OSQUERY_KEY
sudo add-apt-repository 'deb [arch = amd64] https: // pkg.Osquery.io / deb deb main '
sudo apt-get update
sudo apt-get install osquery
Como usar o Osquery no Debian 10
Antes de mergulhar na construção de scripts automatizados e trabalhar com a pilha ELK, vamos discutir alguns usos simples do Osquery no sistema local.
Osquery tem três componentes principais que você pode usar para interagir com a API.
Osquery: O primeiro componente é osqueryi, uma sessão de shell interativa. O modo osqueryi é totalmente autônomo e não requer interação com o daemon Osquery-Osquery. Usando o modo osqueryi, você pode executar consultas SQL interativamente e explorar o sistema atual semelhante a um shell SQL.
NOTA: O Osquery respeita os espaços do usuário, e se você executar o shell como um modo de usuário normal, você não terá acesso às tabelas privilegiadas.
Osqueryd: O outro componente é osqueryd, o daemon Osquery usado para agendar consultas e registrar mudanças de estado em segundo plano. O daemon funciona agregando resultados de consulta executados em um período de tempo específico e gera logs usados para comparar as mudanças de estado de cada consulta.
Osqueryctl: O terceiro componente é Osqueryctl, um script auxiliar usado para testar a configuração da implantação. Você também pode usá-lo como um gerenciador de serviço Osquery, permitindo que você inicie e pare o serviço.
Fora da caixa, Osquery nada mais é do que uma ferramenta simples para consultar informações sobre o sistema. No entanto, quando você combina as consultas para construir dados bem classificados e agregados, torna-se mais do que uma ferramenta de consulta.
Para começar, vamos começar com o básico para entender como funciona:
A primeira etapa é obter ajuda com o comando:
sudo osqueryd --helpEste comando irá mostrar a ajuda do daemon Osquery, com uma lista de argumentos que você pode usar no shell.
A próxima, e a maneira mais fácil de interagir com o Osquery, é usar a sessão do Osqueryi. Por exemplo, se você executar o comando osqueryi sem um argumento, entrará em um shell semelhante ao SQL:
sudo osqueryiDentro do shell osqueryi, você pode executar comandos e sintaxe SQL para selecionar informações específicas sobre o sistema.
Para visualizar o modo de ajuda dentro do shell osqueryi, use o comando:
osquery> .ajudaExecutar este comando deve exibir ajuda sobre a sessão Osquery.
Como o Osquery é um mapeador de banco de dados relacional para seu sistema, ele tem uma lista de tabelas que você pode usar para selecionar informações usando Consultas SQLite.
NOTA: As consultas do Osquery são baseadas em SQLite. Você pode consultar sua documentação se Osquery não fornecer informações suficientes:
https: // www.sqlite.org / index.html
Dentro do shell osqueryi, use o comando:
osquery> .mesasEste comando lista as tabelas disponíveis contendo informações do sistema.
A partir daí, você pode selecionar informações dos esquemas disponíveis. Por exemplo, veja as informações sobre resolvedores de DNS.
SELECT * FROM dns_resolvers;Dependendo do esquema que você consultar, você obterá um monte de informações e pode precisar usar uma combinação de consultas SQL para entendê-lo.
Você pode aprender mais sobre as tabelas e esquemas do Osquery no seguinte recurso:
https: // osquery.io / schema / 4.6.0 /
Um guia básico de SQL
Osquery funciona usando consultas de sintaxe SQLite para coletar informações sobre um sistema. Não tenho ideia de por que o Facebook escolheu esse caminho, mas funciona.
Este tutorial simples irá discutir os fundamentos do SQLite para explicar como você pode usá-lo para interagir com o Osquery.
NOTA: Isso não tem a intenção de ser um guia para SQL ou linguagens relacionadas. Para obter mais guias específicos de idioma, consulte a documentação principal.
Seleção de entradas específicas de uma tabela
Usando a sintaxe SQLite básica, podemos selecionar informações específicas de uma tabela usando a instrução SELECT, conforme mostrado:
SELECT pid, nome, caminho de processos;Adicionar funções SQL
Osquery também suporta funções SQL, permitindo que você execute várias ações com os dados coletados das consultas.
Por exemplo, a função de contagem pode permitir que você visualize o número de usuários em seu sistema.
SELECT COUNT (*) FROM users;Este comando retornará o número total de usuários no sistema.
A capacidade do Osquery de usar a sintaxe SQL é uma grande vantagem que pode ajudá-lo a construir conjuntos de dados complexos que podem fornecer uma análise mais aprofundada de um sistema. Ele também cria uma ponte que os desenvolvedores de SQL usando mecanismos como PostgreSQL, MySQL e outros podem usar para se adaptar com facilidade.
https: // osquery.readthedocs.io / en / estável / introdução / sql /
Um divertido projeto paralelo
Quando você explorar mais o Osquery e experimentá-lo, descobrirá que é uma ferramenta abrangente e poderosa que facilita a criação de projetos especificamente ajustados para monitorar seus sistemas.
Por causa do escopo deste tutorial, e para evitar confundir os iniciantes, não vamos nos aprofundar em projetos complexos. Dito isso, aqui estão algumas ferramentas que você pode construir usando o Osquery:
- Colete registros com Logstash
- Construir um painel de monitoramento do sistema com Elasticsearch, Logstash e Kibana.
- Construa a frota Osquery com Kolide
https: // osquery.readthedocs.io / en / stable / deployment / log-aggregation /
https: // www.elástico.co / guide / en / beats / filebeat / 7.10 / filebeat-module-osquery.html
https: // github.com / FleetDm / Fleet
Conclusão
Neste tutorial, vimos os fundamentos do Osquery, incluindo como usá-lo para coletar informações do sistema.
Embora não seja abrangente, este guia tem como objetivo fornecer uma introdução rápida e direta ao Osquery; de forma alguma era um guia de referência.
Sinta-se à vontade para usar outros recursos para obter uma compreensão mais profunda dos vários conceitos que discutimos neste tutorial.