Sichern eines SuperMicro IPMI BMC


16

Ich habe kürzlich ein SuperMicro X8DTU-F-Motherboard erworben, das über einen integrierten BMC verfügt, auf dem im Grunde das IPMI-System ausgeführt wird. Es stellt sich heraus, dass es sich um ein kleines Linux-System handelt, das auf einem ARM-Prozessor ausgeführt wird.

Leider läuft hier eine Menge Software, von der ich viele nicht benötige und die ich nicht in der Lage bin, sie hinter eine Firewall zu stellen. Ich möchte jedoch die IPMI-Funktionalität. Hat jemand, der eines davon benutzt hat, konkrete Vorschläge, wie man das Ding sichert? Es bootet von einem im Grunde genommen ROM-Dateisystem, und es scheint nicht einmal irgendwelche Haken zu geben, um einen der verschiedenen Server, die es ausführt, auszuschalten.

Mich würde auch interessieren, wie ich die Liste der Namen und Kennwörter überprüfen kann, die für den Zugriff auf das System über alle verschiedenen Dienste verwendet werden können. Die Standardeinstellung ist ADMIN/ ADMIN, aber in keiner der Dateien in / conf oder / etc ist 'ADMIN' enthalten, was mich eher beunruhigt. Es gibt /conf/shadowund /conf/webshadowDateien mit mysteriösen 'Test'-IDs, die mich auch nicht besonders wohl fühlen lassen.


Ich habe noch keine Korrelation zwischen den Inhalten von shadow, webshadow und den tatsächlich gültigen Benutzern gefunden. Neue Benutzer, die über die BMC-Verwaltung hinzugefügt wurden, werden in diesen Dateien nicht angezeigt. Außerdem haben die Benutzer "anonymous", "test1", "test2" eine Shell, die im Dateisystem nicht vorhanden ist.
Daniel Lawson

2
Weitere Informationen finden Sie im Dan Farmer-Handbuch zu IPMI Security Best Practices . Er veröffentlichte kürzlich einen Artikel mit dem Titel ipmi: cargo train to hell, in dem er einige bedeutende Sicherheitsprobleme mit IPMI ausführlich beschrieb .
Stefan Lasiewski

1
Danke für diesen tollen Link. Die kurze Zusammenfassung der Sicherheitsprobleme finden Sie unter fish2.com/ipmi/itrain-gz.html. Die sehr kurze Zusammenfassung lautet: "Sie sind total durcheinander ". Seufzer.
Curt J. Sampson

Antworten:


6

Im Idealfall ist Ihr Verwaltungsnetzwerk ein anderes Netzwerk als Ihr anderes Netzwerk oder zumindest ein anderes VLAN mit eingeschränktem Routing-Zugriff.

Auf diesen Systemen werden jedoch nicht so viele Dienste ausgeführt:

PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
443/tcp  open  https
555/tcp  open  dsf
5120/tcp open  unknown
5900/tcp open  vnc
5988/tcp open  unknown
MAC Address: 00:30:48:D9:3A:71 (Supermicro Computer)

(und UDP / 623 für IPMI selbst)

Die meisten davon werden benötigt, wenn Sie eine Remoteverwaltung durchführen möchten. Wenn Sie keine Fernverwaltung durchführen möchten, sollten Sie erwägen, den IPMI-Controller überhaupt nicht zu aktivieren oder stattdessen eine X9DTU-Karte zu kaufen (-F steht für "Built-in BMC").

Wenn Sie eine vollständige Remoteverwaltung durchführen möchten, Ihre IPMI-Controller nicht in einem anderen Netzwerk ausführen können und dennoch einen gewissen Zugriff deaktivieren möchten, können Sie den IPMI-Controller jederzeit zur Ausführung von iptables-Befehlen auffordern. Sie können ein ssh-Login skripten, um die Befehle auszuführen, oder Supermicro nach dem Devkit für den BMC fragen und ein neues Image mit einem benutzerdefinierten iptables-Skript erstellen.

AKTUALISIEREN

Ich habe mir unsere Systeme hier noch einmal angesehen und das / conf-Dateisystem ist rw gemountet. Keines der Init-Skripte hat irgendetwas direkt in / conf aufgerufen (was ich sehen konnte), aber es gibt eine crontab-Datei. Also, ich denke, Sie könnten in einem Iptables-Skript kopieren und / conf / crontab bearbeiten, um es in einem geeigneten Intervall aufzurufen. Sie möchten, dass es so schnell wie möglich auf BMC init ausgeführt wird, aber Sie möchten nicht, dass es jede Minute ausgeführt wird. Oder ist es dir egal?


