Mengamankan SuperMicro IPMI BMC

17

Saya baru-baru ini mengakuisisi motherboard SuperMicro X8DTU-F, yang memiliki BMC bawaan, yang pada dasarnya menjalankan sistem IPMI. Ternyata menjadi sistem Linux kecil yang berjalan pada prosesor ARM.

Sayangnya, ia menjalankan banyak sekali perangkat lunak, yang sebagian besar tidak saya butuhkan, dan saya tidak memiliki kemampuan untuk meletakkannya di belakang firewall. Namun, saya ingin fungsionalitas IPMI. Apakah ada orang yang menggunakan salah satu dari ini memiliki beberapa saran khusus tentang cara mengamankan barang itu? Ia boot dari apa yang pada dasarnya adalah filesystem ROM, dan sepertinya tidak ada kait untuk mematikan berbagai server yang dijalankannya ....

Saya juga tertarik dengan cara memverifikasi daftar nama dan kata sandi yang dapat digunakan untuk mengakses sistem melalui semua berbagai layanan. Standarnya adalah ADMIN/ ADMIN, tetapi tidak ada file di / conf atau / etc memiliki 'ADMIN' di dalamnya, yang agak membuatku khawatir. Ada /conf/shadowdan /conf/webshadowfile, dengan ID 'tes' misterius di dalamnya, yang tidak membuat saya merasa sangat nyaman juga.

Curt J. Sampson
sumber
Saya belum menemukan korelasi antara konten bayangan, webshadow, dan apa yang sebenarnya pengguna yang valid. Pengguna baru yang ditambahkan melalui manajemen BMC tidak muncul dalam file ini. Lebih lanjut, pengguna "anonim", "test1", "test2" memiliki shell yang tidak ada di sistem file.
Daniel Lawson
2
Juga lihat panduan Dan Farmer di Praktik Terbaik Keamanan IPMI . Dia merilis makalah baru-baru ini yang merinci beberapa masalah keamanan yang signifikan dengan IPMI berjudul ipmi: kereta barang ke neraka .
Stefan Lasiewski
1
Terima kasih atas tautannya yang bagus. Ringkasan singkat masalah keamanan ada di fish2.com/ipmi/itrain-gz.html dan ringkasan yang sangat singkat adalah, "Anda benar-benar kacau." Mendesah.
Curt J. Sampson

Jawaban:

6

Menggunakan /conf/crontab, seperti yang ditunjukkan dlawson, terdengar seperti ide bagus bagi saya. Ini memungkinkan saya menjalankan skrip satu menit sekali yang memastikan semuanya kecuali http dan ssh dimatikan:

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

Itu masih meninggalkan saya dengan server web dengan kontrol akses berbasis kata sandi (saya tidak bisa melihat cara untuk memvalidasi sertifikat klien) dan siapa yang tahu apa kerentanan jarak jauh. Mematikannya ketika saya tidak menggunakannya (yang sebagian besar waktu) tampak seperti solusi yang masuk akal; menambahkan entri crontab untuk mematikannya setiap lima atau sepuluh menit akan menangkap kasus-kasus di mana seseorang lupa untuk mematikannya ketika dia selesai.

Daemon ssh adalah versi dropbear yang tampaknya cukup banyak dimodifikasi. Itu membaca nama pengguna dan kata sandi plaintext /conf/PMConfig.dat(yang juga digunakan oleh server web), mencatat nama dan kata sandi yang sah sebagai pengguna root, dan mengabaikan ~/.ssh/authorized_keysfile tersebut. Masalah terakhir ini menjengkelkan; itu memaksa Anda untuk mengizinkan login kata sandi dan membuka kemungkinan backdoors tergantung dari mana-semua itu mendapatkan nama dan kata sandinya.

Jadi itulah dilema yang Anda hadapi: seberapa besar Anda benar-benar mempercayai daemon ssh yang dimodifikasi ini diinstal pada sistem yang cukup jelas dirancang oleh pengembang naif keamanan? Tidak banyak sama sekali, mengingat jumlah bit yang rusak dari cruft yang saya lihat di skrip shell mereka. Ada konvensi penamaan yang tidak biasa (/etc/rc?.d/sshd adalah symlink ke /etc/init.d/ssh), sejumlah besar kode yang tampaknya tidak digunakan, dan fitur hanya dalam skrip startup ssh, seperti yang /conf/portcfg_sshberkas dan bahkan restartperintah sepenuhnya rusak. (Jangan coba menggunakan ini; sshd tidak akan memulai ulang dan Anda akan kacau kecuali Anda memiliki login yang sudah ada. Kami mem-boot ulang BMC dan akhirnya harus mem-reflash-nya.)

