
Prefácio
A nossa "amizade" começou há dois anos. Eu cheguei a um novo local de trabalho, onde o administrador anterior me deixou esta ferramenta como herança. Na internet, além da documentação oficial, não consegui encontrar mais nada. Mesmo agora, se você pesquisar por "rudder", em 99% das vezes aparecerão: volantes de navios e drones. Consegui encontrar a abordagem certa para isso. Como a comunidade deste software é insignificante, decidi compartilhar minha experiência e obstáculos. Acredito que isso pode ser útil para alguém.
Então, Rudder
Rudder é uma ferramenta de auditoria e gerenciamento de configuração de código aberto que ajuda a automatizar a configuração do sistema. Funciona com o princípio da instalação de um agente em cada usuário final. Através de uma interface conveniente, podemos observar o quanto nossa infraestrutura está em conformidade com todas as políticas definidas.
Uso
Abaixo listo para que uso o Rudder.
Controle de arquivos e configurações: ./ssh/authorized_keys; /etc/hosts; iptables; (e a partir daí, onde minha imaginação levar)
Controle de pacotes instalados: zabbix.agent ou qualquer outro software
Instalação do servidor
Recentemente, atualizei da versão 5 para 6.1, tudo correu bem. Abaixo estarão os comandos para Debian/Ubuntu, mas também há suporte para: e .
Vou esconder a instalação em spoilers, para não distrair você.
Spoiler
Dependências
Para rudder-server, é necessária a Java RE, versão mínima 8, que pode ser instalada a partir do repositório padrão:
Verificamos se ela está instalada
java -versionse a saída
-bash: java: comando não encontradoentão, instalamos
apt install default-jreServidor
Importamos a chave
wget --quiet -O- "https://repository.rudder.io/apt/rudder_apt_key.pub" | sudo apt-key add -Aqui está a própria impressão digital
pub 4096R/474A19E8 2011-12-15 Rudder Project (chave de liberação)
Impressão digital da chave = 7C16 9817 7904 212D D58C B4D1 9322 C330 474A 19E8Como não temos uma assinatura paga, adicionamos o seguinte repositório
echo "deb http://repository.rudder.io/apt/6.1/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/rudder.listAtualizamos a lista de repositórios e instalamos o servidor
apt update
apt install rudder-server-rootCriamos o usuário admin
rudder server create-user -u admin -p "Sua Senha"No futuro, podemos gerenciar os usuários através da configuração
Pronto, o servidor está configurado.
Configuração do servidor
Agora, é necessário adicionar ao agente Rudder os endereços IP dos agentes ou uma sub-rede inteira, orientando-se pela política de segurança.
Configurações —> Geral

No campo «Add a network» insira o endereço e a máscara no formato x.x.x.x/xx. Para permitir o acesso de todos os endereços da rede interna (se este for um ambiente de teste e você estiver atrás de um NAT), insira: 0.0.0.0/0
Importante — após adicionar o endereço IP, não se esqueça de clicar em Save changes, caso contrário, nada será salvo.
Portas
No servidor, abra as seguintes portas
443 — tcp
5309 — tcp
514 — udp
Já lidamos com a configuração inicial do servidor.
Instalação do Agente
Spoiler
Adicionamos a chave
wget --quiet -O- "https://repository.rudder.io/apt/rudder_apt_key.pub" | sudo apt-key add -Impressão digital da chave
pub 4096R/474A19E8 2011-12-15 Rudder Project (chave de liberação)
Impressão digital da chave = 7C16 9817 7904 212D D58C B4D1 9322 C330 474A 19E8Adicionamos o repositório
echo "deb http://repository.rudder.io/apt/6.1/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/rudder.listInstalamos o agente
apt update
apt install rudder-agentConfiguração do agente
Vamos indicar ao agente o endereço IP do servidor de políticas
rudder agent policy-server #Sem parênteses. Também é possível usar um nome de domínio Executando o seguinte comando, enviaremos um pedido para adicionar o novo agente ao servidor, em alguns minutos ele aparecerá na lista de novos agentes, como adicionar será explicado na próxima seção
rudder agent inventoryTambém podemos forçar a execução do agente e ele enviará a solicitação imediatamente
rudder agent runNosso agente está configurado, vamos em frente.
Adição de agentes
Fazemos login
https://127.0.0.1/rudder/index.html