Ich würde gerne ein separates Netzwerk für die Verwaltung haben, aber das wird leider in das Rechenzentrum eines anderen übertragen, und das kann ich nicht. Was das Management angeht, möchte ich eigentlich nur https und ssh.
Curt J. Sampson

Sie werden niemals wollen, dass KVM über LAN übertragen wird?
Daniel Lawson

Sie könnten eine separate Firewall-Einheit vor Ihrem Host im DC haben. Das würde das Problem etwas lösen. Haben Sie Supermicro um Unterstützung gebeten? Ich habe festgestellt, dass sie ziemlich reaktionsschnell sind
Daniel Lawson

Nein, ich brauche kein KVM über LAN, da das BIOS, Grub und der Linux-Kernel alle eine serielle Konsole unterstützen.
Curt J. Sampson

5

Unter Verwendung /conf/crontab, als dlawson wies darauf hin, klingt wie eine gute Idee zu mir. Dadurch kann ich einmal pro Minute ein Skript ausführen, das sicherstellt, dass alles außer http und ssh heruntergefahren wird:

/etc/init.d/cdserver stop
/etc/init.d/fdserver stop
/etc/init.d/cim_sfcb stop
/etc/init.d/webgo stop

Dadurch habe ich immer noch einen Webserver mit passwortbasierter Zugriffskontrolle (ich sehe keine Möglichkeit, Client-Zertifikate überprüfen zu lassen) und wer weiß, welche Sicherheitslücken in der Ferne bestehen. Das Ausschalten, wenn ich es nicht benutze (was die meiste Zeit der Fall ist), scheint eine vernünftige Lösung zu sein. Das Hinzufügen eines Crontab-Eintrags, um ihn alle fünf oder zehn Minuten herunterzufahren, würde die Fälle erfassen, in denen jemand vergisst, ihn herunterzufahren, wenn er fertig ist.

Der ssh-Daemon ist eine Version von Dropbear , die ziemlich stark modifiziert zu sein scheint. Es liest Benutzernamen und Klartext-Passwörter /conf/PMConfig.dat(die auch vom Webserver verwendet werden), meldet einen gültigen Namen und ein gültiges Passwort als Root-Benutzer an und ignoriert die ~/.ssh/authorized_keysDatei. Dieses letzte Problem ist ärgerlich; Sie werden gezwungen, Kennwortanmeldungen zuzulassen, und die Möglichkeit von Hintertüren wird geöffnet, je nachdem, woher die Namen und Kennwörter stammen.

Das ist also das Dilemma, vor dem Sie stehen: Wie sehr vertrauen Sie diesem modifizierten ssh-Daemon, der auf einem System installiert ist, das offensichtlich von sicherheitsnaiven Entwicklern entwickelt wurde? Überhaupt nicht viel, angesichts der Anzahl gebrochener Cruft-Teile, die ich in ihren Shell-Skripten gesehen habe. Es gibt ungewöhnliche Namenskonventionen (/etc/rc?.d/sshd ist ein Symlink zu /etc/init.d/ssh), eine große Menge Code, die offenbar nicht verwendet wird, und Funktionen, die nur im ssh-Startskript enthalten sind, z Die /conf/portcfg_sshDatei und sogar der restartBefehl sind völlig kaputt. (Versuchen Sie nicht, diese zu verwenden. Sshd wird nicht neu gestartet, und Sie werden fertig, es sei denn, Sie haben bereits eine Anmeldung. Wir haben den BMC neu gestartet und mussten ihn erneut flashen.)

Die beste Option, die ich mir vorstellen kann, ist, ssh auf einem alternativen Port mit einem Cron-Job zu starten, wenn man das Ding überhaupt verwenden möchte. Es ist also weniger wahrscheinlich, dass es in einem Portscan erscheint.

Die letzte Komponente sind die IPMI-Netzwerkverwaltungsports. Ich kann nicht sehen, wie ich diese ausschalten kann.


Die meisten Ihrer Bedenken bezüglich Änderungen sind wahrscheinlich kein Problem. Dropbear verwendet pam, das libpamipmi für auth verwendet. Ich habe keine Beweise dafür gesehen, dass es Klartext-Passwörter direkt liest. Libpamipmi wird einen IPMI-Aufruf an den IPMI-Stack senden, und das könnte durchaus das Lesen von Klartext-Passwörtern sein, aber mein Punkt ist, dass es nicht so aussieht, als ob der Dropbear-Daemon vermasselt wurde. Es würde mich jedoch interessieren, ob Sie endgültige Beweise für das Gegenteil haben.
Daniel Lawson

Nun, wir wissen, dass es keine Möglichkeit gibt, a) Schlüssel anstelle von Passwörtern zu verwenden und b) die Passwortauthentifizierung zu deaktivieren.
Curt J. Sampson

