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/shadow
dan /conf/webshadow
file, dengan ID 'tes' misterius di dalamnya, yang tidak membuat saya merasa sangat nyaman juga.
sumber
Jawaban:
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: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_keys
file 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_ssh
berkas dan bahkanrestart
perintah 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.
sumber
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:
(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.
sumber
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.
sumber
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.
sumber
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
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