L'un des principes de base de la sécurité informatique est de ne jamais exécuter ce dont vous n'avez pas besoin.
Je pgrep
cherchais un processus aujourd'hui lorsque j'ai remarqué que ma machine Ubuntu 9.04 (bureau) exécutait un démon de serveur git. Après un bref juron, j'ai découvert que le git-daemon-run
paquet avait été (probablement par inadvertance) installé, et le retirer s'est débarrassé de ce processus (et s'est assuré qu'il ne serait pas redémarré plus tard).
Mais dans d'autres cas, je veux que le paquetage serveur soit installé, mais je ne veux pas que le démon serveur fonctionne. Par exemple, j'utilise lighttpd
pour les tests internes (il est démarré 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 les connexions externes avec un fichier de configuration aléatoire. (Si je voulais exécuter une écoute pour les connexions externes, je la configurerais et l'exécuterais moi-même.)
Je n'aime vraiment pas exécuter toutes sortes de serveurs aléatoires dont je n'ai pas besoin sur les machines exposées à Internet, car qui sait quels trous de sécurité ils ouvrent. Et je préfère ne pas avoir à me soucier des pare-feu, car c'est encore une autre source potentielle d'erreurs et de mauvaises configurations qui peuvent ouvrir des failles de sécurité. Ce n'est pas si difficile d'avoir des machines Unix configurées pour ne démarrer aucun serveur à moins que l'administrateur ne le demande spécifiquement; NetBSD (et OpenBSD aussi, je pense) se présente de cette façon par défaut.
Comment configurer mes systèmes Ubuntu pour ne jamais démarrer aucun type de démon de serveur à moins que je ne lui dise spécifiquement que je veux qu'il démarre?
(Demander d'avoir un paquet installé n'est pas, dans mon livre, demander de démarrer un serveur. S'il est censé l'être, c'est une interface utilisateur terrible, car de nombreuses installations de paquet n'ont même pas de serveur pour démarrer, donc cela fait il est beaucoup trop facile de démarrer un serveur par inadvertance sans réaliser que vous l'avez fait.)
EDIT: Juste pour être clair, le problème n'est pas que je veux pouvoir arrêter les serveurs existants. Le problème est que je ne veux pas que de nouveaux serveurs démarrent sans demande explicite. Cela signifie que je devrais être en mesure d'effectuer n'importe quelle tâche d'administrateur système, telle que l'installation d'un package, et être sûr qu'aucun serveur n'a démarré. La plupart des réponses n'abordent pas ce point.
Réponses:
Installez sysv-rc-conf et désactivez simplement les services que vous ne souhaitez pas exécuter.
la source
En tant que personne ayant un problème similaire, je pense très fortement qu'il n'est pas raisonnable pour un démon de présumer que l'utilisateur veut qu'il démarre par défaut: il existe de nombreux cas d'utilisation parfaitement valides où ce n'est pas le cas. (Sans compter qu'il n'est pas toujours clair quelles installations incluent réellement un démon.) Le démon peut être désactivé par défaut, l'utilisateur peut être explicitement interrogé ou il peut y avoir un paramètre central. Tout le reste est un raisonnement Microsoftian totalement indigne de Linux.
De plus, je trouve que plusieurs des commentaires ci-dessus sur l'affiche originale sont impolis, condescendants et manquent de constructivité. Suggérer, par exemple, qu'il devrait accepter le comportement par défaut ou modifier la distribution est vraiment remarquable. Premièrement, aucune distribution ne sera un ajustement parfait, et passer à une nouvelle distribution avec du travail supplémentaire associé est peu susceptible d'être une solution réaliste par rapport à cette seule chose. Deuxièmement, les utilisateurs expérimentés de Linux / Unix sont habitués à ce que chaque comportement soit modifiable: un problème peut prendre deux heures avant de creuser, mais il est ensuite résolu. La chose naturelle à faire pour un tel utilisateur, lorsque les valeurs par défaut ne conviennent pas, est de supposer l'existence d'une solution de contournement et d'essayer de savoir de quoi il s'agit. Troisièmement, dans l'étiquette des logiciels libres et open source,
If you don't like it, then patch the source code!'' is an acceptable response; however,
..., alors faites une randonnée! '' Ne l'est pas.la source
L'attente du système de conditionnement est que lorsque vous installez un package de serveur, vous souhaitez exécuter ce serveur. C'est une attente raisonnable.
Roy a répondu à cette question pour vous. Lorsque vous installez un nouveau package de serveur, vous arrêtez ce serveur, puis utilisez un outil tel que sysv-rc-conf pour empêcher le démarrage de ce serveur au prochain redémarrage ou changement de niveau d'exécution. Oui, vous devez travailler vous-même, et c'est raisonnable car vous configurez votre système différemment de la plupart des gens qui utilisent Ubuntu.
Vous devriez investir un peu de temps pour apprendre à configurer lighttpd afin qu'il soit configuré en permanence pour écouter uniquement sur localhost. Ensuite, lorsque vous démarrez le serveur, vous savez qu'il est déjà configuré à votre convenance.
la source
J'ai trouvé ce qui suit utile pour installer Ubuntu dans des environnements chroot, comme le debootstrapping de nouveaux invités xen. Le mérite revient aux scripts xen-tools pour m'avoir enseigné 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 toujours en place, les services démarreront après le prochain démarrage. Je ne sais pas comment arrêter cela automatiquement :(
la source
invoke-rc.d nginx rotate
dans la section postrotate J'utilise une version qui est légèrement différente gist.github.com/hostmaster/7c25ef4e1e47bc3e2d71Barry Brown, dans un commentaire sur la question, fournit un indice pour une réponse possible.
Le système de packaging utilise le
invoke-rc.d
programme pour démarrer le serveur après l'installation du package. [1] Ce programme s'exécutera/usr/sbin/policy-rc.d
pour déterminer la stratégie de démarrage de ce serveur.Le package
policyrcd-script-zg2
inclut lepolicy-rc.d
script, qui s'exécute/etc/policy-rc.d
avec ses paramètres s'il est présent, et se termine avec le code d'erreur de ce script, ou se termine avec 0 (succès) sinon. L'interfacepolicy-rc.d
devrait offrir est brièvement documentée dans lainvoke-rc.d
gestion, et beaucoup plus en détail dans/usr/share/doc/sysv-rc/README.policy-rc.d.gz
.La prochaine étape, je suppose, consiste pour moi à tester cela.
Reste à répondre:
[1] Quelles autres parties du système utilisent
invoke-rc.d
? [2] Est-ce que cela fonctionne réellement?la source
Que diriez-vous de regarder sur les répertoires où se trouvent les scripts d'initialisation? Vous pouvez probablement rendre ces répertoires non modifiables avec la commande chatr.
la source
Idéalement, c'est une question de
post-inst
scripts. Au début du projet Ubuntu, un effort intentionnel a été fait pour forcer les valeurs par défaut saines aux scripts de configuration de dpkg, afin que vous et moi n'ayons pas à répondre à toutes les fichues questions qui pourraient surgir, ou perdre du temps à rechercher les options. Maintenant qu'Ubuntu a configuré cela, beaucoup de gens ne savent pas qu'il existe. Il devrait être possible de poser une question sur l'installation ou non en tant que démon, mais je ne vois pas de telles questions dans les quelques packages que j'ai vérifiés.Peut-être devriez-vous vous engager avec l'équipe du serveur Ubuntu et peut-être même la politique Debian pour améliorer les choses.
la source
Vous pouvez essayer de créer un script qui vérifiera la liste des services installés et les comparera à une liste de services autorisés. Si le service ne figure pas dans la liste, le script le désactivera. Le script doit être exécuté au démarrage avant les services communs. Et peut-être exécuté comme un démon pour fermer les services fraîchement installés. Ou si possible de s'exécuter automatiquement après chaque installation pour rechercher de nouveaux services.
PS Je peux penser à deux causes possibles de démarrage des services après l'installation du package. C'est la fonction de package ou la fonction de gestionnaire de packages. Si c'est une fonctionnalité de package, je ne pense pas qu'il existe un moyen de changer le comportement du service. S'il s'agit d'une fonction de gestionnaire de packages, il existe peut-être une option de configuration pour empêcher le démarrage du service après l'installation. Je ne sais pas pour le moment, alors lancez simplement des idées.
la source
Si vous configurez iptables avec une politique par défaut DROP pour la chaîne INPUT, vous n'avez pas à vous soucier autant des ports d'écoute car ils seront bloqués par iptables. Le serveur Ubuntu est livré avec une interface conviviale pour iptables si vous êtes nouveau sur iptables.
D'après votre message, il me semble que vous pourriez être plus heureux avec une distribution Linux différente telle que CentOS. Le processus d'installation par défaut de CentOS vous permettra d'installer différents méta-packages, et en n'en sélectionnant aucun, vous pourriez être plus satisfait de votre installation de base.
En outre, je pense que votre question aurait pu être un peu plus claire si vous remplacez «service» ou «démon» par le mot «serveur» lorsque vous voulez dire quelque chose qui s'exécute sur un serveur. Les gens ont tendance à utiliser «serveur» pour faire référence à une boîte physique ou à une machine virtuelle. Bien que je suppose que ce n'est pas techniquement incorrect.
la source
Jetez un œil au niveau d'exécution dans lequel vous vous trouvez avec la commande 'runlevel' et supprimez tous les liens symboliques dans / etc / rc
<
runlevel> .d /. Vous voudrez probablement que certains démons soient exécutés, mais la plupart pourraient probablement être supprimés.Vous pouvez les ajouter à nouveau avec un lien symbolique à partir du script dans /etc/init.d.
Je pense qu'il y a une commande qui fera la même astuce et ajoutera tous les liens symboliques pour tous les niveaux d'exécution, mais je le fais juste manuellement.
la source
Alternativement, vous pouvez utiliser la
update-rc.d
commande.Pour désactiver le
apache2
serviceÉDITER:
Ce comportement est contrôlé par des scripts à l'intérieur des packages .deb. Lorsque vous installez un package, ce script est exécuté automatiquement. IIRC, nous ne pouvons pas contourner ce script.
la source
Fondamentalement, vous ne pouvez pas.
Si vous installez un package et qu'il démarre un service, c'est ce qui se produit. Si vous n'aimez pas, signalez un bug sur https://launchpad.net/ .
Vous ne devriez pas tourner autour des paquets deb. Ce genre de chose pourrait revenir et te mordre dans le cul plus tard.
Si vous voulez que «rien ne fonctionne par défaut» de style OpenBSD, exécutez OpenBSD. Toutes les distributions ne conviennent pas à tout le monde. Il y a forcément des choses dans Ubuntu que vous n'aimez pas. Si vous souhaitez toujours exécuter ubuntu, vous devrez vérifier les services en cours d'exécution et désactiver les choses.
la source
Vous pouvez activer et désactiver certains services dans le menu Système> Services de GNOME
la source