Protezione di un BMC SuperMicro IPMI


17

Di recente ho acquistato una scheda madre SuperMicro X8DTU-F, che ha un BMC integrato, che fondamentalmente gestisce il sistema IPMI. Risulta essere un piccolo sistema Linux in esecuzione su un processore ARM.

Sfortunatamente, sta eseguendo un carico di software, molti dei quali non mi servono e non ho la possibilità di metterlo dietro un firewall. Tuttavia, voglio la funzionalità IPMI. Qualcuno che ha usato uno di questi ha alcuni suggerimenti specifici su come proteggere la cosa? Si avvia da quello che è essenzialmente un filesystem ROM e non sembra nemmeno esserci alcun gancio per spegnere uno dei vari server che esegue ....

Sarei anche interessato a come potrei verificare l'elenco di nomi e password che possono essere utilizzati per accedere al sistema attraverso tutti i vari servizi. Il valore predefinito è ADMIN/ ADMIN, ma nessuno dei file in / conf o / etc contiene 'ADMIN', il che mi preoccupa piuttosto. Ci sono /conf/shadowe /conf/webshadowfile, con misteriosi ID "test", che non mi fanno sentire particolarmente a mio agio.


Devo ancora trovare una correlazione tra i contenuti di shadow, webshadow e quelli che sono effettivamente validi utenti. I nuovi utenti aggiunti tramite la gestione BMC non vengono visualizzati in questi file. Inoltre, gli utenti "anonimo", "test1", "test2" hanno una shell che non esiste sul filesystem.
Daniel Lawson,

2
Vedi anche la guida di Dan Farmer su Best practice sulla sicurezza IPMI . Ha pubblicato un recente articolo in cui sono dettagliati alcuni importanti problemi di sicurezza con IPMI dal titolo ipmi: il treno merci per l'inferno .
Stefan Lasiewski,

1
Grazie per l'ottimo link. Il breve riassunto dei problemi di sicurezza è su fish2.com/ipmi/itrain-gz.html e il sommario molto breve è "sei completamente fregato". Sospiro.
Curt J. Sampson,

Risposte:


6

L'uso /conf/crontab, come ha sottolineato Dlawson, mi sembra un'ottima idea. Questo mi permette di eseguire uno script una volta al minuto che assicura che tutto tranne http e ssh sia chiuso:

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

Ciò mi lascia ancora con un server Web con controllo degli accessi basato su password (non riesco a vedere come convalidare i certificati client) e chissà quali vulnerabilità remote. Disattivarlo quando non lo sto usando (che è il più delle volte) sembra una soluzione ragionevole; l'aggiunta di una voce crontab per spegnerlo ogni cinque o dieci minuti catturerebbe quei casi in cui qualcuno si dimentica di spegnerlo quando ha finito.

Il demone ssh è una versione di dropbear che sembra essere stata modificata in modo abbastanza pesante. Legge nomi utente e password in chiaro /conf/PMConfig.dat(utilizzati anche dal server Web), registra qualsiasi nome e password validi come utente root e ignora il ~/.ssh/authorized_keysfile. Quest'ultimo problema è fastidioso; ti obbliga a consentire gli accessi con password e apre la possibilità di backdoor a seconda di dove ottiene tutti i nomi e le password.

Quindi questo è il dilemma che affronti: quanto ti fidi davvero di questo demone ssh modificato installato su un sistema che è stato ovviamente progettato dagli sviluppatori ingenui? Non molto, dato il numero di frammenti di cruft che ho visto nei loro script di shell. Esistono convenzioni di denominazione insolite (/etc/rc?.d/sshd è un collegamento simbolico a /etc/init.d/ssh), un'enorme quantità di codice che sembra essere inutilizzato e funzionalità solo nello script di avvio di ssh, come il /conf/portcfg_sshfile e persino il restartcomando sono completamente rotti. (Non provare a usarli; sshd non si riavvierà e sarai fregato a meno che tu non abbia un login esistente. Abbiamo riavviato il BMC e abbiamo finito per doverlo rifare.)

L'opzione migliore che mi viene in mente, se si vuole usare la cosa, è avviare ssh su una porta alternativa usando un lavoro cron, quindi almeno è meno probabile che appaia in un portcan.

Il componente finale sono le porte di gestione della rete IPMI; Non riesco a vedere come disattivarli.


La maggior parte delle preoccupazioni relative alle modifiche non è probabilmente un problema. Dropbear usa pam, che usa libpamipmi per auth - Non ho visto alcuna prova che legga direttamente le password in chiaro. Libpamipmi effettuerà una chiamata ipmi allo stack ipmi, e questo potrebbe benissimo leggere password in chiaro, ma il mio punto è che non sembra che il demone dropbear sia stato rovinato. Sarei comunque interessato a ricevere qualsiasi prova definitiva al contrario.
Daniel Lawson,

Bene, sappiamo che è stato risolto il fatto che non c'è modo di a) usare le chiavi, piuttosto che le password, e b) disabilitare l'autenticazione della password.
Curt J. Sampson,

6

Idealmente, la tua rete di gestione sarebbe una rete diversa dall'altra tua rete, o almeno un vlan diverso con accesso indirizzato limitato.

Questi sistemi non eseguono però molti servizi:

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)

(e UDP / 623 per IPMI stesso)

