Server linux saya diretas. Bagaimana saya mengetahui bagaimana dan kapan itu dilakukan?

11

Saya memiliki server rumah yang menjalankan distribusi ubuntu desktop. Saya menemukan ini di crontab saya

* * * * * /home/username/ /.access.log/y2kupdate >/dev/null 2>&1

dan ketika mencari di direktori itu (spasi setelah nama pengguna / adalah nama direktori) saya menemukan banyak skrip yang jelas melakukan sesuatu yang seharusnya tidak mereka lakukan.

Sebelum saya menghapus komputer itu dan menginstal ulang hal-hal, saya ingin mencari tahu apa yang menyebabkan pelanggaran keamanan dan kapan itu dilakukan. Jadi saya tidak membuka lubang yang sama lagi.

File log apa yang harus saya cari? Satu-satunya server yang saya tahu sedang berjalan di komputer adalah sshd dan lighttpd.

Apa yang harus saya lakukan untuk mendeteksi jika hal seperti ini terjadi lagi?

Jonatan Kallus
sumber
@Person yang memilih untuk pindah ke SU: Bagaimana menurut Anda forensik virus / peretasan berhubungan dengan Super User lebih dari Server Fault ??
Chris S
3
Saya senang mendengar bahwa rencananya adalah menghapus komputer dan menginstal ulang barang-barang. Itu benar-benar hal yang benar untuk dilakukan tidak peduli apa yang Anda temukan, karena selalu ada peluang bagus ada sesuatu yang lebih buruk yang tidak Anda temukan.
mattdm
Yap benar-benar harus memilih untuk pindah ke Keamanan IT ( security.stackexchange.com ), bukan SU atau Serverfault!
Rory Alsop

Jawaban:

4

Pertama, pastikan komputer terputus dari jaringan apa pun.
Kedua, pastikan Anda mendapatkan data penting dari drive sebelum mem-boot kembali OS yang diretas.

Mulailah dengan memeriksa perangko waktu pada file yang dimaksud. Seringkali mereka akurat.
Referensi silang dengan log httpd dan auth log jika tidak dihapus. Jika satu sama lain dihapus, Anda bisa bertaruh bahwa itu adalah cara masuk. Jika masih bijaksana, Anda mungkin dapat memperoleh informasi lebih lanjut tentang cara mereka masuk dari log.

Jika semuanya terhapus, Anda cukup kacau. Mungkin akan membutuhkan lebih banyak waktu untuk mencari tahu apa yang terjadi daripada nilainya.

Anda menyebutkan kedua layanan itu sedang berjalan, adakah firewall yang bagus untuk mencegah semua hal lain diakses? Apakah Anda mengizinkan SSH pada port 22; apakah login Anda cukup mudah ditebak; apakah Anda mengizinkan login kata sandi; apakah Anda memiliki semacam batasan tingkat riil untuk login kata sandi? Apakah Anda memiliki perangkat lunak tambahan yang diinstal dengan lighttpd; perl; php; cgi; sebuah CMS atau serupa? Apakah Anda menjalankan versi terbaru dari semua perangkat lunak; Apakah Anda berlangganan pemberitahuan keamanan untuk semua perangkat lunak yang Anda jalankan dan hati-hati mengevaluasi semua pemberitahuan untuk melihat apakah mereka berlaku untuk perangkat lunak yang Anda jalankan / ekspos kepada publik?

Chris S
sumber
Instalasi adalah standar Ubuntu Desktop Edition 10.x, tidak ada yang khusus dilakukan untuk keamanan. Saya berasumsi ada firewall yang cukup bagus secara default. Apakah itu tidak benar? Saya mengizinkan login kata sandi pada port 22, tetapi kata sandi itu adalah string 8 karakter acak. Haruskah cukup baik?
Jonatan Kallus
Saya percaya firewall default adalah "Buka Lebar - Tanpa Firewall". Kecuali Anda dengan hati-hati mengonfigurasinya, itu tidak melakukan apa pun.
Chris S
Pertanyaannya adalah layanan apa yang Anda jalankan lebih dari firewall apa. Kecuali firewall diatur untuk mengkonfigurasi IP tertentu untuk akses, firewall terbaik adalah tidak menjalankan layanan yang tidak perlu di tempat pertama. Dan apa pengaturan jaringan Anda? Terbuka ke Internet? Di dalam jaringan pribadi? Apakah Anda tidak memiliki firewall pada titik di mana jaringan internal Anda masuk ke Internet, atau apakah server Anda ada di DMZ?
Bart Silverstrim
Server terhubung langsung ke internet. Saya menggunakannya sebagai router juga. Jika firewall default terbuka lebar, maka saya pikir saya punya cukup penjelasan untuk bagaimana ini bisa terjadi ..
Jonatan Kallus
4