4

Eine Sache, die bei der Sicherung eines Supermicro IPMI zu beachten ist, ist der ssh-Server. Ältere Versionen des X8SIL-F IPMI-Codes akzeptierten SSH-Verbindungen, unabhängig davon, welches Kennwort angegeben wurde. Die Software überprüfte dann das Passwort und lehnte die Verbindung ab oder akzeptierte sie. Es gab jedoch ein kurzes Fenster, in dem der SSH-Port für die Weiterleitung erstellt werden konnte. Die Leute bekamen aus diesem Grund Spam- / Missbrauchsbeschwerden für ihre IPMI-IPs . Für das X8SIL-F-Motherboard hat die IPMI-Firmwareversion 2.60 das Problem behoben (möglicherweise wurde sie früher behoben, der Eintrag im Änderungsprotokoll von 2.54 sieht möglicherweise so aus).

Ein zweites Problem ist ein anonymer Benutzer mit einem Standardkennwort. Der anonyme Benutzer scheint in Firmware-Version 2.22 behoben zu sein.


2

Es gibt einen kleinen Trick, um HTTPS für die Webschnittstelle von IPMI zu aktivieren .

Wenn Ihre IPMI-Firmware dies unterstützt (meine 2.04-Firmware für X8DTH-iF unterstützt), können Sie zunächst den HTTPS-Zugriff aktivieren, indem Sie zu Konfiguration -> SSL wechseln, zwei PEM-Dateien (Zertifikat und privater Schlüssel) hochladen und dann manuell Starten Sie Ihr IPMI-Modul neu.

Schließlich können Sie über https: // bmc-ip-or-hostname / auf die IPMI-Weboberfläche zugreifen . Ich kann nicht sagen, dass HTTPS langsamer als HTTP arbeitet.


0

Hat jemand von euch versucht, das Ding mit Iptables zu sichern? Es scheint, dass iptables installiert ist, und ich möchte einen Regelsatz erstellen, der alles akzeptiert, von ein paar vertrauenswürdigen IPs, um es ein bisschen sicherer zu machen ... Aber wie ich oben gelesen habe, werden keine Skripte aus / config gelesen. Ist Crontab die einzige Option? Und was ist, wenn Sie iptables durcheinander gebracht haben?


1
Wie ich bereits sagte, ist es weitaus besser, Ihren IPMI-Controller extern zu sichern: entweder in einem vollständig separaten VLAN oder physischen Netzwerk oder durch eine Grenzfirewall. Dieses spezielle Modell eines IPMI / BMC-Controllers führt zufällig Linux aus, woraufhin Sie die Vorstellung erhalten, dass Sie ihn mit iptables sichern könnten. Die Realität ist jedoch, dass die überwiegende Mehrheit der BMC / IPMI / was auch immer Sie sie nennen, nicht viel oder nichts in Bezug auf die Firewall hat und Sie sich daher nicht darauf verlassen sollten. Sparen Sie sich den Ärger und behandeln Sie Ihr IPMI-Netzwerk als privat, sicher und nicht routingfähig.
Daniel Lawson

1
Ich bin nicht der Meinung, dass es "besser" ist, Ihren IPMI-Controller extern zu sichern. Firewalls und dergleichen sind anfälliger für Sicherheitsfehler als ein Host, der in erster Linie ordnungsgemäß gesichert ist. Wenn Sie jedoch die Möglichkeit haben, ein separates Netzwerk zu verwenden, ist dies eine gute Sache, und bei IPMI-Geräten wie diesem scheint dies fast unabdingbar zu sein.
Curt J. Sampson

0

Wie haben Sie das Dateisystem angesehen? Wenn ich auf Port 22 telnete, kann ich sehen, dass Dropbear ausgeführt wird. Wenn ich jedoch versuche, SSH mit verschiedenen Benutzernamen auszuführen, wird kein Kennwort abgefragt. Ich habe einen neuen Benutzer mit Administratorrechten hinzugefügt, aber SSH antwortet auch nicht für diesen Benutzer. Ich verwende ein Supermicro X7SPA-HF-Motherboard mit einem Winbond Hermon IPMI 2.0-Chip, Firmware-Version 01.29, Erstellungszeit 31.12.2009.


2
Ich habe ssh -v ausgeführt, um zu sehen, was vor sich geht, und festgestellt, dass es sich um einen Versuch zur Authentifizierung mit öffentlichen Schlüsseln handelt. Ich habe es funktioniert, indem ich das deaktiviere.

Ich bin jetzt in der ATEN SMASH-CLP-Systemverwaltungsshell, Version 1.00
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.