Opsi terbaik yang bisa saya pikirkan, jika seseorang akan menggunakan hal itu sama sekali, adalah untuk memulai ssh pada port alternatif menggunakan pekerjaan cron, jadi setidaknya itu lebih kecil kemungkinannya muncul di portscan.

Komponen terakhir adalah port manajemen jaringan IPMI; Saya tidak bisa melihat cara mematikannya.

Curt J. Sampson
sumber
Sebagian besar kekhawatiran Anda tentang modifikasi mungkin bukan masalah. Dropbear menggunakan pam, yang menggunakan libpamipmi untuk auth - Saya belum melihat bukti bahwa itu benar-benar membaca kata sandi cleartext secara langsung. Libpamipmi akan melakukan panggilan ipmi ke tumpukan ipmi, dan itu mungkin bisa membaca kata sandi cleartext, tetapi maksud saya adalah bahwa itu tidak terlihat seperti daemon dropbear telah dikacaukan. Saya tertarik untuk mendengar bukti definitif yang Anda miliki tentang hal sebaliknya.
Daniel Lawson
Yah, kita tahu sudah rusak karena tidak ada cara untuk a) menggunakan kunci, daripada kata sandi, dan b) menonaktifkan otentikasi kata sandi.
Curt J. Sampson
6

Idealnya, jaringan manajemen Anda akan menjadi jaringan yang berbeda dengan jaringan Anda yang lain, atau setidaknya vlan yang berbeda dengan akses terusan terbatas.

Sistem ini sebenarnya tidak menjalankan banyak layanan:

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)

(dan UDP / 623 untuk IPMI sendiri)

Sebagian besar diperlukan jika Anda ingin melakukan segala jenis manajemen jarak jauh. Jika Anda tidak ingin melakukan manajemen jarak jauh, maka Anda harus mempertimbangkan untuk tidak mengaktifkan pengontrol IPMI sama sekali, atau membeli papan X9DTU sebagai gantinya (-F menunjukkan "BMC bawaan")

Jika Anda ingin melakukan manajemen jarak jauh penuh, tidak dapat menjalankan pengontrol IPMI Anda di jaringan yang berbeda, dan masih ingin menonaktifkan beberapa akses, maka Anda selalu dapat meminta pengontrol IPMI untuk menjalankan perintah iptables. Anda bisa membuat skrip login ssh untuk mengeksekusi perintah, atau meminta Supermicro untuk devkit untuk BMC dan membuat gambar baru dengan skrip iptables khusus.

MEMPERBARUI

Saya telah melihat lagi sistem kami di sini, dan sistem file / conf sudah terpasang rw. Tidak ada satu pun skrip init yang memanggil sesuatu secara langsung di / conf (yang bisa saya lihat), tetapi ada file crontab. Jadi, saya kira Anda bisa menyalin dalam skrip iptables, dan mengedit / conf / crontab untuk menyebutnya pada interval yang sesuai. Anda ingin menjalankannya ASAP pada BMC init, tetapi Anda tidak perlu membuatnya berjalan setiap menit. Atau mungkin Anda tidak peduli.

Daniel Lawson
sumber
Saya ingin memiliki jaringan terpisah untuk manajemen, tetapi sayangnya ini masuk ke pusat data orang lain, dan saya tidak bisa memilikinya. Adapun manajemen, yang saya inginkan adalah https dan ssh.
Curt J. Sampson
Anda tidak akan pernah menginginkan KVM daripada lan?
Daniel Lawson
Anda dapat memiliki unit firewall terpisah di depan host Anda di DC. Itu agak akan menyelesaikan masalah. Sudahkah Anda meminta bantuan Supermicro untuk hal ini? Saya telah menemukan mereka cukup responsif
Daniel Lawson
Tidak. Saya tidak perlu untuk KVM melalui LAN karena BIOS, Grub dan kernel Linux semuanya mendukung konsol serial.
Curt J. Sampson
4

