Niedawno kupiłem płytę główną SuperMicro X8DTU-F, która ma wbudowaną BMC, która w zasadzie obsługuje system IPMI. Okazuje się, że jest to mały system Linux działający na procesorze ARM.
Niestety działa mnóstwo oprogramowania, którego w większości nie potrzebuję i nie mam możliwości umieszczenia go za zaporą ogniową. Chcę jednak funkcji IPMI. Czy ktoś, kto użył jednego z nich, ma jakieś konkretne sugestie, jak zabezpieczyć to urządzenie? Uruchamia się z systemu plików ROM, a nawet nie wydaje się, aby istniały jakieś haki, aby wyłączyć dowolny z obsługiwanych serwerów ...
Byłbym również zainteresowany tym, w jaki sposób mogę zweryfikować listę nazwisk i haseł, których można użyć do uzyskania dostępu do systemu za pośrednictwem wszystkich różnych usług. Domyślnie jest to ADMIN
/ ADMIN
, ale żaden z plików w / conf lub / etc nie ma w nich „ADMIN”, co raczej mnie martwi. Są /conf/shadow
i /conf/webshadow
pliki z tajemniczymi „testowymi” identyfikatorami, co też nie sprawia, że czuję się szczególnie komfortowo.
źródło
Odpowiedzi:
Używanie
/conf/crontab
, jak zauważył Dlawson, wydaje mi się doskonałym pomysłem. To pozwala mi uruchamiać skrypt raz na minutę, który zapewnia wyłączenie wszystkiego oprócz http i ssh:To wciąż pozostawia mi serwer sieciowy z kontrolą dostępu opartą na hasłach (nie widzę sposobu, aby zweryfikował certyfikaty klienta) i kto wie, jakie luki zdalne. Wyłączenie go, gdy go nie używam (przez większość czasu) wydaje się rozsądnym rozwiązaniem; dodanie wpisu crontab w celu wyłączenia go co pięć lub dziesięć minut wychwyciłoby przypadki, w których ktoś zapomniałby go zamknąć, gdy skończy.
Demon ssh to wersja dropbear, która wydaje się dość mocno zmodyfikowana. Odczytuje nazwy użytkowników i hasła w postaci zwykłego tekstu
/conf/PMConfig.dat
(który jest również używany przez serwer WWW), loguje się pod dowolnym prawidłowym nazwiskiem i hasłem jako użytkownik root i ignoruje~/.ssh/authorized_keys
plik. Ten ostatni problem jest denerwujący; zmusza cię do zezwalania na logowanie się hasłem i otwiera możliwość tylnych drzwi w zależności od tego, skąd bierze wszystkie swoje nazwy i hasła.Więc to jest dylemat, przed którym stoisz: na ile naprawdę ufasz temu zmodyfikowanemu demonowi ssh zainstalowanemu w systemie, który został dość wyraźnie zaprojektowany przez naiwnych programistów? Niewiele, biorąc pod uwagę liczbę połamanych kawałków crufta, które widziałem w ich skryptach powłoki. Istnieją nietypowe konwencje nazewnictwa (/etc/rc?.d/sshd to dowiązanie symboliczne do /etc/init.d/ssh), ogromna ilość kodu, który wydaje się nieużywany, oraz funkcje tylko w skrypcie startowym ssh, takie jak
/conf/portcfg_ssh
plik a nawetrestart
polecenia są całkowicie zerwane. (Nie próbuj ich używać; sshd nie uruchomi się ponownie i zostaniesz wkręcony, chyba że masz istniejący login. Ponownie uruchomiliśmy BMC i musieliśmy go ponownie załadować).Najlepszą opcją, o której mogę pomyśleć, jeśli w ogóle zamierzasz korzystać z tej rzeczy, jest uruchomienie ssh na alternatywnym porcie za pomocą zadania cron, więc przynajmniej jest mniej prawdopodobne, że pojawią się w skanerze portów.
Ostatnim elementem są porty zarządzania siecią IPMI; Nie widzę, jak je wyłączyć.
źródło
Idealnie, twoja sieć zarządzania byłaby inną siecią niż twoja inna sieć lub przynajmniej innym VLAN z ograniczonym dostępem do tras.
Te systemy nie obsługują tak wielu usług:
(i UDP / 623 dla samego IPMI)
Większość z nich jest potrzebna, jeśli chcesz wykonać jakiekolwiek zdalne zarządzanie. Jeśli nie chcesz wykonywać zdalnego zarządzania, powinieneś rozważyć całkowite wyłączenie kontrolera IPMI lub zakup płyty X9DTU (-F oznacza „wbudowaną BMC”)
Jeśli chcesz wykonać pełne zdalne zarządzanie, nie możesz uruchomić kontrolerów IPMI w innej sieci i nadal chcesz zablokować pewien dostęp, zawsze możesz poprosić kontroler IPMI o wykonanie poleceń iptables. Możesz wykonać skrypt logowania do ssh w celu wykonania poleceń lub poprosić Supermicro o zestaw devkit dla BMC i zbudować nowy obraz za pomocą niestandardowego skryptu iptables.
AKTUALIZACJA
Po raz kolejny przyjrzałem się naszym systemom, a system plików / conf jest zamontowany rw. Żaden ze skryptów inicjujących nie wywołał niczego bezpośrednio w / conf (co mogłem zobaczyć), ale istnieje plik crontab. Myślę, że możesz skopiować w skrypcie iptables i edytować / conf / crontab, aby wywoływać go w odpowiednich odstępach czasu. Chciałbyś, żeby działał jak najszybciej na BMC init, ale niekoniecznie chcesz, żeby działał co minutę. A może nie obchodzi cię to.
źródło
Jedną rzeczą do rozważenia przy zabezpieczaniu Supermicro IPMI jest serwer ssh. Starsze wersje kodu IPMI X8SIL-F akceptowały połączenia ssh bez względu na podane hasło. Oprogramowanie sprawdzi następnie hasło i odrzuci lub zaakceptuje połączenie, ale pojawiło się krótkie okno do utworzenia portu ssh do przodu. Z tego powodu ludzie otrzymywali skargi na spam / nadużycia dotyczące adresów IP IPMI . W przypadku płyty głównej X8SIL-F wersja oprogramowania wewnętrznego IPMI 2.60 rozwiązała problem (mógł zostać naprawiony wcześniej, wpis w dzienniku zmian 2.54 wygląda na to, że tak może być).
Drugi problem to anonimowy użytkownik z domyślnym hasłem. Wygląda na to, że anonimowy użytkownik został naprawiony w wersji oprogramowania 2.22.
źródło
Jest mała sztuczka, aby włączyć HTTPS dla interfejsu internetowego IPMI.
Jeśli oprogramowanie wewnętrzne IPMI obsługuje to (moje oprogramowanie 2.04 dla X8DTH-iF obsługuje), możesz najpierw włączyć dostęp HTTPS, przechodząc do Konfiguracja -> SSL, przesyłając dwa pliki PEM (certyfikat i klucz prywatny), a po drugie ręcznie zrestartuj moduł IPMI.
Wreszcie można uzyskać dostęp do interfejsu internetowego IPMI za pomocą https: // bmc-ip-or-hostname / . Nie mogę powiedzieć, że HTTPS działa wolniej niż HTTP.
źródło
Czy któryś z was próbował zabezpieczyć to za pomocą iptables? Wygląda na to, że iptables jest zainstalowany i chcę stworzyć zestaw reguł, który odrzuca wszystko, co akceptuje kilka zaufanych adresów IP, aby uczynić je trochę bardziej bezpiecznym ... Ale jak czytam powyżej, żadne skrypty nie są odczytywane z / config. Czy crontab jest jedyną opcją? A co jeśli pomieszałeś iptables?
źródło
Jak obejrzałeś system plików? Jeśli telnet do portu 22, widzę, że dropbear działa, ale jeśli spróbuję SSH z różnymi nazwami użytkowników, nie będzie monitował o hasło. Dodałem nowego użytkownika z uprawnieniami administratora, ale SSH też nie zareaguje na tego użytkownika. Używam płyty głównej Supermicro X7SPA-HF, która ma układ Winbond Hermon IPMI 2.0, wersja oprogramowania 01.29, czas kompilacji 2009-12-31.
źródło