Use SQL e osquery para interrogar seu hardware no Linux

Você sempre se esquece da sintaxe para comandos de hardware obscuros que você quase não usa? O aplicativo osquery permite que você interrogue o hardware, os usuários e o desempenho do seu computador Linux com comandos SQL padrão.
O aplicativo osquery
O aplicativo osquery é um programa gratuito e de código aberto da osquery Foundation. Ele reúne uma enorme quantidade de informações sobre o seu computador Linux e o torna acessível como um pseudo-banco de dados. O banco de dados contém muitas tabelas contendo diferentes categorias de informações. Os dados nas tabelas podem ser recuperados usando comandos de linguagem de consulta estruturada simples (SQL).
o osquery pode ser usado interativamente ou pode ser controlado através de um arquivo de configuração e executado como um daemon. Executá-lo como um daemon permite que você agende consultas. osquery é um aplicativo muito flexível e sofisticado. Ele contém muito mais do que pode ser abordado em um artigo introdutório. A documentação excelente é o primeiro lugar que você deve consultar se quiser investigar suas muitas outras opções.
Veremos como usar o osquery interativamente.
Instalando o osquery
A maioria das distribuições de Linux não inclui osquery em seus repositórios oficiais. Isso não representa um problema, podemos baixar os pacotes de instalação na página de downloads do osquery.
Para Ubuntu, baixe o arquivo “ . deb ” pacote. Provavelmente, ele será baixado em “ Downloads ” diretório. Mude o diretório para “ Downloads ” e use o comando dpkg para instalar o diretório “ . deb ” Arquivo. Substitua o nome do arquivo em nosso exemplo pelo nome daquele que você baixou.
Downloads de cd
sudo dpkg -i osquery_4.6.0-1. linux_amd64. deb

