Wie kann ich mich vor Eindringen und Malware schützen, bevor ich eine Verbindung zum Internet herstelle (insbesondere über eine öffentliche IP-Adresse)?

60

Angesichts der großen Anzahl von Raspberry Pis in freier Wildbahn und der Tatsache, dass große Gruppen von ihnen identisch konfiguriert sind (wenn eine neu geflashte SD-Karte mit einem der wenigen verfügbaren Images installiert ist), sind sie wahrscheinlich ein verlockendes Ziel für Malware, einschließlich Botnets.

Was kann getan werden, um dies zu mildern?

Es ist hinreichend bekannt, dass man das Passwort für den "pi" -Benutzer (Debian) und "root" (Arch.) Ändern sollte. Aber wie steht es mit anderen Systemkonten (z. B. "tli", "pnd"?)? universelle Passwörter, die vermutlich für alle Geräte gleich sind?

Und gibt es bekannte Schwachstellen in anderen Paketen, die in den für den Pi verfügbaren SD-Images installiert sind (z. B. aufgrund von Hardwareeinschränkungen oder reduzierten Versionen dieser Pakete?)

Insbesondere sshmache ich mir Sorgen um MySQL und andere Dienste, die möglicherweise auf einem neu installierten Image ausgeführt werden.

finnw
quelle

Antworten:

23

Dinge, die ich bisher an dem Debian Squeeze-Bild bemerkt habe:

  • / etc / shadow enthält eine Reihe von Passwort-Hashes für Konten, die nicht das pi-Konto sind (buildbot usw.). Ändern Sie natürlich das Passwort für das pi-Konto, falls Sie dies noch nicht getan haben (oder erstellen Sie ein neues Benutzerkonto für sich und löschen Sie das pi-Konto), bearbeiten Sie aber auch die anderen Einträge und ersetzen Sie die Hashes durch * s. Hinweis / etc / passwd enthält doppelte Einträge für das pi-Konto, was den Benutzer adduser / deluser verwirrt. Löschen Sie einfach einen.

  • Die Standardkonfiguration des SSH-Daemons ermöglicht die Anmeldung als Remote-Root. Dies sollte deaktiviert sein.

  • Es lohnt sich, netstat zu verwenden, um die Liste der Dinge zu überprüfen, die auf Verbindungen warten. Im Vergleich zu einem typischen minimalen Debian-Netz läuft erstaunlich viel. Im Allgemeinen ist es eine gute Idee, die Gefährdung nur für die von Ihnen benötigten Dinge zu verringern. Deaktivieren oder deaktivieren Sie also zuerst alles , und legen Sie dann nur die Dienste offen, die im öffentlichen Internet absichtlich sichtbar sein sollen (in der Regel nur ssh oder ssh + http).

  • Sie möchten die SSH-Host-Schlüssel ändern, anstatt die im Image enthaltenen zu verwenden (AIUI, das neueste Image generiert sie beim ersten Start neu).

Mondschatten
quelle
1
Ich sehe das Problem mit Ihrer ersten Aussage nicht. Wofür sind diese zusätzlichen Benutzer? Sollten sie nicht für die Anmeldung deaktiviert sein? Sie können dies überprüfen, indem Sie versuchen, suzu ihnen zu gelangen.
Jivings
2
Ich werde diese -1 geben. Hauptsächlich, weil Sie vorschlagen, die Schattendatei manuell zu bearbeiten. Welches ist eine enorm schlechte Idee.
Jivings
@Jivings Nein, tut er nicht. Er kann genauso gut implizieren, dass er benutzt vipw; ist das eine schlechte idee Nein, ist es nicht. +1 für implizite Verwendung von vipw.
user2497
41

Es gibt viele Möglichkeiten, um Sicherheitslücken zu schließen. Als Erstes sollten Sie jedoch wissen, dass Linux nicht so anfällig für Eingriffe ist wie andere Betriebssysteme. Dies ist hauptsächlich auf den Mangel an Malware zurückzuführen, die auf * NIX abzielt. Dennoch möchten Sie wissen, wie auf Ihr System zugegriffen werden kann.

Passwörter

Zunächst sollten Sie die Standardkennwörter für alle Benutzer ändern, die sich anmelden können. Für Debian ist dies nur der Standardbenutzer Pi . Für Arch Linux ist dies der Superuser root . Kennwörter werden geändert, wenn Sie als Benutzer angemeldet sind, indem Sie in passwddie Befehlszeile eingeben .

Es wird empfohlen, eine sichere Kennwortrichtlinie zu verwenden, da Brute-Force-Wörterbuchangriffe auf Ihren Standardbenutzer recht einfach sind. Wählen Sie ein anständiges Passwort mittlerer Länge.

Dunkelheit

Der Fernzugriff ist wahrscheinlich die wichtigste Sicherheitslücke. Was wir hier verwenden können, heißt Sicherheit durch Dunkelheit . Eine häufige Angriffsmethode besteht darin, einen Bereich von IP-Adressen nach offenen Ports zu durchsuchen. Eine der einfachsten Gegenmaßnahmen ist es, Benutzer zu sein, die nicht die Standardports verwenden .

