pengembangan-web-mp.com

Bagaimana saya tahu kalau server Linux saya diretas?

Apa saja tanda-tanda bahwa server Linux telah diretas? Apakah ada alat yang dapat menghasilkan dan mengirim email laporan audit sesuai jadwal?

36
cowgod
  1. Simpan salinan asli dari file sistem kritis (seperti ls, ps, netstat, md5sum) di suatu tempat, dengan md5sum dari mereka, dan bandingkan dengan versi live secara teratur. Rootkit akan selalu memodifikasi file-file ini. Gunakan salinan ini jika Anda mencurigai dokumen aslinya telah disusupi.
  2. ajudan atau tripwire akan memberi tahu Anda tentang file yang telah dimodifikasi - dengan asumsi database mereka belum dirusak.
  3. Konfigurasikan syslog untuk mengirim file log Anda ke server log jarak jauh di mana mereka tidak dapat dirusak oleh penyusup. Tonton file log jarak jauh ini untuk aktivitas mencurigakan
  4. baca log Anda secara teratur - gunakan logwatch atau logcheck untuk mensintesis informasi penting.
  5. Ketahui server Anda. Ketahui jenis kegiatan dan log apa yang normal.
34
Brent

Kamu tidak.

Saya tahu, saya tahu - tetapi itu adalah paranoid, kebenaran yang menyedihkan, sungguh;) Ada banyak petunjuk tentu saja, tetapi jika sistem itu ditargetkan secara spesifik - mungkin tidak mungkin untuk mengatakannya. Adalah baik untuk memahami bahwa tidak ada yang sepenuhnya aman. Tetapi kita perlu bekerja untuk lebih aman, jadi saya akan menunjukkan semua jawaban lain sebagai gantinya;)

Jika sistem Anda dikompromikan, tidak ada alat sistem Anda yang dapat dipercaya untuk mengungkapkan kebenaran.

12
Oskar Duveborn

Beberapa hal yang telah memberi saya informasi di masa lalu:

  • Beban tinggi pada sistem yang seharusnya tidak digunakan
  • Segfault yang aneh, mis. dari utilitas standar seperti ls (ini dapat terjadi dengan kit root yang rusak)
  • Direktori tersembunyi di / atau /var/ (kebanyakan skrip kiddies terlalu bodoh atau malas untuk menutupi jejak mereka)
  • netstat menunjukkan port terbuka yang seharusnya tidak ada di sana
  • Daemon dalam daftar proses yang biasanya Anda gunakan dengan berbagai rasa (mis. bind, tetapi Anda selalu menggunakan djbdns)

Selain itu saya telah menemukan ada satu tanda yang dapat dipercaya bahwa sebuah kotak dikompromikan: jika Anda memiliki perasaan buruk tentang ketekunan (dengan pembaruan, dll.) Dari admin yang Anda warisi sistem, perhatikan dengan cermat!

11
user1686

Tripwire adalah alat yang umum digunakan - itu memberi tahu Anda ketika file sistem telah berubah, meskipun jelas Anda harus menginstalnya terlebih dahulu. Kalau tidak, item seperti akun pengguna baru yang tidak Anda ketahui, proses aneh dan file yang tidak Anda kenal, atau peningkatan penggunaan bandwidth tanpa alasan yang jelas adalah tanda-tanda yang biasa.

Sistem pemantauan lain seperti Zabbix dapat dikonfigurasi untuk mengingatkan Anda ketika file seperti/etc/passwd diubah.

11
Whisk

Ada metode untuk memeriksa server yang diretas melalui kill -

Pada dasarnya, ketika Anda menjalankan "kill -0 $ PID" Anda mengirim sinyal nop untuk memproses pengidentifikasi $ PID. Jika proses sedang berjalan, perintah kill akan keluar secara normal. (FWIW, karena Anda melewati sinyal nop kill, tidak ada yang akan terjadi pada prosesnya). Jika suatu proses tidak berjalan, perintah kill akan gagal (keluar dari status kurang dari nol).

