Saya berpikir tentang meletakkan seluruh server linux saya di bawah kontrol versi menggunakan git. Alasan di baliknya adalah bahwa itu mungkin cara termudah untuk mendeteksi modifikasi / rootkit berbahaya. Yang menurut saya naif diperlukan untuk memeriksa integritas sistem: Pasang partisi linux setiap minggu atau lebih dengan menggunakan sistem penyelamatan, periksa apakah repositori git masih belum dituntaskan dan kemudian keluarkan status git untuk mendeteksi segala perubahan yang dilakukan pada sistem .
Terlepas dari pemborosan yang jelas dalam ruang disk, apakah ada efek samping negatif lainnya?
Apakah ini ide yang benar-benar gila?
Apakah ini cara aman untuk memeriksa rootkit karena saya kemungkinan besar harus setidaknya mengecualikan / dev dan / proc?
Jawaban:
Itu adalah "Ide Buruk" (tm). Selain dari semua yang lain, repositori Anda akan berjalan lambat karena semua heck, dan semakin buruk karena setiap revisi disimpan.
Coba manajemen terpusat, seperti boneka / cfengine / chef. Itu akan menjaga hal-hal seperti yang Anda harapkan, dan mengembalikan perubahan yang tidak terduga.
Gabungkan dengan sesuatu seperti iwatch untuk mendapatkan email dari perubahan file yang tidak sah.
Gabungkan lebih lanjut dengan file rpm / deb jika perlu untuk meluncurkan aplikasi khusus.
Lempar sesuatu seperti rkhunter atau chkrootkit sekarang dan kemudian untuk tendangan dan Anda harus baik untuk pergi.
Pekerjaan selesai.
sumber
Alternatif lain adalah dengan mengatur tripwire , yang merupakan perangkat lunak GPL yang melacak semua file penting di sistem Anda dan menentukan yang telah berubah dengan cara yang Anda tentukan tidak dapat diterima. Perubahan dapat didefinisikan sesederhana mtime, melalui nomor inode, sampai ke checksum yang kuat secara kriptografis.
Dibutuhkan beberapa pengaturan dan penyetelan jika Anda tidak ingin mendapatkan banyak laporan setiap malam tentang perubahan file
/var/run
, perubahan dalam file klien DHCP/etc
, dan sejenisnya, tetapi jika Anda memang mengalami masalah, itu bisa memang sangat membantu.Database properti file ditandatangani dengan kunci yang tidak dikenal oleh mesin, yang membantu Anda memiliki keyakinan bahwa tidak ada alat yang secara jahat mengubah database atau binari tripwire. Untuk kepastian lengkap, Anda dapat membakar salinan alat dan database tripwire ke media hanya baca, yang dapat dipasang di server dan digunakan untuk memverifikasi semua perubahan sejak disk dibakar, jika diperlukan analisis forensik lengkap.
Jika Anda akan melakukan ini, cukup penting untuk menyiapkan dan menjalankan tripwire sebelum mesin digunakan untuk produksi, atau Anda tidak pernah dapat sepenuhnya yakin bahwa beberapa pengguna jahat tidak memiliki kesempatan untuk menginfeksi mesin sebelum tripwired.
sumber
Saya tidak berpikir ini mungkin berhasil, tetapi sebagai percobaan saya ingin melihat apa yang terjadi jika Anda melakukan ini hanya dengan folder / etc. Di situlah sebagian besar informasi konfigurasi disimpan.
sumber
@ Sirex sudah memberikan jawaban yang sangat bagus, tetapi jika Anda ingin membuat langkah lebih jauh dengan keamanan, cara terbaik untuk mengatasinya adalah pencegahan pertama kemudian deteksi.
Coba atur sistem dengan / filesystem yang terpasang hanya baca. Jadikan / tmp ramf terpisah yang dipasang dengan opsi novec, nodev. Agar sistem bekerja, Anda hanya perlu / var untuk dipasang baca-tulis. Jadi di bawah / var mount sebuah fs dengan rw, noexec, nodev dan hapus hak akses tulis ke / var / tmp (afaik, jarang dibutuhkan oleh daemon dan itu harus dapat dikonfigurasi). Juga gunakan tambalan keamanan untuk kernel Anda untuk lebih membatasi akses ke sumber daya oleh pengguna, coba grsec misalnya. Gunakan firewall dengan aturan seketat mungkin.
Beberapa distribusi menyediakan dokumentasi ekstensif tentang pengerasan sistem. Sebagai contoh:
sumber
Saya pikir ini ide yang baik untuk menganalisis perubahan yang dilakukan alat di sistem Anda:
... Hapus VM
Anda harus menambahkan banyak folder ke
.gitignore
file seperti proc, dll.sumber
Untuk situasi di mana Anda hanya tertarik untuk menjaga folder tertentu di seluruh sistem file di bawah kontrol versi, pendekatan berikut mungkin berfungsi:
Pertama, buat repositori Git di
/
level:Kemudian buat
/.gitignore
daftar putih itu hanya folder tertentu, misalnya untuk daftar putih saja/path/to/versioned/config/folder/
(berdasarkan /programming//a/11018557/320594 ):Kemudian buat komit pertama:
Dan kemudian tambahkan folder tambahan yang Anda inginkan di bawah kontrol versi sesuai permintaan.
PS:
Selain metode sebelumnya, jika Anda perlu menjaga / etc / di bawah kontrol versi, Anda mungkin lebih suka menggunakan
etckeeper
( https://etckeeper.branchable.com/ ) untuk membuat versi folder tertentu karena lebih khusus untuk tujuan itu ( misalnya, ia melakukan secara otomatis setelah menginstal paket).sumber