Hier müssen lediglich die Standardports für häufig verwendete Protokolle geändert werden. Beispielsweise ist der Standard-SSH-Port 22 und FTP 21. Auf meinem System verwendet SSH 222 und FTP 221, wodurch diese Protokolle vor automatischen Angriffen geschützt werden sollten.

Verbindungssicherheit

Erstens ist das wichtigste Sicherheitsproblem, dass sich das Root-Konto nicht über SSH anmelden kann. Sie können die Root-Anmeldung in der /etc/ssh/sshd_configDatei deaktivieren, indem Sie diese Zeile kommentieren oder entfernen:

PermitRootLogin yes

Es sollte standardmäßig auf no gesetzt sein, aber es ist am besten, dies sicherzustellen.


Wenn Sie häufig SSH verwenden und sich Sorgen um Menschen in der Mitte machen, können Sie Wörterbuchangriffe gegen Ihr Passwort verwenden SSH Keys.

Die schlüsselbasierte Authentifizierung bietet mehrere Vorteile gegenüber der Kennwortauthentifizierung. Beispielsweise sind die Schlüsselwerte wesentlich schwieriger zu erzwingen als einfache Kennwörter.

Um die SSH-Schlüsselauthentifizierung einzurichten, müssen Sie zuerst das Schlüsselpaar erstellen. Dies geschieht am einfachsten auf Ihrem Client-Computer (dem Computer, mit dem Sie auf den Pi zugreifen möchten).

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/pi/.ssh/id_rsa):

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/pi/.ssh/id_rsa.
Your public key has been saved in /home/pi/.ssh/id_rsa.pub.

Wie Sie sehen, wurden zwei Dateien erstellt, der private id_rsaund der öffentliche Schlüssel id_rsa.pub.

Der private Schlüssel ist nur Ihnen bekannt und sollte sicher verwahrt werden . Im Gegensatz dazu kann der öffentliche Schlüssel frei mit jedem SSH-Server geteilt werden, zu dem Sie eine Verbindung herstellen möchten.

Wir möchten also den öffentlichen Schlüssel auf den Raspberry Pi kopieren . Wir können das sehr einfach machen:

ssh-copy-id pi@address

Wo piist der Raspberry Pi-Benutzername und addressist die IP-Adresse des Pi.

Ich werde es noch einmal wiederholen, wir verteilen den öffentlichen Schlüssel. Der private Schlüssel liegt bei Ihnen. Halten Sie es fest, um diesen Schlüssel loszulassen, der die Sicherheit des Systems beeinträchtigt.

Das Arch-Wiki bietet eine hervorragende Beschreibung, wie dies funktioniert:

Wenn auf einem SSH-Server Ihr öffentlicher Schlüssel gespeichert ist und Sie eine Verbindung anfordern, wird Ihr öffentlicher Schlüssel zum Erstellen und Senden einer Herausforderung verwendet. Diese Herausforderung ist wie eine codierte Nachricht und muss mit der entsprechenden Antwort beantwortet werden, bevor der Server Ihnen Zugriff gewährt. Was diese verschlüsselte Nachricht besonders sicher macht, ist, dass sie nur von jemandem mit dem privaten Schlüssel verstanden werden kann. Während der öffentliche Schlüssel zum Verschlüsseln der Nachricht verwendet werden kann, kann er nicht zum Entschlüsseln derselben Nachricht verwendet werden. Nur Sie, der Inhaber des privaten Schlüssels, können die Herausforderung richtig verstehen und die richtige Antwort geben.

Für weitere Informationen zur Sicherheit der Authentifizierung mit öffentlichen Schlüsseln bietet Wikipedia eine ausführliche Erklärung .

Mit der vorhandenen SSH-Sicherheit können Sie eine Menge verschlüsselter, sicherer Datenübertragungen durchführen. Praktisch jede andere Portverbindung kann bei Bedarf über SSH geroutet werden. Sie können die X-Sitzung sogar über SSH weiterleiten, sodass sie auf einem anderen Computer angezeigt wird.

Als interessantes Beispiel habe ich gestern Eclipse auf meinem Desktop ausgeführt, auf meinem Raspberry Pi angezeigt und Maus und Tastatur von meinem Netbook aus gesteuert. Das ist die Kraft von SSH.

Berechtigungen

Dateiberechtigungen sind der Kern des Linux-Sicherheitssystems. Sie wirken sich darauf aus, wer Ihre Dateien und Ordner sehen kann, und können beim Schutz Ihrer Daten sehr wichtig sein. Melden Sie sich beispielsweise als normaler Benutzer beim Raspberry Pi an und führen Sie Folgendes aus:

cat /etc/shadow

Die shadowDatei enthält verschlüsselte Passwörter für die Benutzer des Systems, sodass wir nicht möchten, dass sich irgendjemand die Datei ansieht! Sie sollten also diese Antwort sehen:

cat: /etc/shadow: Permission denied

Wir können sehen, warum dies so ist, indem wir uns die Berechtigungen der Datei ansehen:

