Um dos princípios básicos da segurança do computador é nunca executar o que você não precisa.
Eu estava pgrep
de ping para um processo de hoje, quando notei que a minha 9,04 (desktop) máquina Ubuntu foi a execução de um daemon servidor git. Após um rápido juramento, descobri que o git-daemon-run
pacote havia sido (provavelmente inadvertidamente) instalado, e a remoção dele eliminou esse processo (e garantiu que não seria reiniciado mais tarde).
Mas em outros casos, quero que o pacote do servidor seja instalado, mas não quero que o daemon do servidor esteja em execução. Por exemplo, eu uso lighttpd
para testes internos (é iniciado por scripts de teste específicos para alguns aplicativos e escuta apenas no host local nessas configurações), mas não quero que ele escute conexões externas com algum arquivo de configuração aleatório. (Se eu quisesse executar uma escutando conexões externas, eu mesma a configuraria e executaria.)
Realmente não gosto de executar todos os tipos de servidores aleatórios de que não preciso em máquinas expostas à Internet, pois quem sabe que brechas de segurança eles abrem. E prefiro não ter que mexer com firewalls, já que essa é outra fonte potencial de erros e configurações incorretas que podem abrir brechas na segurança. Não é tão difícil ter máquinas Unix configuradas para não iniciar nenhum servidor, a menos que seja solicitado especificamente pelo administrador; O NetBSD (e o OpenBSD, também, acho) vem dessa maneira por padrão.
Como configuro meus sistemas Ubuntu para nunca iniciar qualquer tipo de daemon de servidor, a menos que eu diga especificamente que quero que ele seja iniciado?
(No meu livro, pedir para instalar um pacote não é pedir para iniciar um servidor. Se deveria ser, é uma péssima interface do usuário, pois muitas instalações de pacotes nem sequer têm um servidor para iniciar, por isso é muito fácil iniciar inadvertidamente um servidor sem perceber que você o fez.)
Edição: Apenas para deixar claro, o problema não é que eu quero poder parar os servidores existentes. O problema é que eu não quero que novos servidores sejam iniciados sem uma solicitação explícita. Isso significa que eu devo ser capaz de executar qualquer tarefa sysadmin, como instalar um pacote, e ter certeza de que nenhum servidor foi iniciado. A maioria das respostas não aborda esse ponto.
Respostas:
Instale o sysv-rc-conf e simplesmente desative os serviços que você não deseja executar.
fonte
Como alguém com um problema semelhante, eu me sinto muito fortemente que é não razoável para um daemon presumir que o usuário quer que começou por padrão: Há muitos casos de uso perfeitamente válidos onde este não é o caso. (Sem mencionar que nem sempre é claro quais instalações realmente incluem um daemon.) O daemon pode estar desativado por padrão, o usuário pode ser explicitamente consultado ou pode haver uma configuração central. Qualquer outra coisa é o raciocínio da Microsoft totalmente indigno do Linux.
Além disso, acho que vários dos comentários acima ao pôster original são rudes, condescendentes e sem construtividade. Sugerir, por exemplo, que ele aceite o comportamento padrão ou altere a distribuição é realmente notável. Em primeiro lugar, nenhuma distribuição será perfeita, e é improvável que saltar para uma nova distribuição com trabalho extra associado seja uma solução realista sobre essa única coisa. Em segundo lugar, usuários proficientes de Linux / Unix são usados para todos os comportamentos serem alteráveis: um problema pode demorar duas horas após a escavação, mas é corrigido. A coisa natural para esse usuário, quando os padrões são inadequados, é assumir a existência de uma solução alternativa e tentar descobrir o que é. Em terceiro lugar, na etiqueta do código-fonte aberto e do software livre,
If you don't like it, then patch the source code!'' is an acceptable response; however,
..., então faça uma caminhada! '' Não é.fonte
A expectativa do sistema de empacotamento é que, quando você instala um pacote de servidores, deseja executar esse servidor. É uma expectativa razoável.
Roy respondeu a esta pergunta para você. Ao instalar um novo pacote de servidores, você para o servidor e, em seguida, usa uma ferramenta como sysv-rc-conf para impedir que o servidor seja iniciado na próxima reinicialização ou alteração no nível de execução. Sim, você precisa trabalhar um pouco, e isso é razoável, porque você está configurando seu sistema de maneira diferente para a maioria das pessoas que usam o Ubuntu.
Você deve investir algum tempo para aprender como configurar o lighttpd para que ele seja configurado permanentemente para ouvir apenas no host local. Então, quando você inicia o servidor, sabe que ele já está configurado ao seu gosto.
fonte
Achei o seguinte útil para instalar o Ubuntu em ambientes chroot, como desbootar novos convidados xen. Na verdade, o crédito vai para os scripts xen-tools por me ensinar isso:
echo '#! / bin / sh'> /usr/sbin/policy-rc.d
echo 'exit 101' >> /usr/sbin/policy-rc.d
chmod 755 /usr/sbin/policy-rc.d
Com esse script, o apt não iniciará os serviços após a instalação. No entanto, isso é apenas metade do seu problema, porque os links simbólicos ainda são criados, os serviços serão iniciados após a próxima inicialização. Não sei como parar automaticamente isso :(
fonte
invoke-rc.d nginx rotate
na seção postrotate Eu estou usando a versão que é ligeiramente diferente gist.github.com/hostmaster/7c25ef4e1e47bc3e2d71Barry Brown, em um comentário sobre a pergunta, fornece uma pista para uma possível resposta.
O sistema de empacotamento usa o
invoke-rc.d
programa para iniciar o servidor após a instalação do pacote. [1] Este programa será executado/usr/sbin/policy-rc.d
para determinar a política de inicialização desse servidor.O pacote
policyrcd-script-zg2
inclui opolicy-rc.d
script, que é executado/etc/policy-rc.d
com seus parâmetros, se presente, e sai com o código de erro desse script ou com 0 (êxito), caso contrário. A interface quepolicy-rc.d
se espera oferecer é documentada brevemente noinvoke-rc.d
gerenciamento, e muito mais extensivamente no/usr/share/doc/sysv-rc/README.policy-rc.d.gz
.O próximo passo, suponho, é para eu testar isso.
Itens restantes a serem respondidos:
[1] Que outras partes do sistema usam
invoke-rc.d
? [2] Isso realmente funciona?fonte
Que tal assistir nos diretórios em que os scripts init estão localizados? Você provavelmente pode tornar esses diretórios inalteráveis com o comando chatr.
fonte
Idealmente, isso é uma questão de
post-inst
scripts. No início do projeto Ubuntu, foi feito um esforço intencional para forçar padrões sãos aos scripts de configuração do dpkg, para que você e eu não tenhamos que responder a todas as malditas perguntas que possam surgir ou perder tempo pesquisando as opções. Agora que o Ubuntu configurou isso, muitas pessoas não sabem que ele existe. Deve ser possível fazer uma pergunta sobre a instalação ou não de um daemon, mas não vejo essas perguntas nos poucos pacotes que verifiquei.Talvez você deva se envolver com a Equipe do Servidor Ubuntu e talvez até com a Política Debian para melhorar as coisas.
fonte
Você pode tentar criar um script que verifique a lista de serviços instalados e verifique-os em alguma lista de serviços permitidos. Se o serviço não estiver na lista, o script o desativará. O script deve ser executado no início antes dos serviços comuns. E talvez execute como daemon para fechar serviços recém-instalados. Ou, se possível, seja executado automaticamente após cada instalação para verificar novos serviços.
PS: Posso pensar em duas causas possíveis de início dos serviços após a instalação do pacote. Esse é o recurso do pacote ou o recurso do gerenciador de pacotes. Se esse for o recurso do pacote, não acho que haja alguma maneira de alterar o comportamento do serviço. Se esse for o recurso do gerenciador de pacotes, talvez haja alguma opção de configuração para impedir o início do serviço após a instalação. Eu não sei agora, apenas jogando idéias.
fonte
Se você configurar o iptables com uma política padrão de DROP para a cadeia INPUT, não precisará se preocupar tanto com as portas de atendimento porque elas serão bloqueadas pelo iptables. O servidor Ubuntu vem com uma interface amigável para o iptables, se você é novo no iptables.
Do seu post, parece-me que você pode estar mais feliz com uma distribuição Linux diferente, como o CentOS. O processo de instalação padrão do CentOS permitirá que você instale diferentes meta-pacotes e, ao selecionar nenhum, você poderá ficar mais feliz com a instalação básica.
Além disso, acho que sua pergunta pode ter sido um pouco mais clara se você substituir 'serviço' ou 'daemon' pela palavra 'servidor' quando se refere a algo que é executado em um servidor. As pessoas tendem a usar 'servidor' para se referir a uma caixa física ou VM. Embora eu acho que não é tecnicamente incorreto.
fonte
Dê uma olhada em qual nível de execução você está com o comando 'runlevel' e remova todos os links simbólicos em / etc / rc
<
runlevel> .d /. Você provavelmente vai querer alguns daemons em execução, mas a maioria provavelmente pode ser removida.Você pode adicioná-los novamente com um link simbólico do script em /etc/init.d.
Eu acho que existe um comando que fará o mesmo truque e adicionará todos os links simbólicos para todos os níveis de execução, mas eu apenas o faço manualmente.
fonte
Como alternativa, você pode usar o
update-rc.d
comandoPara desativar o
apache2
serviçoEDITAR:
Esse comportamento é controlado por scripts dentro de pacotes .deb. Quando você instala um pacote, esse script é executado automaticamente. IIRC, não podemos ignorar este script.
fonte
Basicamente, você não pode.
Se você instalar um pacote e ele iniciar um serviço, é isso que acontece. Se você não gostar, registre um bug em https://launchpad.net/ .
Você não deve mexer com os pacotes deb. Esse tipo de coisa pode voltar e morder sua bunda mais tarde.
Se você quiser 'nada rodando por padrão' no estilo OpenBSD, execute o OpenBSD. Nem toda distribuição combina com todos. É provável que existam coisas no Ubuntu que você não gosta. Se você ainda deseja executar o ubuntu, precisará verificar os serviços em execução e desativar as coisas.
fonte
Você pode ativar e desativar alguns serviços no menu Sistema> Serviços no GNOME
fonte