Ketika server Anda diretas/rootkit diinstal, salah satu hal pertama yang dilakukan adalah memberitahu kernel untuk menyembunyikan proses yang terpengaruh dari tabel proses dll. Namun ia dapat melakukan segala macam hal keren di ruang kernel untuk mencari-cari dengan proses. Jadi ini artinya

a) Pemeriksaan ini bukan pemeriksaan ekstensif, karena rootkit yang dikodekan/cerdas akan memastikan bahwa kernel akan membalas dengan jawaban "proses tidak ada" yang membuat pemeriksaan ini berlebihan. b) Either way, ketika server yang diretas memiliki proses "buruk" berjalan, itu PID biasanya tidak akan ditampilkan di bawah/proc.

Jadi , jika Anda di sini sampai sekarang, metode ini adalah untuk membunuh -0 setiap proses yang tersedia dalam sistem (mulai dari 1 ->/proc/sys/kernel/pid_max) dan lihat apakah ada proses yang berjalan tetapi tidak dilaporkan di/proc.

Jika beberapa proses muncul sebagai berjalan, tetapi tidak dilaporkan di/proc, Anda mungkin memiliki masalah dengan cara apa pun Anda melihatnya.

Inilah skrip bash yang mengimplementasikan semua itu - https://Gist.github.com/1032229 . Simpan itu di beberapa file dan jalankan, jika Anda menemukan proses yang muncul tidak dilaporkan dalam proc, Anda harus memiliki beberapa petunjuk untuk mulai menggali.

HTH.

10
Shai

Saya akan memberikan tanggapan kedua yang diberikan di sini dan menambahkan salah satu dari saya sendiri.

find /etc /var -mtime -2

Ini akan memberi Anda indikasi cepat jika ada file server utama Anda telah berubah dalam 2 hari terakhir.

Ini dari artikel tentang deteksi retasan Cara mendeteksi jika server Anda diretas.

7
Ian Purton

Dari Bagaimana saya bisa mendeteksi intrusi yang tidak diinginkan pada server saya?

  • Gunakan IDS

    SNORT® adalah sistem pencegahan dan deteksi intrusi jaringan sumber terbuka yang menggunakan bahasa yang digerakkan oleh aturan, yang menggabungkan manfaat metode inspeksi berbasis tanda tangan, protokol, dan anomali. Dengan jutaan unduhan hingga saat ini, Snort adalah teknologi deteksi dan pencegahan intrusi yang paling banyak digunakan di seluruh dunia dan telah menjadi standar de facto untuk industri ini.

    Snort membaca lalu lintas jaringan dan dapat mencari hal-hal seperti "drive oleh pengujian pena" di mana seseorang hanya menjalankan seluruh pemindaian metasploit terhadap server Anda. Senang mengetahui hal-hal semacam ini, menurut saya.

  • Gunakan log ...

    Bergantung pada penggunaan Anda, Anda dapat mengaturnya sehingga Anda tahu setiap kali pengguna masuk, atau masuk dari IP aneh, atau setiap kali login root, atau setiap kali seseorang mencoba masuk. Saya sebenarnya memiliki server mengirimi saya email setiap pesan log lebih tinggi dari Debug. Ya, bahkan Pemberitahuan. Saya menyaring beberapa dari mereka tentu saja, tetapi setiap pagi ketika saya mendapatkan 10 email tentang hal-hal itu membuat saya ingin memperbaikinya sehingga berhenti terjadi.

  • Pantau konfigurasi Anda - Saya benar-benar menyimpan seluruh/etc saya di Subversion sehingga saya dapat melacak revisi.

  • Jalankan pemindaian. Alat seperti Lynis dan Rootkit Hunter dapat memberi Anda peringatan tentang kemungkinan celah keamanan di aplikasi Anda. Ada beberapa program yang memelihara pohon hash atau hash dari semua tempat sampah Anda dan dapat mengingatkan Anda untuk perubahan.

  • Monitor server Anda - Sama seperti yang Anda sebutkan pada diskspace - grafik dapat memberi Anda petunjuk jika ada sesuatu yang tidak biasa. Saya menggunakan Cacti untuk mengawasi CPU, lalu lintas jaringan, ruang disk, suhu, dll. Jika sesuatu terlihat aneh is aneh dan Anda harus mencari tahu mengapa itu aneh.

