Comment puis-je arrêter Ubuntu de démarrer des démons que je n'ai pas demandé explicitement de courir?

L'un des principes de base de la security informatique est de ne jamais exécuter tout ce dont vous n'avez pas besoin.

J'ai été pgrep ping pour un process aujourd'hui quand j'ai remarqué que ma machine Ubuntu 9.04 (desktop) exécutait un démon de server git. Après un jargon rapide, j'ai découvert que le package git-daemon-run avait été (probablement par inadvertance) installé, et l'enlevant s'est débarrassé de ce process (et a assuré qu'il ne serait pas redémarré plus tard).

Mais dans d'autres cas, je souhaite que le package server soit installé, mais ne veut pas que le démon server s'exécute. Par exemple, j'utilise lighttpd pour les tests internes (il commence par des scripts de test spécifiques pour certaines applications et n'écoute que sur localhost dans ces configurations), mais je ne veux pas qu'il écoute des connections externes avec un file de configuration random. (Si je voulais exécuter une écoute pour les connections extérieures, je le configurerais et l'exécuterais moi-même.)

Je n'aime vraiment pas courir toutes sortes de servers randoms dont je n'ai pas besoin sur les machines exposées à Internet, car qui sait quels trous de security ils s'ouvrent. Et je préfère ne pas avoir à écraser les pare-feux, car c'est encore une autre source potentielle d'erreurs et de mauvaises configurations qui peuvent ouvrir des trous de security. Il n'est pas si difficile de configurer les machines Unix pour ne pas démarrer de servers, à less que l'administrateur n'en request expressément; NetBSD (et OpenBSD, aussi, je pense) se présentent par défaut.

Comment configurer mes systèmes Ubuntu pour ne jamais démarrer un type de démon de server à less que je ne le dise spécifiquement, je le souhaite?

