
Ich habe vor Kurzem zwei Ubuntu-Server-Maschinen installiert und möchte die offenen Ports auf den Maschinen finden.
Wenn ich nmap
von meinem Rechner (Ubuntu 11.10) aus laufe, stelle ich fest, dass beide Server
135/tcp filtered msrpc
4444/tcp filtered krb524
4662/tcp filtered edonkey
5000/tcp filtered upnp
5631/tcp filtered pcanywheredata
Ich habe diese Ports nie geöffnet. Ich habe nur LAMP und SAMBA installiert. Warum sind diese Ports geöffnet?
Die vollständige Liste der offenen Ports lautet:
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
80/tcp open http
110/tcp open pop3
135/tcp filtered msrpc
139/tcp open netbios-ssn
143/tcp open imap
445/tcp open microsoft-ds
993/tcp open imaps
995/tcp open pop3s
4444/tcp filtered krb524
4662/tcp filtered edonkey
5000/tcp filtered upnp
5631/tcp filtered pcanywheredata
Die Frage ist, warum diese Ports geöffnet sind: 135/tcp filtered msrpc
, 4444/tcp filtered krb524
, 4662/tcp filtered edonkey
. 5000/tcp filtered upnp
, 5631/tcp filtered pcanywheredata
. Ich habe diese Ports nie geöffnet. Ich habe nur LAMP und SAMBA installiert.
Scheint diese Liste sicher zu sein?
Antwort1
Sie können eine Liste der Ports aus der Datei /etc/services abrufen.
cat /etc/services | grep 137 (example)
Beispiel
Welche Ports müssen für die Kommunikation mit Samba geöffnet sein?
netbios-ns - 137 # NETBIOS Name Service
netbios-dgm - 138 # NETBIOS Datagram Service
netbios-ssn - 139 # NETBIOS session service
microsoft-ds - 445 # if you are using Active Directory
Führen Sie diesen Befehl aus
netstat -anltp | grep "LISTEN"
Der typische Webserver, der FTP, SSH und MySQL ausführt, gibt folgende Ausgabe aus:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 21432/mysqld
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4090/apache2
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7213/sshd
tcp6 0 0 :::21 :::* LISTEN 19023/proftpd
tcp6 0 0 :::22 :::* LISTEN 7234/sshd
Antwort2
Ihre Frage ist recht allgemein und „sicher“ ist relativ.
Wenn Sie einen Server installieren und einen Port öffnen, treten immer potenzielle Schwachstellen auf.
Wenn Sie einen Server (SSH, Samba) installieren und den Server starten (normalerweise werden sie standardmäßig beim Booten gestartet), öffnen Sie einen Port.
Bei jedem Server (SSH, Samba, HTTP) können Sie Konfigurationsänderungen vornehmen, um die Sicherheit zu erhöhen.
Für SSH könnte dies die Verwendung von Schlüsseln (und Deaktivieren von Passwörtern), TCPWrapper, eine Firewall usw. umfassen.
Beim Einsatz einer Firewall gibt es 3 allgemeine Strategien
1) Alle zulassen und IPs mit schlechtem Verhalten auf die schwarze Liste setzen. Ein Beispiel hierfür wäre http. Im Allgemeinen führen Sie http als öffentlichen Server aus, lassen alle IPs zu und setzen diejenigen auf die schwarze Liste, die Ihren Server mit Spam belästigen.
2) Alles ablehnen und eine Whitelist zulassen. Ein Beispiel hierfür wäre ssh.
3) Begrenzung. Manchmal begrenzen Sie die Rate einer Verbindung oder die Anzahl der Pings pro Sekunde.
Ich hoffe, das hilft Ihnen beim Einstieg. Vielleicht möchten Sie sehen
https://help.ubuntu.com/11.10/serverguide/C/index.html
https://help.ubuntu.com/community/Security
Oder stellen Sie eine spezifische Frage zu einem bestimmten Server.
Antwort3
„Gefiltert“ bedeutet nicht unbedingt, dass der Port auf dem Zielhost offen ist.
Tatsächlich könnte es sogar überhaupt nichts bedeuten.
Wenn sich beispielsweise zwischen Ihrem Ausführungsrechner nmap
und dem Ziel eine Firewall befindet und diese Firewall den Port 5000 aktiv herausfiltert, wird 5000 in Ihrer Liste als „gefiltert“ angezeigt, ohne dass der Zielhost jemals Datenverkehr an diesem Port feststellt. Daher ist es völlig irrelevant, ob der Port auf dem Ziel geöffnet ist oder nicht.
Eine endgültige Liste der offenen Ports auf einem Server erhalten Sie, indem Sie Folgendes versuchen:
sudo netstat -lnp --tcp --udp
-l : only show listening ports
-n : don't bother looking up DNS hostnames
-p : show which processes have the port open
--tcp : show tcp ports
--udp : show udp ports
Sie könnten „und“ weglassen --tcp
, --udp
aber dann erhalten Sie eine Menge irrelevanter lokaler Dateisystem-Socket-Informationen, auf die über ein Netzwerk nicht zugegriffen werden kann.
sudo
-p
ist für die ordnungsgemäße Funktion erforderlich , andernfalls wird nur -
für alle Prozesse gedruckt, die Ihrem Benutzer nicht gehören.
Antwort4
Da netstat
im Gegensatz zu nicht mehr standardmäßig installiert wird, lsof
dachte ich, ich könnte eine Option hinzufügen, die sofort funktioniert:
sudo lsof -nP -iTCP -sTCP:LISTEN