web-dev-qa-db-fra.com

Sécuriser un Supermicro IPMI BMC

J'ai récemment acquis une carte mère Supermicro X8DTU-F, qui possède une BMC intégrée, qui exécute essentiellement le système IPMI. Il s'avère être un petit système Linux fonctionnant sur un ARM processeur.

Malheureusement, il gère une charge de bateau de logiciels, dont je n'ai pas besoin, et je n'ai pas la capacité de la mettre derrière un pare-feu. Cependant, je veux la fonctionnalité IPMI. Est-ce que quelqu'un qui a utilisé l'un d'entre eux a des suggestions spécifiques sur la manière de sécuriser la chose? Il botte de ce qui est essentiellement un ROM System, et il ne semble même pas être des crochets pour éteindre l'un des différents serveurs qui gère ....

Je serais également intéressé par la manière dont je pourrais vérifier la liste des noms et mots de passe pouvant être utilisés pour accéder au système via tous les différents services. La valeur par défaut est ADMIN/ADMIN, mais aucun des fichiers de/Conf ou/etc n'a 'admin' en eux, qui me soucie plutôt. Il y a /conf/shadow et /conf/webshadow Fichiers, avec des identifiants "tests" mystérieux, ce qui ne me fait pas me sentir particulièrement confortable non plus.

17
cjs

À l'aide de /conf/crontab, comme l'a souligné Dlawson, sonne comme une excellente idée pour moi. Cela me permet d'exécuter un script une fois par minute qui garantit tout sauf HTTP et SSH est fermé:

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

Cela me laisse toujours avec un serveur Web avec contrôle d'accès basé sur le mot de passe (je ne peux voir aucun moyen de la valider les certificats clients) et qui sait quelles vulnérabilités distantes. L'éteindre lorsque je ne l'utilise pas (ce qui est la plupart du temps) semble être une solution raisonnable; Ajout d'une entrée de crontab pour le couper toutes les cinq ou dix minutes attraperait ces cas où quelqu'un oublie de le fermer quand il est fait.

Le démon SSH est une version de Droppear qui semble être assez modifiée. Il lit les noms d'utilisateur et les mots de passe en plainte à partir de /conf/PMConfig.dat (qui est également utilisé par le serveur Web), enregistre un nom et un mot de passe valides comme utilisateur root et ignore le ~/.ssh/authorized_keys déposer. Ce dernier problème est ennuyeux; Cela vous oblige à autoriser les connexions de mot de passe et ouvre la possibilité de porte-porte-gouttes en fonction de l'endroit où elle reçoit ses noms et mots de passe.

C'est donc le dilemme que vous rencontrez: combien faites-vous vraiment confiance à ce démon SSH modifié installé sur un système assez évidemment conçu par les développeurs de sécurité-naïve? Pas grand chose du tout, compte tenu du nombre de bits cassés de Cruft, j'ai vu dans leurs scripts shell. Il y a des conventions de dénomination inhabituelles (/etc/rc?.d/sshd est un lien symbolique à /etc/init.d/ssh), une quantité énorme de code qui semble être inutilisée et fonctionnalités dans le script de démarrage SSH, telle que les /conf/portcfg_ssh Fichier et même la commande restart est entièrement cassée. (N'essayez pas d'utiliser celles-ci; sshd ne se redémarrera pas et vous serez vissé que si vous avez une connexion existante. Nous avons redémarré le BMC et avons fini par avoir à le refléter.)

La meilleure option que je puisse penser, si on va utiliser la chose du tout, est de démarrer SSH sur un autre port à l'aide d'un travail de cron, il est donc moins susceptible d'apparaître dans un PortScan.

Le composant final est les ports de gestion de réseau IPMI; Je ne vois pas comment les éteindre.

6
cjs

Idéalement, votre réseau de gestion constituerait un réseau différent de votre autre réseau, ou au moins un VLAN différent avec un accès routé limité.

Ces systèmes ne fonctionnent pas vraiment de nombreux services cependant:

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)