(Le fait d'avoir un package installé n'est pas, dans mon livre, demandé de démarrer un server. Si cela est censé être, c'est une interface user terrible, car de nombreuses installations de packageage n'ont même pas de server à démarrer, donc ça fait il est trop facile de démarrer par inadvertance un server sans se rendre count que vous l'avez fait.)

EDIT: Juste pour le préciser, le problème n'est pas que je veuille pouvoir arrêter les servers existants. Le problème est que je ne veux pas de nouveaux servers démarrés sans request explicite. Cela signifie que je devrais pouvoir effectuer n'importe quelle tâche sysadmin, comme l'installation d'un package, et je suis convaincu qu'aucun server n'a démarré. La plupart des réponses ne traitent pas de ce point.

13 Solutions collect form web for “Comment puis-je arrêter Ubuntu de démarrer des démons que je n'ai pas demandé explicitement de courir?”

Installez sysv-rc-conf et éteignez simplement les services que vous ne souhaitez pas avoir en cours d'exécution.

sudo apt-get install sysv-rc-conf
DESCRIPTION: sysv-rc-conf offre une interface facile à utiliser pour la gestion des liens symboliques "/etc/rc{runlevel}.d/".

alt text

Comme quelqu'un avec un problème similaire, je suis très convaincu qu'il n'est pas raisonnable pour un démon de présumer que l'user veut qu'il soit mis en défaut par défaut: il existe de nombreux cas d'utilisation parfaitement valides où ce n'est pas le cas. (Sans oublier qu'il n'est pas toujours clair quelles installations incluent réellement un démon.) Le démon pourrait être désactivé par défaut, l'user pourrait être interrogé explicitement, ou il pourrait y avoir un paramètre central. Autre chose, le raisonnement Microsoftian est tout à fait indigne de Linux.

En outre, je trouve que plusieurs des commentaires ci-dessus à l'affiche originale sont grossiers, condescendants et peu constructifs. Suggérer, par exemple, qu'il soit accepter le comportement par défaut ou modifier la dissortingbution est vraiment remarquable. Tout d'abord, aucune dissortingbution ne sera parfaite, et saut à une nouvelle dissortingbution avec un travail complémentaire associé est peu probable d'être une solution réalist sur cette seule chose. Deuxièmement, les users Linux / Unix compétents sont utilisés pour que tous les comportements soient modifiables: un problème peut prendre deux heures de creusement, mais il est résolu. La chose naturelle pour un tel user de faire, lorsque les défauts sont inadéquats, est d'assumer l'existence d'un travail et d'essayer de savoir ce qu'il est. Troisièmement, dans l'label de code source libre et libre, If you don't like it, then patch the source code!'' is an acceptable response; however, If you don't like it, then patch the source code!'' is an acceptable response; however, …, alors faites une randonnée! '' n'est pas.

L'attente du système d'emballage est que lorsque vous installez un package de server, vous souhaitez exécuter ce server. C'est une attente raisonnable.

 Comment configurer mes systèmes Ubuntu pour ne jamais démarrer aucun type de server à less que je 
 Dites-le spécifiquement à je veux qu'un server démarre? 

Roy a répondu à cette question pour vous. Lorsque vous installez un nouveau package de servers, vous arrêtez ce server, puis utilisez un outil tel que sysv-rc-conf pour empêcher ce server de démarrer au prochain redémarrage ou au changement de niveau d'exécution. Oui, vous devez faire du travail vous-même, et c'est raisonnable car vous configurez votre système différemment pour la plupart des personnes qui utilisent Ubuntu.

 Par exemple, j'utilise lighttpd pour les tests internes (il commence par des scripts de test spécifiques 
 pour certaines applications, et n'écoute que sur localhost) mais je ne le veux généralement pas 
 en écoutant les connections extérieures.

Vous devriez investir un peu de time pour apprendre à configurer lighttpd afin qu'il soit configuré en permanence pour écouter uniquement sur localhost. Ensuite, lorsque vous démarrez le server, vous savez qu'il est déjà configuré à votre convenance.

J'ai trouvé le suivant utile pour installer Ubuntu dans des environnements chroot, comme débootstraper les nouveaux clients xen. Le crédit passe en fait aux scripts xen-tools pour m'enseigner ceci:

echo '#! / bin / sh'> /usr/sbin/policy-rc.d

echo 'exit 101' >> /usr/sbin/policy-rc.d

chmod 755 /usr/sbin/policy-rc.d

Avec ce script en place, apt ne démarrera pas les services après l'installation. Cependant, ce n'est que la moitié de votre problème, car les liens symboliques sont encore mis en place, les services commenceront après le prochain démarrage. Je ne sais pas comment arrêter automatiquement cela 🙁

Barry Brown, dans un commentaire sur la question, donne un indice à une réponse possible.

Le système d'emballage utilise le programme invoke-rc.d pour démarrer le server après l'installation du package. [1] Ce programme exécutera /usr/sbin/policy-rc.d pour déterminer la stratégie de démarrage de ce server.

Le package policyrcd-script-zg2 inclut le script policy-rc.d , qui exécute /etc/policy-rc.d avec ses parameters si présent, et sort avec le code d'erreur de ce script ou sort avec 0 (succès) autrement. La policy-rc.d interface policy-rc.d devrait offrir est documentée brièvement dans la gestion invoke-rc.d , et beaucoup plus largement dans /usr/share/doc/sysv-rc/README.policy-rc.d.gz .

La prochaine étape, je suppose, c'est pour moi de tester cela.

Les choses restnt à répondre:

[1] Quelles autres parties du système utilisent invoke-rc.d ? [2] Cela fonctionne-t-il réellement?

Que diriez-vous de regarder les directorys où se trouvent les scripts d'initialisation? Vous pouvez probablement rendre ces directorys non modifiables avec la command chatr.

Idéalement, il s'agit de scripts post-inst . Au début du projet Ubuntu, un effort intentionnel a été fait pour forcer les défauts sains aux scripts de configuration dpkg, afin que vous et moi ne devions pas répondre à toutes les questions difficiles qui pourraient surgir ou perdre du time à searchr les options. Maintenant que Ubuntu a mis en place, beaucoup de gens ne le savent pas. Il devrait être possible de poser une question sur l'installation ou non d'un démon, mais je ne vois pas ces questions dans les quelques packages que j'ai vérifiés.

Peut-être que vous devriez vous engager avec Ubuntu Server Team et peut-être même avec Debian Policy pour améliorer les choses.

Vous pouvez essayer de créer un script qui vérifiera la list des services installés et vérifiez-les contre une list de services autorisés. Si le service n'est pas dans la list, le script l'éteindra. Le script doit être exécuté au début avant les services communs. Et peut-être courir comme daemon pour fermer les services récemment installés. Ou, si possible, s'exécuter automatiquement après chaque installation pour vérifier les nouveaux services.

PS Je peux penser à deux causes possibles de démarrage des services après l'installation du package. C'est une fonctionnalité de package, ou c'est une fonctionnalité de gestionnaire de packageages. Si c'est une fonctionnalité de package, je ne pense pas qu'il existe un moyen de modifier le comportement du service. Si c'est la fonctionnalité du gestionnaire de packages, il y a peut-être une option de configuration pour empêcher le démarrage du service après l'installation. Je ne sais pas en ce moment, alors je jette des idées.

Si vous configurez iptables avec une politique par défaut de DROP pour la string INPUT, vous ne devez pas vous inquiéter autant sur les ports d'écoute car ils seront bloqués par iptables. Le server Ubuntu est livré avec une interface conviviale pour iptables si vous êtes nouveau sur iptables.

De votre publication, il me semble que vous pourriez être plus heureux avec une dissortingbution Linux différente telle que CentOS. Le process d'installation par défaut pour CentOS vous permettra d'installer différents méta-packages, et en sélectionnant aucun, vous pourriez être plus heureux avec votre installation de base.

En outre, je pense que vous avez peut-être été un peu plus clair si vous substituez «service» ou «daemon» au mot «server» lorsque vous voulez dire quelque chose qui fonctionne sur un server. Les gens ont tendance à utiliser «server» pour se référer à une boîte physique ou une machine virtuelle. Bien que je suppose qu'il n'est pas techniquement incorrect.

Regardez ce que vous exécutez avec la command 'runlevel' et supprimez tous les liens symboliques dans / etc / rc < runlevel> .d /. Vous voudrez probablement que certains des démons soient exécutés, mais la plupart pourraient probablement être supprimés.

Vous pouvez les append à un lien symbolique à partir du script dans /etc/init.d.

Je pense qu'il y a une command qui fera ce même tour, et appenda tous les liens symboliques pour tous les niveaux d'exécution, mais je le fais simplement manuellement.

Alternativement, vous pouvez utiliser la command update-rc.d .

Pour désactiver le service apache2

# update-rc.d [-f] apache2 remove

MODIFIER:

Cela signifie que je devrais pouvoir effectuer n'importe quelle tâche sysadmin, comme l'installation d'un package, et je suis convaincu qu'aucun server n'a démarré.

Ce comportement est contrôlé par des scripts dans les packages .deb. Lorsque vous installez un package, ce script est exécuté automatiquement. IIRC, nous ne pouvons pas contourner ce script.

Fondamentalement, vous ne pouvez pas.

Si vous installez un package et qu'il démarre un service, c'est ce qui se passe. Si vous n'aimez pas, déposez un bug à l' adresse https://launchpad.net/ .

Vous ne devriez pas contourner avec les packages deb. Ce genre de chose pourrait revenir et vous mordre dans l'âne plus tard.

Si vous voulez que OpenBSD-style 'rien en cours d'exécution par défaut', exécutez OpenBSD. Les combinaisons de distro ne correspondent pas à chacun. Il est nécessaire d'être des choses dans Ubuntu que vous n'aimiez pas. Si vous souhaitez toujours exécuter Ubuntu, vous devrez vérifier les services en cours d'exécution et éteindre les choses.

Vous pouvez activer et désactiver certains services dans Système> Menu Services dans GNOME

  • Pourquoi est-ce que je vois des packages abandonnés dans les statistics NIC sur mon server Ubuntu?
  • Exécution d'un server EC2 sur Ubuntu avec 2 interfaces réseau simultanées
  • L'identification de l'hôte à distance a changé
  • Redirection du site, vraiment étrange
  • fail2ban ne fonctionne pas sur une nouvelle installation d'ubuntu 14.04, pourquoi?
  • Comment se connecter automatiquement à Ubuntu sur le service EC2 d'Amazon?
  • Ubuntu / KVM Bridge Interface IP Affectation
  • Configuration d'environnement de développement web avec une VM (ssh + test de browser)
  • Configuration de Sendmail - Domaines locaux
  • Limite / accélération par user Largeur de bande OpenVPN à l'aide de TC
  • Ubuntu: partage / téléchargement de files téléchargés par différents users de sftp
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de réseau.