
Setiap sistem adalah kompromi antara keamanan dan kegunaan.
Dalam NAS yang dibangun , ada masalah serius: tidak mungkin untuk reboot sistem tanpa berada di tempat, yang mengurangi tingkat ketersediaan data.
Masalah ini tidak kritis, sampai saat mereka mulai mematikan listrik darurat: selama tiga bulan, dua kali selama beberapa jam. UPS dirancang untuk malfungsi jangka pendek dan tidak seharusnya bekerja dengan baterai selama lebih dari setengah jam (walaupun sebenarnya sekitar satu jam), dan dengan setiap shutdown seperti itu, untuk menghidupkan kembali sistem, saya harus pergi ke kota lain.
Berkat petunjuk dari ValdikSS , masalah ini telah diatasi. Tapi ...

Saya membutuhkan ikatan antarmuka dan penguncian SSH jarak jauh. Dan saya tidak menemukan manual yang dapat dilakukan segera sehingga berfungsi seperti yang saya butuhkan.
Oleh karena itu, saya membawa versi solusi saya dengan ikatan dan IP dinamis, di mana sistem dapat dibuka, baik secara lokal maupun jarak jauh.
Saya mengingatkan Anda bahwa untuk melakukan pengaturan ini, Anda harus memiliki akses fisik lokal ke NAS dan kemampuan boot cadangan.
Ikatan di initramfs
Karena, di NAS, dua antarmuka digabungkan menjadi satu saluran, diputuskan untuk juga melakukan ini saat boot.
Dari pertanyaan "Menggunakan NFS-root dengan antarmuka terikat" Saya mengambil skrip. Artikel "Cara mengelola ikatan linux tanpa ifenslave menggunakan sysfs" membantu mengatur ikatan.
Pertama, Anda perlu memasukkan modul dalam initramfs yang digunakan untuk mengoperasikan jaringan. Ini dilakukan dengan perintah berikut:
while read m _; do /sbin/modinfo -F filename "$m"; done </proc/modules | sed -nr "s@^/lib/modules/`uname -r`/kernel/drivers/net(/.*)?/([^/]+)\.ko\$@\2@p" >> /etc/initramfs-tools/modules
Sekarang salin kedua skrip ke /etc/initramfs-tools/scripts/
.
Yang pertama diperlukan untuk meningkatkan antarmuka dalam ikatan:
/ etc / initramfs-tools / scripts / init-premount / 00_bonding_init Yang kedua adalah untuk menonaktifkan antarmuka ikatan saat memuat berlanjut:
/ etc / initramfs-tools / scripts / init-bottom / iface_down Jika ini tidak dilakukan, jaringan tidak akan berfungsi setelah booting.
Jangan lupa untuk memberi izin pada skrip untuk dieksekusi:
chmod +x /etc/initramfs-tools/scripts/init-premount/00_bonding_init /etc/initramfs-tools/scripts/init-bottom/iface_down
Tetap hanya untuk mengatur antarmuka yang akan dimasukkan dalam ikatan dan parameter untuk mendapatkan alamat.
Alamat tersebut akan diperoleh melalui DHCP, karena Bonding akan memiliki MAC yang sama dengan setelah boot, karena router akan mengeluarkan IP tetap dan meneruskan port.
Saya mendapatkan antarmuka secara otomatis dari mereka yang termasuk dalam ikatan bond0
saat NAS sedang berjalan:
sed -i "s/\(GRUB_CMDLINE_LINUX_DEFAULT=\)\"\(.*\)\"/\1\"\2 $(echo -n ip=:::::bond0:dhcp bondslaves=$(sed -e 's/ /,/' /sys/class/net/bond0/bonding/slaves))\"/" /etc/default/grub
Akhirnya, perbarui konfigurasi GRUB dan gambar initramfs:
update-grub update-initramfs -u -k $(uname -r)
Itu saja. Jika semuanya dikonfigurasi dengan benar, setelah me-reboot dan memulai skrip startup dalam initrmafs, ping pada IP NAS akan hilang, meskipun faktanya OS belum dimuat.
Saya perhatikan bahwa pengaturan ikatan di Dracut menjadi lebih mudah, karena sudah ada skrip dalam pengiriman .
Server SSH di initramfs
Instal paket untuk mengaktifkan Dropbear SSH di initramfs:
apt-get install dropbear-initramfs
Dropbear SSH akan dimasukkan dalam initrmafs secara otomatis, dan itu akan mulai jika setidaknya satu antarmuka jaringan dengan alamat IP dinaikkan pada tahap awal booting.
Setelah itu, konversikan kunci Dropbear ke format OpenSSH dan tutup dengan kata sandi:
/usr/lib/dropbear/dropbearconvert dropbear openssh \ /etc/dropbear/dropbear_rsa_host_key \ id_rsa dropbearkey -y -f /etc/dropbear/dropbear_rsa_host_key | \ grep "^ssh-rsa " > id_rsa.pub ssh-keygen -p -f id_rsa
Kunci id_rsa
ke mesin yang dengannya pembuka kunci akan dilakukan. Saya akan berasumsi bahwa itu akan disalin ke ~/.ssh/dropbear
.
Di /etc/dropbear-initramfs/authorized_keys
, sidik jari kunci dan parameter untuk setiap kunci harus ditentukan.
Untuk saat ini, tambahkan saja sidik jari dari satu tombol, dan Anda perlu menjalankan perintah berikut:
echo 'no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="/bin/unlock"' $(cat id_rsa.pub) >> /etc/dropbear-initramfs/authorized_keys
Tidak diperlukan pembungkus yang disebutkan dalam artikel, /bin/unlock
- skrip sistem (cryptroot-unlock).
Inilah yang akan terlihat pada /etc/dropbear-initramfs/authorized_keys
pada akhirnya:
no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="/bin/unlock" ssh-rsa AAAA...XDa root@nas
Perbarui gambar konfigurasi dan initramfs GRUB dan reboot:
update-grub update-initramfs -u -k $(uname -r) reboot
Dari mesin tempat Anda menyalin kunci, sekarang mungkin untuk terhubung ke NAS dan membuka kunci:
$ ssh -i .ssh/dropbear/id_rsa_initram -o UserKnownHostsFile=.ssh/dropbear/known_hosts root@nas.NAS.cloudns.cc Enter passphrase for key '.ssh/dropbear/id_rsa_initram': X11 forwarding request failed on channel 0 Please unlock disk root_crypt1 (/dev/disk/by-id/ata-Samsung_SSD_850_PRO_256GB-part3):
Setelah itu, konsol akan terus mendapatkan kesalahan tentang tidak adanya argumen ( ash: -gt: argument expected
), tetapi membuka kunci akan hilang. Ini adalah kesalahan dalam skrip pembuka kunci sistem yang tidak memengaruhi apa pun (kesalahan diperbaiki dengan mudah, tetapi pembungkusnya tidak menyembuhkannya).
Rincian lebih lanjut dapat ditemukan di artikel ini:
Debugging
Untuk debugging, Anda dapat memasukkan panggilan ke /bin/sh
dalam skrip 00_bonding_init
setelah:
case $1 in prereqs) echo "${PREREQS}"; exit 0;; esac
Ketika masalah ikatan diselesaikan, ganti command="/bin/unlock"
dengan command="/bin/sh"
di authorized_keys
.
Setelah terhubung melalui SSH, Anda akan disajikan dengan shell yang dapat Anda gunakan untuk debugging.