
Seit ich vor ein paar Tagen viel Wert auf die Sicherheit meiner Daten lege, passiert nmap
mir Folgendes:nmap 127.0.0.1
Überraschung, Überraschung, ich habe viele aktive Dienste, die auf localhost hören:
$ nmap 127.0.0.1
Starting Nmap 5.21 ( http://nmap.org ) at 2013-05-05 00:19 WEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00025s latency).
Not shown: 993 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
631/tcp open ipp
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
Das einzige, das ichkönnteVerwendung ist ssh
(obwohl es wahrscheinlich nicht gut konfiguriert ist, ich werde diese Angelegenheit einer anderen Frage widmen).
Soweit ich weiß, ipp
verwendet CUPS zum Freigeben meiner Drucker ein Protokoll. Ich muss sie nicht freigeben, sondern nur von einem Server auf die Drucker zugreifen.
Dies ist die Ausgabe netstat -lntup
des Root-Benutzers beim Entfernen der Localhost-Adressen:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 497/sshd
tcp 0 0 0.0.0.0:17500 0.0.0.0:* LISTEN 2217/dropbox
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 892/smbd
tcp 0 0 0.0.0.0:50022 0.0.0.0:* LISTEN 1021/rpc.statd
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 892/smbd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 906/rpcbind
tcp6 0 0 :::22 :::* LISTEN 497/sshd
tcp6 0 0 :::42712 :::* LISTEN 1021/rpc.statd
tcp6 0 0 :::445 :::* LISTEN 892/smbd
tcp6 0 0 :::139 :::* LISTEN 892/smbd
tcp6 0 0 :::111 :::* LISTEN 906/rpcbind
udp 0 0 0.0.0.0:51566 0.0.0.0:* 615/avahi-daemon: r
udp 0 0 0.0.0.0:68 0.0.0.0:* 7362/dhclient
udp 0 0 0.0.0.0:111 0.0.0.0:* 906/rpcbind
udp 0 0 192.168.1.255:137 0.0.0.0:* 1782/nmbd
udp 0 0 192.168.1.67:137 0.0.0.0:* 1782/nmbd
udp 0 0 0.0.0.0:137 0.0.0.0:* 1782/nmbd
udp 0 0 192.168.1.255:138 0.0.0.0:* 1782/nmbd
udp 0 0 192.168.1.67:138 0.0.0.0:* 1782/nmbd
udp 0 0 0.0.0.0:138 0.0.0.0:* 1782/nmbd
udp 0 0 0.0.0.0:655 0.0.0.0:* 906/rpcbind
udp 0 0 0.0.0.0:17500 0.0.0.0:* 2217/dropbox
udp 0 0 0.0.0.0:5353 0.0.0.0:* 615/avahi-daemon: r
udp 0 0 0.0.0.0:34805 0.0.0.0:* 1021/rpc.statd
udp6 0 0 :::40192 :::* 1021/rpc.statd
udp6 0 0 :::111 :::* 906/rpcbind
udp6 0 0 :::655 :::* 906/rpcbind
udp6 0 0 :::5353 :::* 615/avahi-daemon: r
udp6 0 0 :::42629 :::* 615/avahi-daemon: r
Wie konfiguriere ich diese Dienste, sodass sie nur dann auf die Außenwelt hören, wenn ich sie tatsächlich verwende?
Antwort1
Bestimmen Sie Ihre Belichtung
Wenn man die Ausgabe des netstat
Befehls betrachtet, sieht es nach einer Menge von Diensten aus, aber in Wirklichkeit ist es nur eine sehr kurze Liste:
$ netstat -lntup | awk '{print $6 $7}'|sed 's/LISTEN//'| cut -d"/" -f2|sort|uniq|grep -v Foreign
avahi-daemon:r
dhclient
dropbox
nmbd
rpcbind
rpc.statd
smbd
sshd
Sich einen Überblick verschaffen
Wenn ich mir diese Liste anschaue, gibt es mehrere Dienste, von denen ich die Finger lassen würde.
- dhclient
- Der DHCP-Server-Daemon ist für den Erhalt Ihrer IP-Adresse zuständig und muss über diesen verfügen.
- Dropbox
- offensichtlich Dropbox, haben müssen
Beginnen Sie mit der Reduzierung - deaktivieren Sie Samba
Sie können Samba wahrscheinlich sofort deaktivieren, da es für zwei der oben genannten Dienste zuständig ist nmbd
. smbd
Es ist fraglich, ob Sie das wirklich auf einem Laptop ausführen müssen, egal ob auf dem lokalen Host oder Ihrer IP, die Ihrem Netzwerk zugewandt ist.
Um zu überprüfen, ob sie ausgeführt werden, können Sie den folgenden Befehl verwenden status
:
$ status nmbd
nmbd start/running, process 19457
$ status smbd
smbd start/running, process 19423
Das Ausschalten von Diensten kann angesichts der Veränderungen bei Upstart, /etc/rc.d und Business verwirrend sein. Daher kann es schwierig sein, herauszufinden, welcher Dienst unter welcher Technologie steht. Für Samba können Sie den folgenden service
Befehl verwenden:
$ sudo service nmbd stop
nmbd stop/waiting
$ sudo service smbd stop
smbd stop/waiting
Jetzt geht es los:
$ status nmbd
nmbd stop/waiting
$ status smbd
smbd stop/waiting
Halten Sie sie fern ... dauerhaft
Damit sie ausgeschaltet bleiben, verwende ich dieses Tool, sysv-rc-conf
um Dienste von einer Konsole aus zu verwalten. Es funktioniert besser als die meisten anderen. Damit können Sie überprüfen, welche Dienste Sie ausführen möchten und in welchem Runlevel sie gestartet/gestoppt werden sollen:
$ sudo apt-get install sysv-rc-conf
Deaktivieren des Rests dessen, was NICHT benötigt wird
Nachdem Samba nun ausgeschaltet ist, bleibt uns Folgendes:
- Avahi-Daemon
- Teil von Zeroconf (Plug-and-Play), schalten Sie es aus
- rpcbind
- wird für NFS benötigt - schalten Sie es aus
- rpc.statd
- wird für NFS benötigt - schalten Sie es aus
Für die verbleibenden 3 können Sie dieselben Schritte ausführen, die wir für Samba getan haben, um sie ebenfalls auszuschalten.
TASSEN?
Um CUPS auszuschalten (was Sie übrigens nicht wirklich brauchen), können Sie den Dienst auf die gleiche Weise ausschalten und dann seinen Start verhindern. Um drucken zu können, müssen Sie jeden Drucker auf Ihrem System einzeln einrichten. Sie können dies über die system-config-printer
GUI tun.
Diese Dienste auf Anfrage bereitstellen?
Dies ist eigentlich der Kern Ihrer Frage, aber es gibt keine Patentlösung, um diese Dienste „intelligent“ zu machen, sodass sie nur dann ausgeführt werden, wenn sie verwendet werden, und nicht ständig.
#1 - systemd vs. upstartEin Teil davon ist die derzeitige Spaltung zwischensystemdUndEmporkömmlingEs gibt einen guten Überblick über die beiden konkurrierenden TechnologienHier.
Beide Technologien versuchen, leicht unterschiedliche Dinge zu tun. Meiner Meinung nach scheint systemd aufgrund ihrer Funktionsumfänge eher auf Server ausgerichtet zu sein, während upstart eher auf den Desktop ausgerichtet zu sein scheint. Mit der Zeit wird sich das meiner Meinung nach von selbst erledigen und beide Dienste werden stabil und funktionsreich sein.
Letztendlich werden beide Dienste das Starten und Stoppen bei Bedarf für alle von ihnen verwalteten Dienste anbieten. Funktionen wie diese StopWhenUnneeded=yes
gibt es beispielsweise bereits systemd
, es ist also nur eine Frage der Zeit, bis diese Funktionen ausgearbeitet werden.
Einige Dienste unterstützen das Stoppen/Starten nicht sehr gut oder gar nicht. Dienste wie diese sshd
scheinen wenig sinnvoll als On-Demand-Dienste zu laufen, insbesondere wenn sie stark genutzt werden. Außerdem bieten einige Dienste wie Apache Mechanismen in sich, um mehr oder weniger ihrer eigenen Listener zu starten, die sich selbst verwalten. Es ist also unklar, wie On-Demand-Dienste, die von diesen Arten von Diensten bereitgestellt werden, sich in diese integrieren lassen systemd
oder upstart
wie sie sich in diese integrieren lassen.
- Starten von SSHD bei der ersten Verbindung zu Port 22 mit der neuen Socket-Bridge von Upstart
- CUPS und systemd: bei Bedarf starten und stoppen
Ist das wirklich notwendig?
Sie werden von beiden Seiten hören, dass das übertrieben ist oder dass Sie einen minimalistischen Ansatz wählen und nur das installieren sollten, was Sie unbedingt brauchen, aber es ist wirklich eine persönliche Entscheidung. Zu verstehen, dass diese Dienste da sind und was sie tun, ist wirklich wichtig. Letztendlich ist ein Computer ein Werkzeug, und indem Sie ein Unix-System verwenden, zeigen Sie bereits, dass Sie bereit sind, hinter die Kulissen zu schauen und zu verstehen, was Ihren Computer antreibt.
Ich würde sagen, dass diese Art der Befragung genau die Geisteshaltung ist, die man anstreben sollte, wenn man sich mit Computern und Unix im Allgemeinen beschäftigt.
Verweise
Antwort2
127.0.0.1 ist nicht die „Außenwelt“, es sieht sich im Haus um.
Überprüfen Sie Ihre Firewall-Konfiguration (heutzutage iptables in Linux), die meisten davon sollten von außen nicht zugänglich sein.
Führen Sie keine Dienste aus, die Sie nicht benötigen. Deinstallieren Sie sämtliche nicht benötigte Software.
ÄndernPasswörterum stärker zu sein. Überprüfen Sie Ihre Systemnutzung, jagen Sie nicht wahllos jeder interessanten Website hinterher. Überprüfen Sie die Anti-Phishing-, Anti-Scripting- usw.-Konfiguration des Browsers. Überprüfen Sie Ihre Nutzung von SSH und su/sudo.
Aber vor allem ist übermäßige Paranoia kontraproduktiv. Lassen Sie sich nicht von derGlanz der Technik.
Antwort3
Sie können zwar einzelne Dienste „schließen“, aber vielleicht ist es einfacher, eine Firewall einzurichten. Fast alle gängigen Distributionen (Ubuntu, Debian, Centos usw.) bieten integrierte Unterstützung für iptables.
Ein einfacher Regelsatz für den Einstieg: (Sie können diese einfach in eine Eingabeaufforderung eingeben; um sie dauerhaft zu machen, fügen Sie sie Ihren Startskripten hinzu oder teilen Sie uns mit, welche Distribution Sie verwenden. Unter Centos beispielsweise: „system-config-firewall“ ist eine gute Benutzeroberfläche zum Konfigurieren von Iptables-Regeln.)
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP
Grundsätzlich gilt: SSH-Eingang zulassen, alles andere löschen.
Ihre INPUT-Kette sieht nun folgendermaßen aus:
- Wenn ein Paket für ‚ssh‘ auf meinen Computer gelangt, lasse es zu
- Wenn ein Paket keine der vorherigen Regeln erfüllt, werfen Sie es einfach weg.
Wenn Sie dann zu einem späteren Zeitpunkt Samba (Windows File Sharing) zulassen möchten, können Sie Folgendes ausführen:
iptables -I INPUT-p tcp --dport 465 -j ACCEPT
Das -I
stellt der Liste eine Regel voran; -A
hängt eine Regel an. Ihre Kette sieht jetzt also so aus:
- Wenn ein Paket für 'Samba' auf meinen Computer gelangt, dann erlaube es
- Wenn ein Paket für ‚ssh‘ auf meinen Computer gelangt, lasse es zu
- Wenn ein Paket keine der vorherigen Regeln erfüllt, werfen Sie es einfach weg.
Die INPUT
Kette bezieht sich auf Pakete, die für Ihr System bestimmt sind. Andere Ketten sind OUTPUT
für Pakete von Ihrem Computer, die ins Internet gehen, und FORWARD
für Pakete, die durch Ihren Computer geleitet werden (das sind Pakete, die Ihren Computer „durchlaufen“, wie der Transitbereich eines Flughafens – Dinge, die nicht durch INPUT
Ihren Computer laufen, weil sie nicht in Ihren Computer gelangen).
Als letzte Anmerkung: nmap'ing 127.0.0.1 ist nicht sehr nützlich; viele Dienste sind nur von 127.0.0.1 und keiner anderen Adresse aus zugänglich. Wenn Sie keine andere Maschine haben, von der aus Sie nmap ausführen können, versuchen Sie es mit Shields UP! von Gibson Research (https://www.grc.com/shieldsup) - das ist ein kostenloses, online verfügbares nmap-lite. Oder fügen Sie einen Kommentar mit Ihrer IP/E-Mail-Adresse hinzu und ich werde Sie per nmap anmelden :)