Ini semacam topik tersendiri; Anda dapat menggunakan google for linux forensics untuk informasi lebih lanjut. Pada dasarnya Anda harus membuat gambar drive Anda untuk analisis offline terlebih dahulu, lalu bersihkan komputer dan instal dari papan tulis yang bersih.

Dan ingat semua ongkosnya. Siapa pun yang menggunakan komputer dapat memiliki kata sandi yang disusupi. Ubah kata sandi, simpan offline, dll. Hingga Anda mendapatkannya di "ruang bersih" (VM terisolasi).

Kalau tidak, banyak memeriksa log (yang dapat dipalsukan) dan memeriksa aplikasi Anda (skrip php? Database? Diperbarui untuk perbaikan terbaru? Pengguna lain memberikan kata sandi?)

Secara harfiah tidak ada cara mudah untuk menjawab pertanyaan Anda karena Anda harus melakukan pekerjaan forensik di server dan memeriksa lubang. Anda bisa menggunakan beberapa alat otomatis tetapi perlu diingat jika penyerang memiliki Root privs Anda tidak bisa mempercayai biner sistem lagi, dan Anda tidak bisa mempercayai log.

Adapun serangan di masa depan, tergantung pada seberapa aman Anda ingin membuatnya, Anda dapat mulai dengan mengarahkan log Anda ke sistem yang hanya digunakan untuk menyimpan log sistem. Tidak ada akses lain, untuk mengurangi jejak serangan.

Anda juga menjalankan perangkat lunak checksum di sistem Anda seperti Tripwire untuk memeriksa integritas file Anda.

Dan tentu saja tetap up to date dengan pembaruan dan jalankan perangkat lunak pemindaian yang memeriksa rootkit.

Sekali lagi, keamanan bukanlah hal yang mudah. Ini bisa menjadi spesialisasi dalam dirinya sendiri juga. Keamanan berlapis bisa seketat memeriksa host / IP yang tidak termasuk dalam jaringan Anda, mengenkripsi semua akses ke sistem, membuat log harian perubahan yang ditemukan pada sistem Anda dikirimkan kepada Anda, dan mengatur honeypot pada jaringan Anda untuk mencari aktivitas aneh (mengapa server saya mencoba untuk terhubung ke port 25 pada komputer honeypot?)

Pertama dan terutama jika Anda ingin memeriksa aktivitas, dapatkan disk image dan instal ulang perangkat lunak server. Dari awal. Biner server tidak bisa dipercaya lagi.

EDIT - beberapa hal lain yang terjadi pada saya karena Anda menjalankan SSH - instal denyhosts. Itu dapat dikonfigurasikan sehingga serangan otomatis terhadap sistem Anda pada SSHD akan dikunci setelah sejumlah percobaan X. Itu juga dapat dikonfigurasi untuk memperbarui dari server denyhost lain di "cloud" untuk berbagi IP yang terkunci untuk membantu meminimalkan serangan otomatis. Anda juga dapat memindahkan port yang didengarnya; banyak orang menunjukkan bahwa ini hanya keamanan melalui ketidakjelasan, tetapi mengingat jumlah pemindaian bot, ini mengurangi secara signifikan pada upaya acak untuk masuk.

Bart Silverstrim
sumber
Terima kasih! Anda benar-benar menjawab setengah dari pertanyaan masing-masing, saya berharap saya bisa menandai keduanya sebagai jawaban yang diterima.
Jonatan Kallus