Para o Fedora, baixe o arquivo “ . rpm ” Arquivo. Localize o arquivo em seu disco rígido e use o rpmpackage para instalá-lo. Estamos usando o -U (opção de atualização. Isso instala um aplicativo se ainda não estiver instalado em seu sistema e o atualiza se estiver.
sudo rpm -U osquery-4.6.0-1. linux.x86_64. rpm

No Manjaro, osquery está nos repositórios padrão. podemos instalá-lo usando o pacman.
sudo pacman -Sy osquery

Você pode testar se o osquery foi instalado corretamente — e descobrir a versão que você &’ está usando — iniciando o osquery com a opção --version. Observe que há um “ i ” no final do comando. É “ osqueryi ” não “ osquery. ” O “ i ” significa interativo.
osqueryi - versão

O osquery Interactive Shell
Para iniciar o osquery no modo interativo, use o comando osqueryi.
osqueryi

Um shell interativo osquery é iniciado e um “ osquery > ” aparece o prompt.
Aqui é onde você digitará os comandos SQL e ponto. Comandos de ponto são comandos que você emite para interagir com o shell osquery. Com uma ou duas exceções, os comandos de ponto não retornam informações sobre o seu computador. Eles obtêm o nome do ponto ou ponto final “. ” que aparece no início de todos os comandos de ponto.
Você pode usar a “ seta para cima ” para percorrer os comandos usados anteriormente e o preenchimento de tabulação está disponível para nomes de tabelas.
Para obter uma lista dos comandos de ponto e uma descrição rápida de cada um, use o comando . help na página “ osquery > ” pronto.
. help

Para fechar a sessão osquery, você pode usar . exit ou . quit.
. quit

Usando comandos SQL
o osquery apresenta as informações do sistema que ele pode relatar como tabelas em um banco de dados. Para poder interrogar esse banco de dados, você precisa saber os nomes das tabelas e os campos que cada uma contém. O comando . tables listará as tabelas para você.
. tables

Existem muitas tabelas. Você pode rolar para frente e para trás na lista e procurar os que lhe interessam. Digamos que queremos saber mais sobre a tabela de tempo de atividade. O comando . schema listará os nomes dos campos de uma tabela e o tipo de dados que cada campo contém.
. tempo de atividade do esquema

Agora sabemos o suficiente para poder emitir nossa primeira instrução SQL. Selecionaremos os dados das colunas de dias, horas e minutos da tabela de tempo de atividade. Lembre-se de que isso é SQL, então use ponto-e-vírgula “; ” para encerrar seu comando.
selecione dias, horas e minutos a partir do tempo de atividade;

Se quisermos ver todas as colunas, podemos usar um asterisco “ * ” como um atalho que representa todos os nomes das colunas. Mas existe um comando de ponto que é ainda mais rápido. Digite . all seguido pelo nome da tabela para obter o mesmo resultado. (Lembre-se de que não há ponto-e-vírgula “; ” no final dos comandos dot.)
selecione * do tempo de atividade;
. todo tempo de atividade

Selecionando dados de tabelas
A tabela de usuários
Para ver uma lista de todos os nomes de usuário, podemos consultar a tabela de usuários.
selecione o nome de usuário dos usuários;

Você pode classificar os dados por qualquer coluna nos resultados. Neste exemplo, temos apenas uma única coluna, mas ainda podemos classificar os dados.
selecione o nome de usuário a partir de ordem de usuários por nome de usuário;

Se quisermos ver um subconjunto dos nomes de usuário — aqueles de um comprimento específico, talvez — possamos adicionar mais cláusulas à nossa instrução SQL.
selecionar nome de usuário, diretório de usuários onde comprimento (nome de usuário) = 4 ordenar por nome de usuário;

Talvez estejamos apenas interessados em um único nome de usuário.
selecione nome de usuário, diretório, shell de usuários onde nome de usuário = "mary";

Tabela de processos
Podemos aplicar os mesmos princípios aos dados de qualquer tabela. Se quisermos descobrir os detalhes de um processo gedit, podemos pesquisá-lo assim:
selecione pid, nome, estado, hora_de_início dos processos em que nome = "gedit";

O “ S ” na coluna de estado significa sono interrompível.
Tabela logging_in_users
Em vez de olhar para a lista de usuários configurados como fizemos antes, talvez estejamos mais interessados nos usuários que estão conectados no momento.
selecionar usuário, host, hora dos usuários registrados;

Para excluir usuários não humanos, use o “ diferente de ” Cláusula SQL. A coluna tty contém os detalhes do usuário &’ s tty ou um til “ ~ ” se nenhum tty estiver em uso.
selecione o usuário, o host, o tempo dos usuários registrados em que tty não é como "~";

Podemos ver que o usuário com o nome de usuário “ dave ” está conectado duas vezes.
O “: 0 ” na coluna do host indica a tela e o teclado conectados ao computador. Portanto, esse usuário deve estar fisicamente no local. A outra sessão de login usando esse nome de usuário é de outro endereço IP.
Isso provavelmente precisa de investigação. Como eles podem acessar remotamente o computador se estiverem no prédio? Uma dessas sessões pode ser fraudulenta.
A tabela os_version
Para descobrir detalhes sobre a versão do Linux, consulte a tabela os_version.
selecionar nome, principal, secundário, codinome de os_version;

A Tabela interface_addresses
A tabela interface_addresses contém informações sobre suas interfaces de rede.
selecione interface, endereço de interface_addresses ordem por interface;

A tabela memory_info
A tabela memory_info contém informações sobre a quantidade de memória em seu computador e como ela está sendo usada.
selecionar memory_total, memory_free, cached from memory_info;

Os grupos Tabela
Para ver rapidamente os grupos configurados em seu sistema, use o comando . all dot na tabela de grupos.
. todos os grupos

Para ver os detalhes dos grupos associados a usuários, filtre os grupos com um ID de grupo maior ou igual a 1000.
selecione * dos grupos onde gid > = 1000;

A tabela usb_devices
Se um dispositivo de barramento serial universal não estiver sendo reconhecido, você pode verificar esta tabela para ver se o sistema operacional está detectando isso.
selecione usb_address, usb_port, version, model de usb_devices;

A tabela deb_packages
A tabela deb_packages contém detalhes de todos os arquivos “ . deb ” pacotes de software que foram instalados em seu computador. Também existe uma tabela rpm_packages para o Fedora e outros derivados do Red Hat. Outros sistemas de gerenciamento de pacotes não são relatados.
Existem muitos pacotes nesta máquina de teste. Os resultados foram limitados a 10 registros.
selecione o nome, versão, fonte do deb_packages com limite de 10;

A tabela system_info
Há muitas informações compactadas na tabela system_info. Vamos apenas verificar a marca da unidade central de processamento (CPU) que está instalada neste computador.
selecione cpu_brand em system_info;

Dica do iceberg
osquery coloca as informações de mais de 150 tabelas ao seu alcance. Mesmo que você não conheça muito SQL, descobrirá que é fácil dominar o pouco que precisa para fazer uso produtivo deste excelente aplicativo.
Nenhum comentário