Satu hal yang perlu dipertimbangkan ketika mengamankan IPM Supermicro adalah server ssh. Versi lama dari kode IPMI X8SIL-F menerima koneksi ssh, apa pun kata sandi yang diberikan. Perangkat lunak kemudian akan memeriksa kata sandi dan menolak atau menerima koneksi, tetapi ada jendela singkat untuk membuat ssh port ke depan. Orang-orang mendapatkan keluhan spam / penyalahgunaan untuk IPMI IP mereka karena hal ini . Untuk motherboard X8SIL-F, Versi 2.60 IPMI firmware memperbaiki masalah (mungkin sudah diperbaiki sebelumnya, entri changelog 2.54 sepertinya seperti itu).

Masalah kedua adalah pengguna anonim dengan kata sandi default. Pengguna anonim tampaknya diperbaiki di firmware versi 2.22.

ddrown
sumber
2

Ada sedikit trik untuk mengaktifkan HTTPS untuk antarmuka web IPMI.

Jika firmware IPMI Anda mendukungnya (firmware 2.04 saya untuk X8DTH-iF mendukung), Anda dapat, pada awalnya, mengaktifkan akses HTTPS dengan masuk ke Konfigurasi -> SSL, mengunggah dua file PEM (sertifikat dan kunci pribadi) dan, kedua, secara manual reboot modul IPMI Anda.

Akhirnya, Anda dapat mengakses antarmuka web IPMI dengan https: // bmc-ip-or-hostname / . Saya tidak bisa mengatakan bahwa HTTPS bekerja lebih lambat daripada HTTP.

AntonioK
sumber
0

Adakah di antara Anda yang mencoba mengamankan barang itu dengan iptables? Tampaknya iptables terinstal, dan saya ingin membuat aturan yang menolak segala sesuatu menerima dari beberapa IP tepercaya untuk membuatnya sedikit lebih aman ... Tapi ketika saya membaca di atas tidak ada skrip yang sedang dibaca dari / config. Apakah crontab satu-satunya pilihan? Dan bagaimana jika Anda mengacaukan iptables?


sumber
1
Seperti yang saya katakan sebelumnya, jauh lebih baik untuk mengamankan pengontrol IPMI Anda secara eksternal: baik dengan memilikinya di vlan yang sepenuhnya terpisah atau jaringan fisik, atau diamankan oleh firewall perbatasan. Model khusus pengontrol IPMI / BMC ini menjalankan linux, yang kemudian meminta Anda dengan gagasan bahwa Anda dapat mengamankannya dengan iptables. Kenyataannya adalah, bagaimanapun, bahwa sebagian besar BMC / IPMI / apa pun yang mereka miliki tidak memiliki banyak, atau apa pun, dalam cara firewall, dan karenanya Anda tidak harus bergantung padanya. Selamatkan diri Anda dari kerepotan dan perlakukan jaringan IPMI Anda sebagai pribadi, aman, dan tanpa hambatan.
Daniel Lawson
1
Saya tidak setuju bahwa "lebih baik" untuk mengamankan pengontrol IPMI Anda secara eksternal; firewall dan sejenisnya lebih rentan terhadap kegagalan keamanan daripada host yang diamankan dengan benar sejak awal. Namun, jika Anda memiliki kemampuan untuk menggunakan jaringan yang terpisah, itu adalah hal yang baik, dan dalam hal perangkat IPMI seperti ini, tampaknya hampir penting.
Curt J. Sampson
0

Bagaimana Anda melihat sistem file? Jika saya telnet ke port 22, saya dapat melihat dropbear berjalan, tetapi jika saya mencoba SSH dengan berbagai nama pengguna, itu tidak meminta kata sandi. Saya telah menambahkan pengguna baru dengan hak istimewa Administrator, tetapi SSH juga tidak akan merespons untuk pengguna itu. Saya menggunakan motherboard Supermicro X7SPA-HF yang memiliki chip Winbond Hermon IPMI 2.0, revisi firmware 01.29, waktu pembuatan 2009-12-31.


sumber
2
Saya melakukan ssh -v, untuk melihat apa yang sedang terjadi, melihat bahwa ia mencoba Otentikasi Kunci Publik. Saya berhasil dengan menonaktifkan itu.
Saya sekarang di ATEN SMASH-CLP System Management Shell, versi 1.00