ls -l /etc/shadow
-rw------- 1 root root 821 Jun 11 22:13 /etc/shadow

Dies sagt uns, dass die Datei im Besitz von root ist und nur der Eigentümer Lese- / Schreibrechte hat. Lassen Sie uns diese Ausgabe aufschlüsseln.

-rw-------

Dies ist der Status der Berechtigungen. Das erste Bit gibt den Dateityp an ( -bedeutet reguläre Datei). Die nächsten drei Bits stellen die Aktionen dar, die dem Eigentümer der Datei zur Verfügung stehen. Die zweiten drei Bits stellen die Gruppe dar und die letzten drei sind für andere oder alle anderen. Ein Verzeichnis mit vollen Berechtigungen würde also so aussehen:

drwxrwxrwx  10 root root   280 Jun 20 11:40 tmp/

Das sind Lese-, Schreib- und Ausführungsberechtigungen für den Eigentümer, die Gruppe und alle anderen.

Der nächste wichtige Teil sind die beiden Namen. In unserem Fall root root. Der erste Benutzer ist der Eigentümer der Datei. Die zweite ist die Benutzergruppe . Zum Beispiel wäre es üblich zu sehen:

drwxr-xr-x  10 pi users   280 Jun 20 11:40 home/pi

Dies würde dem Benutzer Lese- / Schreibzugriff piauf sein Basisverzeichnis und allen anderen Benutzern Lesezugriff gewähren.

Berechtigungen, auf die am häufigsten verwiesen wird und die mithilfe von Oktalwerten gesteuert werden. Wenn wir zum Beispiel rw nur für den Eigentümer festlegen möchten, geben wir Folgendes ein:

chmod 600 /path/to/file

Dies ist eine grundlegende Übersicht. Weitere Informationen zu Linux-Dateiberechtigungen finden Sie in diesem Artikel.


Dieses Verständnis ist wichtig beim Sichern von Dateien und Ordnern. Angenommen, wir haben gerade SSH-Schlüssel eingerichtet. Wir möchten definitiv nicht, dass andere Benutzer in unser ~/.sshVerzeichnis gelangen, da sie sonst unseren privaten Schlüssel übernehmen können. So entfernen wir ihre Leserechte:

chmod 700 ~/.ssh
ls -la ~/.ssh 
drwx------   2 james users  4096 Jun 18 03:05 .

Ich hoffe, dies klärt einige Ihrer Bedenken hinsichtlich der Sicherung von Linux. Daran sollten Sie erkennen können, dass es sich um ein ziemlich sicheres System handelt, und wenn Sie vorsichtig sind, sollten Sie keine Sicherheitsprobleme haben.

Jivings
quelle
10
Ich bin mit Ihrer Bemerkung zu Obscurity nicht einverstanden. Es würde Sekunden dauern, die auf Ihrem Gerät geöffneten Ports zuzuordnen und Ihren SSH-Server zu finden. Deaktivieren Sie die Kennwortanmeldungen und bleiben Sie bei den normalen Ports. Ich bezweifle, dass Sie FTP überhaupt brauchen. Verwenden Sie stattdessen SCP.
Alex Chamberlain
2
@AlexChamberlain Es ist eine vorübergehende Geschwindigkeitsüberschreitung für Angreifer, aber keineswegs eine vollständige Lösung für sich.
Jivings
4
Das Ändern der Standard-Ports senkt häufig das Klopfen von Türen, was zu Wörterbuchangriffen führt. Sicher, es ist eine schrecklich kleine Sicherheitsmaßnahme, aber es hat auch andere Vorteile, dh es kann das Aufblähen des Baumstamms begrenzen. Es handelt sich eher um eine vorbeugende Maßnahme als um eine Sicherheitsmaßnahme, die jedoch noch berücksichtigt werden muss.
Beeblebrox
2
@AlexChamberlain, Während des Debian-SSH-Schlüsseldebakels haben wir viele Versuche an Port 22 und an keinem anderen Ort protokolliert. In diesem Fall hätte es Ihnen viel Zeit gekostet, auf einem anderen Port zu laufen, während die Hacker versuchten, herauszufinden, welche der ausgenutzten Hosts wertvoll waren. SBO hilft bei weitem nicht so viel, wenn der Angreifer Sie gezielt angreift.
John La Rooy
1
Genau. Mein Punkt war , dass es nicht nur thereotical - es gibt eine Zeit in der jüngsten Vergangenheit hat , wo SBO auf jeden Fall tat Hilfe und machte einen signifikanten Unterschied.
John La Rooy
6

Um Bruteforce-Angriffe zu verhindern, können Sie installieren und konfigurieren fail2ban. Es werden Protokolldateien (z. B. /var/log/auth.log) analysiert, und es wird versucht, festzustellen, ob mehrere Anmeldeversuche fehlgeschlagen sind. Dann werden die Quell-IP-Adressen mit automatisch gesperrt iptables.

Es gibt eine Reihe von Anleitungen rund um das Internet.

Morgan Courbet
quelle