Solusi 1:
Tidak ada yang istimewa tentang menambal Ubuntu vs. Windows, RHEL, CentOS, SuSE, debian, dll.
Sikap dasar yang harus Anda miliki saat merancang prosedur tambalan adalah menganggap sesuatu akan istirahat.
Beberapa pedoman dasar yang cenderung saya gunakan saat merancang penyiapan tambalan adalah:
- Selalu gunakan sistem lokal untuk memusatkan secara internal ke jaringan Anda tempat tambalan dipasang
Ini mungkin termasuk menggunakan WSUS, atau mirror dari <your_os_here>
ke mesin manajemen tambalan internal. Lebih disukai yang dapat melakukan kueri secara terpusat dan memberi tahu Anda status tambalan yang diinstal pada masing-masing mesin Anda.
- Pra-tahap instalasi - jika memungkinkan - pada mesin.
Jika memungkinkan, saat tambalan keluar, minta server pusat menyalinnya ke masing-masing mesin. Ini benar-benar menghemat waktu sehingga Anda tidak perlu menunggu mereka mengunduh DAN memasang, Anda hanya perlu memulai pemasangan selama jendela tambalan.
- Dapatkan jendela pemadaman untuk memasang tambalan, Anda mungkin harus memulai ulang, dan sesuatu mungkin akan rusak. Pastikan pemegang saham untuk sistem tersebut mengetahui bahwa ada tambalan yang diterapkan. Bersiaplah untuk panggilan "ini" tidak berfungsi.
Sesuai dengan teori dasar saya bahwa tambalan merusak banyak hal, pastikan Anda memiliki jendela pemadaman untuk menerapkan tambalan cukup lama untuk memecahkan masalah kritis, dan mungkin mengembalikan tambalan. Anda tidak perlu meminta orang yang duduk di sana menguji setelah tambalan. Secara pribadi saya sangat bergantung pada sistem pemantauan saya untuk memberi tahu saya bahwa semuanya berfungsi pada tingkat paling minimum yang dapat kami lakukan. Tetapi juga bersiaplah untuk masalah kecil yang mengganggu untuk dipanggil saat orang mulai bekerja. Anda harus selalu memiliki seseorang yang dijadwalkan untuk siap menjawab telepon - sebaiknya bukan pria yang bangun sampai jam 3 pagi untuk menambal kotak.
- otomatiskan sebanyak mungkin
Seperti semua hal lain di TI, skrip, skrip, lalu skrip lagi. Buat skrip pengunduhan paket, mulai instalasi, mirror. Pada dasarnya Anda ingin mengubah jendela tambalan menjadi tugas mengasuh bayi yang hanya membutuhkan manusia di sana jika terjadi kerusakan.
- Miliki beberapa jendela setiap bulan
Ini memberi Anda kemampuan untuk tidak menambal beberapa server jika karena alasan apa pun mereka tidak dapat ditambal pada "malam yang ditentukan". Jika Anda tidak dapat melakukannya pada malam 1, minta mereka gratis pada malam 2. Juga memungkinkan Anda menjaga jumlah server yang ditambal pada saat yang sama tetap waras.
Yang paling penting mengikuti tambalan! Jika tidak, Anda akan mendapati diri Anda harus melakukan jendela tambalan 10+ jam yang sangat besar hanya untuk kembali ke titik di mana Anda terjebak. Memperkenalkan lebih banyak poin di mana ada kesalahan, dan membuat pencarian patch mana yang menyebabkan dan masalah menjadi jauh lebih sulit.
Bagian lain dari masalah ini adalah, mengikuti tambalan adalah 'hal yang baik', tetapi tambalan dirilis hampir setiap hari. Berapa banyak pemadaman terjadwal yang harus dilakukan seseorang jika ada tambalan keamanan baru yang tersedia setiap hari?
Menambal server sebulan sekali atau sebulan sekali adalah - IMHO - tujuan yang sangat dapat dicapai, dan dapat diterima. Lebih dari itu, dan Anda akan terus menambal server, apalagi dan Anda mulai masuk ke situasi di mana Anda memiliki ratusan tambalan yang perlu diterapkan per server.
Sejauh berapa banyak jendela yang Anda butuhkan sebulan? Itu tergantung pada lingkungan Anda. Berapa banyak server yang Anda miliki? Berapa waktu aktif yang diperlukan untuk server Anda?
Lingkungan yang lebih kecil berukuran 9x5 mungkin dapat lolos dengan satu jendela tambalan dalam sebulan. Toko besar 24x7 mungkin membutuhkan dua. Sangat besar 24x7x365 mungkin memerlukan jendela bergulir setiap minggu untuk memiliki kumpulan server yang berbeda yang ditambal setiap minggu.
Temukan frekuensi yang sesuai untuk Anda dan lingkungan Anda.
Satu hal yang perlu diingat adalah bahwa 100% up to date adalah hal yang tidak mungkin tujuan yang ingin dicapai - jangan biarkan departemen keamanan Anda mengatakan sebaliknya. Lakukan yang terbaik, jangan ketinggalan terlalu jauh.
Solusi 2:
Yang Harus Dilakukan:
- Ambil Cadangan
- Pastikan ini adalah cadangan yang dapat dipulihkan (walaupun, keduanya adalah poin umum)
- Cobalah untuk mengalihkan lalu lintas dari kotak produksi saat Anda meningkatkan versi.
- Cobalah untuk memiliki metode akses out-of-band jika terjadi kesalahan, KVM, konsol serial, akses Lokal, atau tangan jarak jauh.
- Uji di satu server, lalu pastikan semuanya berfungsi, sebelum menerapkan pembaruan ke lebih banyak server
- Gunakan boneka jika Anda bisa untuk memastikan nomor versi sama di beberapa server. (Anda juga dapat menggunakannya untuk memaksakan peningkatan)
- Pada server pengujian, bedakan versi file konfigurasi dengan yang baru (pembaruan diinstal), dan pastikan tidak ada yang akan merusak banyak hal. Sepertinya saya ingat dpkg bertanya sebelum menginstal versi baru yang berbeda dari versi yang diinstal saat ini.
Hal yang harus dihindari:
- Melakukan pembaruan di tengah hari, atau pukul 09:00 di hari Senin pagi, atau pukul 5 sore di hari Jumat sore! (terima kasih @3influence!)
- Memperbarui MySQL pada server database yang sangat besar (memulai ulang bisa memakan waktu lama)
- Mengerjakan semua server Anda sekaligus (terutama kernel)
- Melakukan apa pun yang dapat mengubah /etc/networks (karena Anda dapat kehilangan konektivitas)
- Pembaruan otomatis yang dapat melakukan hal di atas tanpa Anda harus memeriksa semuanya baik-baik saja.
Solusi 3:
Hal lain yang perlu diperhatikan:Jika Anda terbiasa dengan Windows, Anda akan terkejut bahwa sebagian besar pembaruan Linux tidak memerlukan downtime atau reboot. Beberapa melakukannya, seperti pembaruan kernel. Namun pembaruan yang memerlukan booting ulang atau waktu henti biasanya ditandai demikian, dan dapat ditangani dengan jadwal terpisah.
Solusi 4:
Semua mesin Ubuntu kami menjalankan rilis LTS.
Kami baru saja menginstal semua pembaruan secara otomatis - tentu saja ini bukan "praktik terbaik", tetapi kami adalah toko yang relatif kecil dan tidak memiliki lingkungan pengujian/dev/produksi untuk setiap layanan. Pembaruan LTS umumnya teruji dengan cukup baik dan invasif minimal.
Memutakhirkan ke rilis baru jelas sedikit lebih rumit.
Solusi 5:
Kami menangani pembaruan dengan cara berikut untuk sistem LTS ubuntu:
- Pertahankan rangkaian uji penerimaan yang memeriksa semua jalur penting dalam perangkat lunak kami
- Instal pemutakhiran keamanan tanpa pengawasan pada pukul 4 pagi setiap pagi dan segera jalankan tes penerimaan. Jika ada yang gagal, seorang insinyur dipanggil dan memiliki banyak waktu untuk memperbaiki sesuatu atau memutar kembali sebelum jam 9 pagi. Sejauh ini hanya terjadi dua kali dalam lima tahun - LTS teruji dengan baik dan stabil.
- Kami secara otomatis men-deploy ulang seluruh infrastruktur kami setiap minggu (di digitalocean) dengan penerapan biru/hijau, yang mempertahankan semua paket pada versi terbarunya. Jika penerapan baru gagal dalam uji penerimaan, penerapan akan ditangguhkan hingga teknisi dapat melakukan debug masalah.
Langkah logis berikutnya bagi kami adalah menghilangkan informasi sesi dalam memori sehingga kami dapat dengan mudah menerapkan ulang infrastruktur setiap hari atau bahkan beberapa kali per hari tanpa memengaruhi pelanggan dan menghilangkan langkah (2).
Pendekatan ini memerlukan perawatan rendah dan sepenuhnya menghindari masa pemeliharaan.