Bagaimana saya tahu kalau server Linux saya diretas?

36

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

cowgod
sumber
1
Jika negara tidak diketahui, benar-benar tidak ada jalan. Itulah mengapa sangat penting untuk menggunakan sumber instalasi tepercaya dan mengatur alat seperti Tripwire sebelum memaparkannya ke hal lain selain dari itu sendiri.
Oskar Duveborn
10
Maksudmu "retak". Peretasan adalah bagaimana kita mendapatkan linux.
gbarry
Seorang teman saya yang server-nya di-host dengan kami pernah meminta saya untuk melihat server-nya karena tampaknya ada sesuatu yang aneh dengan itu. Segera setelah saya melihat log saya tahu ada sesuatu. Mereka mencoba untuk menutupi jejak mereka dan saya pikir telah menginstal kit root tetapi membuat sedikit berantakan. Bagaimanapun, untuk mempersingkat cerita, kami harus membangun kembali seluruh server dari awal. Butuh sepanjang malam dan kemudian kami mengkonfigurasi beberapa alat audit keamanan.
Matt
@ Mat Mind memberi tahu kami alat apa? Masih sama hari ini?
Rodrigo

Jawaban:

34
  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 yang tidak dapat dirusak oleh penyusup. Tonton file log jarak jauh ini untuk aktivitas mencurigakan
  4. baca log Anda secara teratur - gunakan logwatch atau centang untuk mensintesis informasi penting.
  5. Ketahui server Anda . Ketahui jenis kegiatan dan log apa yang normal.
Brent
sumber
8
md5 telah melemah parah jika tidak dibuang. Anda mungkin ingin pindah ke sha512.
Broam
12

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 khusus - 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.

Oskar Duveborn
sumber
5
Anda berasumsi bahwa penyerang Anda memiliki beberapa keterampilan, ingin diam-diam dengan cara apa pun, dan tidak sepenuhnya tertarik meledakan spam dan menambahkan OC3 Anda ke botnet. Hari-hari ini, Anda biasanya menemukan fakta bahwa sejumlah besar spam keluar dari server Anda, biasanya pada sistem kelebihan beban yang seharusnya tidak. Kebanyakan "peretas" dimotivasi oleh uang akhir-akhir ini.
Ernie
2
Alat serangan paling canggih membutuhkan keterampilan nol hari ini dan mudah tersedia dan beberapa sangat tersembunyi secara default dan desain. Botnet / zombie bisa lama tidak digunakan sebelum digunakan untuk melukai tetapi bug di alat serangan dapat menyebabkan crash yang tidak diinginkan dan perilaku aneh dll.
Oskar Duveborn
11

Tripwire adalah alat yang umum digunakan - ini 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.

Mengocok
sumber
11

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 bisa 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!


sumber
10

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 (status keluar kurang dari nol).

Ketika server Anda diretas / rootkit diinstal, salah satu hal pertama yang dilakukannya adalah memberi tahu kernel untuk menyembunyikan proses yang terpengaruh dari tabel proses dll. Namun ia dapat melakukan segala macam hal keren di ruang kernel untuk dikacaukan 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) Bagaimanapun juga, ketika server yang diretas menjalankan proses "buruk", biasanya PID 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.

Berikut 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.

Shai
sumber
Itu sangat berguna bagi pemilik rumah saya di mana saya tidak punya waktu untuk memelihara sistem seperti sistem kerja yang produktif. Bagaimanapun, dapatkah saya menggunakan ini dalam lingkungan profesional dan "relatif" yakin tentang hasilnya? Dan untuk jawabannya adalah 3 tahun: Apakah ini masih merupakan metode yang valid untuk memeriksa infeksi umum saat ini pada tahun 2014?
hub
7

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. Bagaimana mendeteksi apakah server Anda diretas.

Ian Purton
sumber
1
Saya pikir-waktu bukan -mtime. Tidak dapat mengutak-atik
Tillebeck
5

Dari Bagaimana saya bisa mendeteksi intrusi yang tidak diinginkan di 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 dengan 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 login, atau masuk dari IP aneh, atau setiap kali login root, atau setiap kali seseorang mencoba masuk. Saya benar-benar memiliki server mengirimi saya email setiap log pesan 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 dalam subversi sehingga saya dapat melacak revisi.

  • Jalankan pemindaian. Alat seperti Lynis dan Rootkit Hunter dapat memberi Anda peringatan tentang kemungkinan lubang 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 pada CPU, lalu lintas jaringan, ruang disk, suhu, dll Jika sesuatu tampak aneh itu adalah aneh dan Anda harus mencari tahu mengapa hal itu aneh.

Tom Ritter
sumber
2

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 IP yang tidak dikenal atau 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.

Patut diperhatikan saat mencatat bahwa dalam 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.

rampok
sumber
0

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/

Cheyne
sumber
Apakah ini layanan cloud yang masuk ke mesin Anda dengan hak root? Apa yang terjadi jika layanan dikompromikan?
hub
Anda tidak perlu memberinya root. Anda juga dapat memilih untuk menggunakan agen sebagai gantinya, yang berarti mesin Anda melakukan polling alih-alih memanggil SSH. Kata sandi untuk hal-hal seperti DB selalu disimpan di mesin Anda, bukan di cloud juga.
Cheyne