5
Tom Ritter

Saya hanya ingin menambahkan ini:

Periksa riwayat bash Anda, jika kosong dan Anda belum membatalkan atau mengosongkannya, ada kemungkinan seseorang telah membahayakan server Anda.

Periksa yang terakhir. Entah Anda akan melihat P yang tidak diketahui atau itu akan terlihat sangat kosong.

Kemudian ketika jawaban yang diterima dinyatakan, file sistem sering diubah, periksa tanggal yang dimodifikasi. Namun mereka sering merusak tanggal yang dimodifikasi.

Mereka sering menginstal ssh versi lain yang berjalan pada port acak. Ini sering disembunyikan di beberapa tempat yang sangat aneh. Perhatikan bahwa biasanya akan diubah namanya menjadi sesuatu selain ssh. Jadi periksa netstat (mungkin tidak berfungsi karena mereka sering menggantinya) dan gunakan iptables untuk memblokir port yang tidak dikenal.

Bagaimanapun, ini adalah situasi di mana pencegahan lebih baik daripada mengobati. Jika Anda telah dikompromikan, yang terbaik adalah hanya memformat dan memulai lagi. Hampir tidak mungkin untuk mengkonfirmasi bahwa Anda telah berhasil membersihkan retasan.

Perhatikan hal-hal berikut untuk mencegah server Anda dari gangguan.

  1. Ubah port ssh
  2. Cegah agar root tidak bisa masuk
  3. hanya mengizinkan pengguna tertentu
  4. Cegah login kata sandi
  5. Gunakan kunci ssh, kunci yang dilindungi kata sandi yang lebih disukai
  6. Jika memungkinkan blacklist semua ip dan daftar putih ips yang diperlukan.
  7. Instal dan konfigurasikan fail2ban
  8. Gunakan tripwire untuk mendeteksi intrusi
  9. Pantau jumlah pengguna yang masuk dengan Nagios atau zabbix. Bahkan jika Anda mendapat pemberitahuan setiap kali Anda masuk, setidaknya Anda akan tahu kapan orang lain bermain.
  10. Jika memungkinkan simpan server Anda di vpn, dan hanya izinkan ssh melalui vpn ip. Amankan vpn Anda.

Perlu dicatat bahwa setelah mereka berada di satu server, mereka akan memeriksa bash history Anda dan mencari server lain yang terhubung melalui ssh dari server itu. Mereka kemudian akan mencoba untuk terhubung ke server-server itu. Jadi, jika Anda mendapatkan brute paksa karena kata sandi yang buruk, sangat mungkin mereka akan dapat terhubung ke server lain dan kompromi juga.

Ini adalah dunia yang buruk di luar sana, saya tegaskan bahwa pencegahan lebih baik daripada mengobati.

2
Rob

Setelah mencari-cari sedikit, ada ini juga, ia melakukan apa yang saya sebutkan di atas, di antara beberapa hal lain: http://www.chkrootkit.org/ dan http://www.rootkit.nl/projects/rootkit_hunter.html

1
Shai

Anda harus memeriksa GuardRail. Itu dapat memindai server Anda setiap hari dan memberi tahu Anda apa yang berubah dengan cara visual yang bagus. Itu tidak memerlukan agen dan dapat terhubung melalui SSH sehingga Anda tidak perlu membuang mesin dan sumber daya Anda dengan agen.

Yang terbaik dari semuanya, gratis hingga 5 server.

Lihat disini:

https://www.scriptrock.com/

0
Cheyne