Eines der Grundprinzipien der Computersicherheit besteht darin, niemals etwas auszuführen, was Sie nicht benötigen.
Ich pgrep
habe heute nach einem Prozess gepingt, als ich bemerkte, dass auf meinem Ubuntu 9.04-Computer (Desktop) ein Git-Server-Daemon ausgeführt wurde. Nach einem kurzen Schwur stellte ich fest, dass das git-daemon-run
Paket (wahrscheinlich versehentlich) installiert worden war, und durch Entfernen wurde dieser Prozess beseitigt (und sichergestellt, dass es später nicht neu gestartet wurde).
In anderen Fällen möchte ich jedoch, dass das Serverpaket installiert wird, aber nicht, dass der Server-Daemon ausgeführt wird. Zum Beispiel verwende ich es lighttpd
für interne Tests (es wird von bestimmten Testskripten für einige Anwendungen gestartet und hört in diesen Konfigurationen nur auf localhost), aber ich möchte nicht, dass es mit einer zufälligen Konfigurationsdatei auf externe Verbindungen wartet. (Wenn ich einen ausführen möchte, der auf externe Verbindungen wartet, würde ich ihn selbst konfigurieren und ausführen.)
Ich mag es wirklich nicht, alle Arten von zufälligen Servern zu betreiben, die ich auf Computern mit Internet-Exposition nicht benötige, da wer weiß, welche Sicherheitslücken sie öffnen. Und ich ziehe es vor, mich nicht mit Firewalls herumschlagen zu müssen, da dies eine weitere potenzielle Quelle für Fehler und Fehlkonfigurationen ist, die Sicherheitslücken öffnen können. Es ist nicht so schwer, Unix-Computer so zu konfigurieren, dass keine Server gestartet werden, es sei denn, der Administrator fordert ihn ausdrücklich dazu auf. NetBSD (und OpenBSD, glaube ich auch) kommen standardmäßig auf diese Weise.
Wie konfiguriere ich meine Ubuntu-Systeme so, dass sie niemals einen Server-Daemon starten, es sei denn, ich sage ausdrücklich, dass ich möchte, dass er gestartet wird?
(Die Frage, ob ein Paket installiert werden soll, ist in meinem Buch nicht die Aufforderung, einen Server zu starten. Wenn dies der Fall sein soll, handelt es sich um eine schreckliche Benutzeroberfläche, da viele Paketinstallationen nicht einmal einen Server zum Starten haben Es ist viel zu einfach, versehentlich einen Server zu starten, ohne zu bemerken, dass Sie dies getan haben.)
EDIT: Nur um es klar zu machen, ist das Problem nicht, dass ich in der Lage sein möchte, vorhandene Server zu stoppen. Das Problem ist, dass ich nicht möchte, dass neue Server ohne eine explizite Anfrage gestartet werden. Dies bedeutet, dass ich in der Lage sein sollte, alle Systemadministrationsaufgaben auszuführen, z. B. ein Paket zu installieren, und sicher sein sollte, dass keine Server gestartet wurden. Die meisten Antworten sprechen diesen Punkt nicht an.
Antworten:
Installieren Sie sysv-rc-conf und deaktivieren Sie einfach die Dienste, die nicht ausgeführt werden sollen.
quelle
Als jemand mit einem ähnlichen Problem bin ich der festen Überzeugung, dass es für einen Dämon nicht sinnvoll ist anzunehmen, dass der Benutzer standardmäßig starten möchte: Es gibt viele vollkommen gültige Anwendungsfälle, in denen dies nicht der Fall ist. (Ganz zu schweigen davon, dass nicht immer klar ist, welche Installationen tatsächlich einen Daemon enthalten.) Der Daemon kann standardmäßig deaktiviert sein, der Benutzer kann explizit abgefragt werden oder es kann eine zentrale Einstellung geben. Alles andere ist eine Microsoft-Argumentation, die Linux völlig unwürdig ist.
Darüber hinaus finde ich einige der obigen Kommentare zum Originalplakat unhöflich, bevormundend und wenig konstruktiv. Es ist wirklich bemerkenswert, beispielsweise vorzuschlagen, dass er entweder das Standardverhalten akzeptieren oder die Verteilung ändern sollte. Erstens passt keine Distribution perfekt zusammen, und es ist unwahrscheinlich, dass ein Sprung zu einer neuen Distribution mit der damit verbundenen zusätzlichen Arbeit eine realistische Lösung für diese eine Sache darstellt. Zweitens sind erfahrene Linux / Unix-Benutzer daran gewöhnt, dass jedes Verhalten geändert werden kann: Ein Problem kann zwei Stunden dauern, aber dann ist es behoben. Für einen solchen Benutzer ist es selbstverständlich, wenn die Standardeinstellungen ungeeignet sind, die Existenz einer Problemumgehung anzunehmen und herauszufinden, um welche es sich handelt. Drittens, in Open Source und Freie-Software-Etikette,
If you don't like it, then patch the source code!'' is an acceptable response; however,
..., dann machen Sie eine Wanderung! '' Ist nicht.quelle
Das Paketsystem erwartet, dass Sie diesen Server ausführen, wenn Sie ein Serverpaket installieren. Es ist eine vernünftige Erwartung.
Roy hat diese Frage für Sie beantwortet. Wenn Sie ein neues Serverpaket installieren, stoppen Sie diesen Server und verwenden dann ein Tool wie sysv-rc-conf, um zu verhindern, dass dieser Server beim nächsten Neustart oder beim nächsten Runlevel-Wechsel gestartet wird. Ja, Sie müssen einige Arbeiten selbst ausführen, und das ist sinnvoll, da Sie Ihr System anders konfigurieren als die meisten Benutzer von Ubuntu.
Sie sollten einige Zeit investieren, um zu lernen, wie lighttpd so konfiguriert wird, dass es permanent so konfiguriert ist, dass nur localhost abgehört wird. Wenn Sie dann den Server starten, wissen Sie, dass er bereits nach Ihren Wünschen konfiguriert ist.
quelle
Ich fand Folgendes hilfreich für die Installation von Ubuntu in Chroot-Umgebungen, wie das Debootstrapping neuer Xen-Gäste. Der Kredit geht tatsächlich an die Xen-Tools-Skripte, um mir Folgendes beizubringen:
echo '#! / bin / sh'> /usr/sbin/policy-rc.d
echo 'exit 101' >> /usr/sbin/policy-rc.d
chmod 755 /usr/sbin/policy-rc.d
Mit diesem Skript startet apt nach der Installation keine Dienste. Dies ist jedoch nur die Hälfte Ihres Problems, da noch Symlinks vorhanden sind und die Dienste nach dem nächsten Start gestartet werden. Ich weiß nicht, wie ich das automatisch stoppen soll :(
quelle
invoke-rc.d nginx rotate
im Postrotate-Bereich verwendet wird. Ich verwende eine etwas andere Version. gist.github.com/hostmaster/7c25ef4e1e47bc3e2d71Barry Brown gibt in einem Kommentar zu der Frage einen Hinweis auf eine mögliche Antwort.
Das Verpackungssystem verwendet das
invoke-rc.d
Programm, um den Server nach der Installation des Pakets zu starten. [1] Dieses Programm wird ausgeführt/usr/sbin/policy-rc.d
, um die Richtlinie zum Starten dieses Servers zu bestimmen.Das Paket
policyrcd-script-zg2
enthält daspolicy-rc.d
Skript, das entweder/etc/policy-rc.d
mit seinen Parametern ausgeführt wird, falls vorhanden, und mit dem Fehlercode des Skripts beendet wird, oder ansonsten mit 0 (Erfolg) beendet wird. Die Schnittstelle,policy-rc.d
die voraussichtlich angeboten wird, wird kurz in derinvoke-rc.d
Verwaltung dokumentiert und viel ausführlicher in/usr/share/doc/sysv-rc/README.policy-rc.d.gz
.Ich nehme an, der nächste Schritt besteht darin, dies zu testen.
Noch zu beantwortende Fragen:
[1] Welche anderen Teile des Systems verwenden
invoke-rc.d
? [2] Funktioniert das tatsächlich?quelle
Wie wäre es mit einem Blick in die Verzeichnisse, in denen sich die Init-Skripte befinden? Sie können diese Verzeichnisse wahrscheinlich mit dem Befehl chatr unveränderbar machen.
quelle
Im Idealfall handelt es sich um
post-inst
Skripte. Zu Beginn des Ubuntu-Projekts wurde absichtlich versucht, vernünftige Standardeinstellungen für dpkg-Konfigurationsskripte zu erzwingen, damit Sie und ich nicht jede verdammte Frage beantworten oder Zeit damit verschwenden müssen, die Optionen zu untersuchen. Nachdem Ubuntu dies eingerichtet hat, wissen viele Menschen nicht, dass es das gibt. Es sollte möglich sein, eine Frage zu stellen, ob als Daemon installiert werden soll oder nicht, aber in den wenigen von mir überprüften Paketen werden solche Fragen nicht angezeigt.Vielleicht sollten Sie sich mit dem Ubuntu Server Team und vielleicht sogar mit Debian Policy in Verbindung setzen, um die Dinge zu verbessern.
quelle
Sie können versuchen, ein Skript zu erstellen, mit dem die Liste der installierten Dienste überprüft und anhand einer Liste der zulässigen Dienste überprüft wird. Wenn der Dienst nicht in der Liste enthalten ist, wird er vom Skript deaktiviert. Das Skript muss beim Start vor allgemeinen Diensten ausgeführt werden. Und vielleicht wie ein Dämon laufen, um frisch installierte Dienste zu schließen. Oder wenn möglich automatisch nach jeder Installation ausgeführt, um nach neuen Diensten zu suchen.
PS Ich kann mir zwei mögliche Ursachen für den Start von Diensten nach der Paketinstallation vorstellen. Das ist die Paketfunktion oder die Paketmanagerfunktion. Wenn dies eine Paketfunktion ist, glaube ich nicht, dass es eine Möglichkeit gibt, das Serviceverhalten zu ändern. Wenn dies eine Paketmanagerfunktion ist, gibt es möglicherweise eine Konfigurationsoption, um den Dienststart nach der Installation zu verhindern. Ich weiß es momentan nicht, also werfe ich nur Ideen.
quelle
Wenn Sie iptables mit der Standardrichtlinie DROP für die INPUT-Kette einrichten, müssen Sie sich nicht so viele Gedanken über Überwachungsports machen, da diese von iptables blockiert werden. Der Ubuntu-Server verfügt über eine benutzerfreundliche Oberfläche für iptables, wenn Sie mit iptables noch nicht vertraut sind.
Aus Ihrem Beitrag geht hervor, dass Sie mit einer anderen Linux-Distribution wie CentOS möglicherweise zufriedener sind. Mit dem Standardinstallationsprozess für CentOS können Sie verschiedene Metapakete installieren. Wenn Sie keine auswählen, sind Sie möglicherweise mit Ihrer Basisinstallation zufriedener.
Ich denke auch, dass Ihre Frage etwas klarer gewesen sein könnte, wenn Sie das Wort "Server" durch "Service" oder "Daemon" ersetzen, wenn Sie etwas meinen, das auf einem Server ausgeführt wird. Menschen neigen dazu, "Server" zu verwenden, um auf eine physische Box oder VM zu verweisen. Obwohl ich denke, es ist technisch nicht falsch.
quelle
Sehen Sie sich mit dem Befehl 'runlevel' an, in welcher Run-Ebene Sie sich befinden, und entfernen Sie alle Symlinks unter / etc / rc
<
runlevel> .d /. Sie werden wahrscheinlich wollen, dass einige der Dämonen laufen, aber die meisten könnten wahrscheinlich entfernt werden.Sie können sie mit einem Symlink aus dem Skript in /etc/init.d wieder hinzufügen.
Ich denke, es gibt einen Befehl, der denselben Trick ausführt und alle Symlinks für alle Runlevel hinzufügt, aber ich mache es einfach manuell.
quelle
Alternativ können Sie den
update-rc.d
Befehl verwenden.apache2
Dienst deaktivierenBEARBEITEN:
Dieses Verhalten wird durch Skripte in .deb-Paketen gesteuert. Wenn Sie ein Paket installieren, wird dieses Skript automatisch ausgeführt. IIRC, wir können dieses Skript nicht umgehen.
quelle
Grundsätzlich kann man nicht.
Wenn Sie ein Paket installieren und einen Dienst starten, geschieht dies. Wenn Sie nicht mögen, melden Sie einen Fehler unter https://launchpad.net/ .
Sie sollten nicht mit Deb-Paketen herumspielen. So etwas könnte später zurückkommen und dich in den Arsch beißen.
Wenn Sie möchten, dass im OpenBSD-Stil "standardmäßig nichts ausgeführt wird", führen Sie OpenBSD aus. Nicht jede Distribution passt zu jedem. Es gibt bestimmt Dinge in Ubuntu, die Sie nicht mögen. Wenn Sie Ubuntu weiterhin ausführen möchten, müssen Sie die ausgeführten Dienste überprüfen und deaktivieren.
quelle
Sie können einige Dienste im Menü System> Dienste in GNOME aktivieren und deaktivieren
quelle