(et UDP/623 pour IPMI lui-même)

La plupart d'entre eux sont nécessaires si vous souhaitez effectuer une sorte de gestion à distance. Si vous ne voulez pas faire de la gestion à distance, vous devriez envisager de ne pas activer le contrôleur IPMI ou l'achat d'une carte X9DTU à la place (le -f indique "BMC intégré")

Si vous souhaitez effectuer une gestion complète à distance, vous ne pouvez pas exécuter vos contrôleurs IPMI sur un réseau différent, et vous souhaitez toujours désactiver certains accès, vous pouvez toujours obtenir le contrôleur IPMI pour exécuter des commandes IPTABLES. Vous pouvez script d'un identifiant SSH pour exécuter les commandes ou demander à Supermicro pour le devkit pour le BMC et créer une nouvelle image avec un script IPTables personnalisé.

MISE À JOUR

J'avais un autre regard sur nos systèmes ici et le système de fichiers/Conf est monté RW. Aucun des scripts init n'a rien appelé directement dans/Conf (que je pouvais voir), mais il y a un fichier de crontab. Donc, je suppose que vous pouvez copier dans un script IPTABLES et éditer/Conf/Crontab pour l'appeler à un intervalle approprié. Vous voudrez qu'il soit dirigé dès que possible sur BMC init, mais vous ne voulez pas nécessairement que cela fonctionne chaque minute. Ou peut-être que vous ne vous souciez pas.

6
Daniel Lawson

Une chose à considérer lors de la sécurisation d'un SuperMicro IPMI est le serveur SSH. Les anciennes versions du code IPMI X8SIL-F ont accepté les connexions SSH quel que soit le mot de passe donné. Le logiciel vérifierait ensuite le mot de passe et rejeterait ou accepterait la connexion, mais il y avait une brève fenêtre pour créer des transferts de port SSH. Les gens obtenaient des plaintes de spam/abus pour leurs IPMI IPS à cause de cela . Pour la carte mère X8SIL-F, la version du micrologiciel 2.60 IPMI fixe le problème (il aurait peut-être été corrigé précédemment, l'entrée Changelog de 2,54 semble être utilisée).

Un deuxième problème est un utilisateur anonyme avec un mot de passe par défaut. L'utilisateur anonyme semble être corrigé dans la version 2.22 du micrologiciel.

4
ddrown

Il y a un petit tour pour activer [~ # ~] https [~ # ~] pour interface Web de l'IPMI.

Si votre micrologiciel IPMI prend en charge que (mon micrologiciel 2.04 pour les supports X8DTH-IF), vous pouvez, d'abord, activez l'accès HTTPS en allant à la configuration -> SSL, téléchargeant deux fichiers PEM (certificat et clé privée) et, à la seconde, manuellement. Redémarrez votre module IPMI.

Enfin, vous pouvez accéder à l'interface Web d'IPMI par HTTPS: // BMC-IP-OR-HostName / . Je ne peux pas dire que HTTPS fonctionne plus lentement que http.

2
AntonioK

Comment avez-vous vu le système de fichiers? Si I Telnet au port 22, je peux voir que Drowbear est en cours d'exécution, mais si j'essaie de ssh avec divers nom d'utilisateur, il ne vous invite pas à un mot de passe. J'ai ajouté un nouvel utilisateur avec des privilèges d'administrateur, mais SSH ne répondra pas non plus pour cet utilisateur. J'utilise une carte mère Supermicro X7SPA-HF qui possède une puce Winbond Hermon IPMI 2.0, la révision du micrologiciel 01.29, Time de construction 2009-12-31.

0
anywhere

Avez-vous essayé de sécuriser la chose avec iptables? Il semble que IPTABLES est installé et que je souhaite faire un masse de règles qui nie tout accepte de quelques adresses IP de confiance pour le rendre un peu plus sécurisé ... mais comme je lis au-dessus, aucun script n'est en train de lire/config. Est crontab la seule option? Et que se passe-t-il si vous avez foiré iptables?

0
Bas van den Heuvel