Na seção «Accept new nodes» aparecerá seu agente, marque a caixa e clique em Accept

Deve passar algum tempo enquanto o sistema verifica se o servidor está em conformidade
Criação de grupos de servidores
Vamos criar um grupo (é um verdadeiro divertimento), não sei por que os desenvolvedores fizeram a formação de grupos tão complicada, mas como entendi, não há outra maneira. Vamos para a seção Node management -> Groups e clicamos em Create, escolhemos um grupo estático e damos um nome.

Filtramos o servidor necessário por características específicas, por exemplo, pelo endereço IP, e salvamos

O grupo está configurado.
Configuração de regras
Vamos para Configuration policy → Rules e criamos uma nova regra

Adicionamos o grupo que preparamos anteriormente (isso pode ser feito mais tarde)

E formamos uma nova diretiva

Vamos criar uma diretiva para adicionar chaves públicas em .ssh/authroized_keys. Eu uso isso em caso de saída de um novo funcionário, ou para precaução, por exemplo, se alguém deletar acidentalmente minha chave.
Vamos para Configuration policy → Directives e à esquerda vemos «Directive library» Encontramos «Remote access → SSH authorised keys», à direita clicamos em Create Directive
Inserimos os dados do usuário e adicionamos sua chave. Em seguida, escolhemos a política de aplicação
Global — Política definida por padrão
Enforce — Executar nos servidores escolhidos
Auditoria — Realizará uma auditoria e dirá em quais clientes há chave.

Devemos indicar a nossa regra.

Então salvamos e tudo está pronto.
Verificamos

Chave adicionada com sucesso
Vantagens
O agente fornece informações completas sobre o servidor. Listas de pacotes instalados, interfaces, portas abertas e muito mais, que você pode ver na captura de tela abaixo.

Além disso, você pode instalar e controlar o software não apenas no Linux, mas também no Windows; não verifiquei isso por não haver necessidade.
Do autor
Você deve estar se perguntando por que reinventar a roda se já existem o Ansible e o Puppet.
Respondo: O Ansible tem desvantagens, por exemplo, não sabemos em que estado está a configuração atualmente, ou a situação muito conhecida quando você executa uma role ou playbook e aparecem erros de falha, e você começa a acessar o servidor para ver quais pacotes foram atualizados. E eu simplesmente não trabalhei com Puppet.
Existem desvantagens no Rudder? Muitas... Desde o fato de que os agentes caem e é necessário reinstalá-los ou usar o comando rudder reset. (mas, a propósito, na versão 6, eu ainda não vi isso), até uma configuração extremamente complexa e uma interface ilógica.
E há vantagens? E também há muitas vantagens: Ao contrário do conhecido Ansible, temos uma interface web onde podemos ver a conformidade que aplicamos. Por exemplo, se as portas estão expostas para o mundo, em que estado está o firewall, se os agentes de segurança estão instalados ou outras coisas.
Esse software é excelente para o departamento de segurança da informação, pois o estado da infraestrutura estará sempre à vista, e se alguma regra ficar em vermelho, isso é um motivo para visitar o servidor. Como eu disse, já uso o Rudder há 2 anos, e se você se aprofundar um pouco, a vida fica melhor. O mais difícil em uma grande infraestrutura é que você não se lembra em que estado está o servidor, se o novato não perdeu a instalação dos agentes de segurança ou se configurou corretamente o iptables; o Rudder o ajudará a estar ciente de todos os eventos. Informado, significa armado! )
P.S. Acabou saindo muito mais do que eu planejava, não vou descrever como instalar pacotes; se houver pedidos, escreverei uma segunda parte.
P.S.S O artigo tem um caráter informativo, decidi compartilhar, pois há muito pouca informação na internet. Talvez isso interesse a alguém. Tenham um bom dia, queridos amigos )
Em nome da publicidade
Servidores épicos seja ou Windows com poderosos processadores da família AMD EPYC e discos NVMe Intel extremamente rápidos. Apresse-se para fazer o pedido!

Fonte: habr.com