La maggior parte di questi sono necessari se si desidera eseguire qualsiasi tipo di gestione remota. Se non si desidera eseguire la gestione remota, è consigliabile non abilitare affatto il controller IPMI o acquistare una scheda X9DTU (-F indica "BMC incorporato")

Se si desidera eseguire la gestione remota completa, non è possibile eseguire i controller IPMI su una rete diversa e si desidera comunque disabilitare un po 'di accesso, è sempre possibile ottenere il controller IPMI per eseguire i comandi iptables. È possibile eseguire lo script di un login ssh per eseguire i comandi o chiedere a Supermicro il devkit per BMC e creare una nuova immagine con uno script iptables personalizzato.

AGGIORNARE

Ho dato un'altra occhiata ai nostri sistemi qui, e il filesystem / conf è montato rw. Nessuno degli script init ha chiamato qualcosa direttamente in / conf (che ho potuto vedere), ma c'è un file crontab. Quindi, immagino che potresti copiare in uno script iptables e modificare / conf / crontab per chiamarlo a un intervallo adeguato. Vorresti che fosse eseguito APPENA POSSIBILE su init BMC, ma non vuoi necessariamente che funzioni ogni minuto. O forse non ti interessa.


Mi piacerebbe avere una rete separata per la gestione, ma sfortunatamente questo sta andando nel data center di qualcun altro, e non posso averlo. Per quanto riguarda la gestione, tutto ciò che voglio davvero è https e ssh.
Curt J. Sampson,

Non vorrai mai, mai KVM su lan?
Daniel Lawson,

Potresti avere un'unità firewall separata di fronte al tuo host al DC. Ciò risolverebbe in qualche modo il problema. Hai chiesto supporto a Supermicro per assistenza in merito? Li ho trovati abbastanza reattivi
Daniel Lawson,

No. Non ho bisogno di KVM su LAN poiché BIOS, Grub e il kernel Linux supportano tutti una console seriale.
Curt J. Sampson,

4

Una cosa da considerare quando si protegge un IPMI Supermicro è il server SSH. Le versioni precedenti del codice IPMI X8SIL-F accettano connessioni ssh, indipendentemente dalla password fornita. Il software controllava quindi la password e rifiutava o accettava la connessione, ma c'era una breve finestra per creare i port forward di ssh. A causa di ciò, le persone ricevevano reclami di spam / abuso per i loro IP IPMI . Per la scheda madre X8SIL-F, la versione del firmware IPMI 2.60 ha risolto il problema (potrebbe essere stato risolto in precedenza, la voce del log delle modifiche di 2.54 sembra che potrebbe essere).

Un secondo problema è un utente anonimo con una password predefinita. L'utente anonimo sembra essere stato corretto nella versione del firmware 2.22.


2

C'è un piccolo trucco per abilitare HTTPS per l'interfaccia web di IPMI.

Se il tuo firmware IPMI lo supporta (il mio firmware 2.04 per X8DTH-iF supporta), potresti inizialmente abilitare l'accesso HTTPS andando su Configurazione -> SSL, caricando due file PEM (certificato e chiave privata) e, in secondo luogo, manualmente riavviare il modulo IPMI.

Infine, è possibile accedere all'interfaccia Web di IPMI tramite https: // bmc-ip-o-hostname / . Non posso dire che HTTPS funzioni più lentamente di HTTP.


0

Qualcuno di voi ha provato a proteggere la cosa con iptables? Sembra che iptables sia installato e voglio creare un set di regole che neghi che tutto accetti da alcuni IP affidabili per renderlo un po 'più sicuro ... Ma come ho letto sopra non vengono letti script da / config. Crontab è l'unica opzione? E se avessi incasinato iptables?


1
Come ho detto prima, è molto meglio proteggere il controller IPMI esternamente: disponendolo su una rete vlan o fisica completamente separata, oppure protetto da un firewall di confine. Questo particolare modello di controller IPMI / BMC esegue Linux, il che ti spinge all'idea che potresti proteggerlo con iptables. La realtà è, tuttavia, che la stragrande maggioranza di BMC / IPMI / tutti loro non hanno molto, o niente, in termini di firewalling, e quindi non si dovrebbe fare affidamento su di esso. Salva te stesso fastidio e tratta la tua rete IPMI come privata, protetta e non indirizzata.
Daniel Lawson,

1
Non sono d'accordo sul fatto che sia "migliore" proteggere esternamente il controller IPMI; i firewall e simili sono più inclini a fallimenti di sicurezza rispetto a un host che è adeguatamente protetto in primo luogo. Tuttavia, se hai la possibilità di utilizzare una rete separata, è una buona cosa, e nel caso di dispositivi IPMI come questo, sembra essere quasi essenziale.
Curt J. Sampson,

0

Come hai visto il file system? Se telnet alla porta 22, posso vedere dropbear in esecuzione, ma se provo a SSH con vari nomi utente non richiede una password. Ho aggiunto un nuovo utente con privilegi di amministratore, ma SSH non risponderà neanche per quell'utente. Sto usando una scheda madre Supermicro X7SPA-HF che ha un chip Winbond Hermon IPMI 2.0, revisione firmware 01.29, tempo di costruzione 2009-12-31.


2
Ho fatto ssh -v, per vedere cosa stava succedendo, ho visto che stava tentando l'autenticazione con chiave pubblica. L'ho fatto funzionare disabilitandolo.

Ora sono in ATEN SMASH-CLP System Management Shell, versione 1.00
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.