Como eu poderia razoavelmente evitar a instalação de serviços de rede que eu não pedi?

1

Existem algumas recomendações sensatas que eu poderia ter esquecido, sobre como ficar atento ao Debian instalar serviços de rede silenciosamente quando eu não pedi por eles?

Estou usando distribuições baseadas no Debian, onde se você instalar um serviço de rede, ele será imediatamente ativado e iniciado. Especificamente, estou usando o Debian 9 (stretch) no momento.

É tão difícil lidar com isso que o openssh-server package adicionou um hook especial que impede que o servidor seja executado , mas quem fez isso não conseguiu convencer o resto do Debian a lidar com este problema de forma abrangente. Por exemplo,

  1. This issue has been discussed at debian-users. Sadly the race condition is not solved. A Debian maintainer suggests configuring policy-rc.d to block the invoke-rc.d ssh start call in the package postinstall. There are clunky details, but it is achievable. Unfortunately this is not really true; it doesn't prevent a race condition. policy-rc.d is not relevant to the update-rc.d ssh enable command which the package also runs. This would be exposed by a power failure or system crash at the wrong time.

O exemplo que provocou essa pergunta é icinga2 , que recomenda monitoring-plugins .

Por exemplo monitoring-plugins-standard é indiretamente recomendado por icinga-common-1.13.4-2 . Alternativamente, pode ser instalado deliberadamente, e. para check_dig . Em geral, a descrição diz "Este pacote fornece o conjunto de plugins com maior probabilidade de serem úteis em um host de monitoramento central".

Por sua vez, a instalação de monitoring-plugins-standard também é instalada e ativa rpcbind . Isto é, mesmo depois de eu acreditar que o Debian fez mudanças deliberadas para remover o serviço de rede rpcbind da instalação padrão , finalmente seguindo a liderança do Ubuntu lá.

Mesmo que você veja a lista de pacotes instalados como dependências, eu não diria que é óbvio que "rpcbind" é um serviço de rede adicional.

Eu também me pergunto se este caso específico deveria ser considerado um bug que poderia ser corrigido ... existe alguma coisa na Política Debian sobre esse tipo de dependência não óbvia em um pacote de serviço de rede?

# apt install monitoring-plugins                                                                          
Reading package lists... Done                                                                            
Building dependency tree                                                                                                         
Reading state information... Done                                                                                 
The following additional packages will be installed:                                                                             
  libnet-snmp-perl libradcli4 libtirpc1 monitoring-plugins-standard rpcbind                     
Suggested packages:                                                                                                              
  libcrypt-des-perl nagios-plugins-contrib qstat                                                
The following NEW packages will be installed:                                                                                    
  libnet-snmp-perl libradcli4 libtirpc1 monitoring-plugins monitoring-plugins-standard rpcbind  
0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.                                                                   
Need to get 432 kB of archives.                                                                 
After this operation, 1,901 kB of additional disk space will be used.                                                            
Do you want to continue? [Y/n]
...
# systemctl status rpcbind
● rpcbind.service - RPC bind portmap service
   Loaded: loaded (/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2018-05-04 20:44:39 BST; 49s ago
     Docs: man:rpcbind(8)
 Main PID: 20930 (rpcbind)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/rpcbind.service
           └─20930 /sbin/rpcbind -f -w

May 04 20:44:39 brick systemd[1]: Starting RPC bind portmap service...
May 04 20:44:39 brick systemd[1]: Started RPC bind portmap service.

Divulgação completa: monitoring-plugins-standard diz "Alguns scripts precisam de mais pacotes instalados para funcionar, o que é implementado como recomendado." E monitoring-plugins-basic diz "Este pacote fornece um conjunto básico de plugins com dependências externas mínimas".

    
por sourcejedi 04.05.2018 / 22:25

1 resposta

1

Eu configurei e usei para manter uma rede de centenas de servidores Debian (não grandes).

Eu usei uma VM de caixa de ativação, útil como você pode deixar para o dia deixando algo em execução ou configurar tarefas de manutenção automatizadas.

De lá, executei scripts automatizados e Ansible para mim, Rundeck para sysops.

rpcbind é especialmente pernicioso, reaparecendo em atualizações do sistema se a memória não falhar. Outro que aparece é a cabeça feia com frequência nas atualizações do kernel que é firmware-linux-free , o que não é necessário nas VMs do VMWare. Eu também fixei -1 alguns pacotes relacionados ao systemd, no entanto, em algumas atualizações de versão principais, até fixá-lo em -1 não impediu que ele tentasse reaparecer.

Eu usaria as políticas do Ansible para mantê-lo sob controle, não fixando o pacote rpcbind em -1.

No entanto, aposto que meu dinheiro, mesmo fixando em cada servidor, o rpcbind package para -1 não resolverá o problema. O Debian está ficando um pouco mais confuso com o passar do tempo. Eu poderia jurar que tentei, não tenho certeza.

Ter um jumpbox, acessível via VPN + ssh no meu caso, também foi útil quando precisei fazer algo urgentemente fora do trabalho ou algumas vezes pelo meu telefone. Curiosamente, mesmo uma vez em uma conferência de um dia da AWS, fiz uma pequena intervenção de emergência em meu telefone celular, situação que de outra forma exigiria que eu o deixasse.

Se você é strongmente contra uma caixa de salto, você sempre pode executar o script + Ansible a partir do seu laptop / computador de trabalho. O Ansible não requer agentes nas VMs do cliente.

Pergunta relacionada para outras pessoas que visitam: Linux equivalente ao remoting "one-to-many" do PowerShell

    
por 05.05.2018 / 04:21