Bagaimana cara saya menentukan apakah kotak Linux saya telah disusupi?

11

Saya baru-baru ini membaca sebuah artikel tentang menganalisis upaya masuk SSH berbahaya. Ini membuat saya berpikir, apakah nama pengguna SSH, kombinasi kata sandi pada kotak Debian saya tidak umum? Apakah saya telah ditargetkan oleh serangan kamus brute force? Mari kita lihat /var/log/auth.log.0 :

Sep 23 07:42:04 SLUG sshd[8303]: Invalid user tyjuan from 210.168.200.190
Sep 23 07:42:09 SLUG sshd[8305]: Invalid user tykeedra from 210.168.200.190
Sep 23 07:42:14 SLUG sshd[8307]: Invalid user tykeem from 210.168.200.190
Sep 23 07:42:19 SLUG sshd[8309]: Invalid user tykeshia from 210.168.200.190
Sep 23 07:42:25 SLUG sshd[8311]: Invalid user tyla from 210.168.200.190
Sep 23 07:42:30 SLUG sshd[8313]: Invalid user tylan from 210.168.200.190
Sep 23 07:42:35 SLUG sshd[8315]: Invalid user tylar from 210.168.200.190
Sep 23 07:42:40 SLUG sshd[8317]: Invalid user tyler from 210.168.200.190
Sep 23 07:42:45 SLUG sshd[8319]: Invalid user tylerfrank from 210.168.200.190
Sep 23 07:42:50 SLUG sshd[8321]: Invalid user tyliah from 210.168.200.190
Sep 23 07:42:55 SLUG sshd[8323]: Invalid user tylor from 210.168.200.190

Jadi itu tidak terlihat bagus. Sekarang saya tahu saya telah ditargetkan oleh serangan dan bahwa beberapa nama pengguna saya, kombinasi kata sandi lemah, saya ingin tahu bagaimana saya bisa ...

  • ... tentukan apakah kotak Linux saya telah disusupi?
  • ... membatalkan kerusakan yang ditimbulkan oleh pelaku?
  • ... mencegah hal ini terjadi di masa depan?

MEMPERBARUI

Adakah saran untuk membatalkan kerusakan yang ditimbulkan oleh pelaku?

Jake McGraw
sumber
log itu tidak menyarankan Anda telah dikompromikan. apakah Anda memiliki informasi lebih jauh dari itu yang membuat Anda khawatir?
kemungkinan duplikat dari Bagaimana saya berurusan dengan server yang dikompromikan?
Dennis Nolte

Jawaban:

15

Banyak orang tampaknya menyarankan DenyHosts, tetapi saya telah melihat banyak kesuksesan dengan Fail2Ban pada sistem saya. Ini mengawasi sejumlah kegagalan (dapat dikonfigurasi), dan kemudian melakukan tindakan - pada server saya, tindakan itu adalah dengan menggunakan iptables untuk menjatuhkan semua lalu lintas dari host. Setelah 10 kegagalan login, mereka diblokir dan itulah akhirnya.

Saya menggunakannya dalam kombinasi dengan Logcheck, sehingga saya selalu tahu apa yang terjadi di server saya.

Jika Anda memiliki bukti bahwa seseorang telah benar-benar membobol sistem Anda (log yang Anda posting bukan bukti tentang ini), maka satu-satunya solusi Anda adalah membuat cadangan semua data yang Anda butuhkan untuk menyimpan, menghapus mesin, menginstal ulang, dan mengembalikan dari cadangan. Kalau tidak, tidak ada cara untuk memastikan.

Dan Udey
sumber
1
Saya menggunakan logcheck dan fail2ban juga. Kombinasi yang sangat bagus.
Saya gunakan kedua fail2ban.
Malfist
Saya juga beralih ke fail2ban dari denyhosts karena monitor fail2ban layanan lebih (mail, web, ftp, ...) dan lebih dikonfigurasi
Jure1873
10

Upaya masuk yang sah juga masuk, jadi jika Anda melihat upaya brutal diikuti oleh keberhasilan, itu indikasi bagus sesuatu yang buruk telah terjadi.

Saya menggunakan DenyHosts untuk memonitor log saya untuk lalu lintas SSH yang mencurigakan, dan saya mengkonfigurasinya untuk secara otomatis firewall dari host pada titik tertentu.

Perhatikan ada berbagai cara lain yang Anda inginkan untuk memantau mesin Anda untuk melihat apakah mesin itu rusak, termasuk pola muat, aktivitas login, mengendus lalu lintas berkala, memantau proses yang berjalan dan membuka port, dan memastikan integritas file dengan alat seperti tripwire.

Jika Anda hanya akan melakukan satu, memonitor beban sistem adalah cara yang sangat efektif untuk mendeteksi kompromi, karena sebagian besar mesin ketika dikompromikan digunakan untuk melakukan hal-hal seperti mengirim spam dalam jumlah besar atau menerima banyak lalu lintas. Mungkin tidak berguna jika Anda adalah target bernilai tinggi dan orang-orang mungkin mencoba secara khusus membobol Anda untuk alasan lain selain mengubah host Anda menjadi zombie, tetapi tetap berharga. Plus beban pemantauan diperlukan untuk pembuatan profil dan untuk mengetahui kapan Anda perlu berinvestasi dalam lebih banyak perangkat keras atau perangkat lunak yang lebih baik.

Anda juga harus melakukan analisis log yang komprehensif, melihat auth.log dan lainnya untuk hal-hal yang tidak terduga. Analisis file log adalah pasar yang kompetitif dan masalahnya belum terpecahkan, tetapi ada alat gratis seperti logwatch yang dapat dikonfigurasi untuk mengirimkan ringkasan kepada Anda setiap hari.

Keamanan melalui lapisan!

Daniel Papasian
sumber
1
Tentu saja, penyerang bisa memodifikasi log untuk menghapus bukti intrusi mereka, jadi kurangnya bukti dalam log tidak selalu berarti semuanya baik-baik saja.
Ini benar. Kurangnya bukti pada dasarnya tidak pernah bukti tanpa kompromi, dalam buku saya. Logging ke server jauh dapat meningkatkan kepercayaan log. Saya menggunakan terowongan syslog-ng dan ssh untuk tujuan ini.
Saya telah melihat sejumlah upaya konyol untuk meretas server saya juga ... Saya menginstal DenyHosts dan sudah menambahkan beberapa IP setelah hanya 10 menit. Terima kasih!
Aaron Brown
4

Lupakan Tripwire, ini cukup mahal. Gunakan AIDE sebagai gantinya. Ini gratis, mudah diatur (walaupun perlu beberapa saat untuk memutuskan direktori temp mana yang akan dikecualikan, dan jika tidak mengkonfigurasi).

Anda menjalankannya, itu membangun database semua file. Jalankan lagi dan ini akan memberi tahu Anda file mana yang telah berubah.

Satu hal lagi yang harus dilakukan adalah menginstal CSF, yang memiliki tipe blocker denyhost, karena orang gagal berulang kali login, itu akan menambahkannya ke aturan firewall Anda. Anda juga dapat meminta login SSH untuk memiliki kunci publik juga, skrip kiddies dapat mencoba login sebanyak yang mereka suka.

gbjbaanb
sumber
Ada versi open source (dan gratis) dari Tripwire. Lihat tripwire.org
Dan Andreatta
4
"* ... determine if my Linux box has been infiltrated?"
  • mencari tanda-tanda proses aneh. Saya biasanya menggunakan alat-alat yang datang dengan chkrootkit ( http://www.chkrootkit.org )
  • Lakukan portscan dengan nmap dari mesin yang berbeda. Jika kotak Anda telah disusupi, kemungkinan atacker memasang backdoor

"* ... membatalkan kerusakan yang ditimbulkan oleh para pelaku?"

lupakan saja, jika ada serangan, saran terbaik adalah menginstalnya kembali dari awal (pastikan Anda memasang lubang pada instalasi baru). Sangat mudah untuk tidak melihat backdoor atau proses sembunyi-sembunyi, Anda lebih baik menginstal ulang.

"* ... mencegah hal ini terjadi di masa depan?"

  • pembaruan keamanan

  • firewall yang ketat

  • kata sandi yang kuat

  • matikan layanan yang tidak perlu


sumber
3

lihatlah alat-alat seperti logcheck , portsentry , dan tripwire . itu sangat umum untuk percobaan SSH kamus acak, jadi saya tidak akan terlalu khawatir dengan itu. Anda mungkin ingin mengubah port untuk kebingungan acak, tetapi Anda masih akan melihat upaya acak dari waktu ke waktu, seumur hidup memiliki mesin di internet.


sumber
3

Satu hal yang saya gunakan di server saya untuk membantu mencegah serangan ini adalah DenyHosts . DenyHosts akan menghentikan pengguna jahat untuk mencoba masuk. Sejak menginstalnya, file log saya memiliki lebih sedikit entri upaya masuk.

Craig
sumber
3

Merupakan praktik yang baik untuk menggunakan pasangan kunci Publik / Pribadi sebagai otentikasi tambahan; Dengan cara itu pengguna tidak dapat masuk melalui SSH tanpa kunci kanan; yang akan sangat tidak mungkin untuk menebak for for brute forcer. Artikel bagus tentang ini dapat ditemukan di sini .

Ini saja dengan frasa sandi akan cukup solid untuk otentikasi SSH; Tetapi ada lebih banyak kerentanan! Hati-hati dengan semua aplikasi yang menggunakan port terbuka; Jika mereka mengandung pengeksploitasi bug mungkin menyalip sistem Anda. Contoh yang baik adalah bot spam yang diinstal di server kami karena bug pada perangkat lunak webstats yang kami gunakan saat ini.


sumber
2

Fail2ban adalah penganalisa akses real time log. Ini dapat dikonfigurasikan untuk memblokir IP apa pun dengan sejumlah upaya gagal untuk masuk. Ini menghindari serangan kamus tanpa harus memindahkan port ssh. chkrootkit dan rootkithunter adalah utilitas yang baik untuk memeriksa intrusi. Jika intrusi telah berhasil, praktik terbaik adalah menyalin data (dan hanya data, bukan yang dapat dieksekusi), usap dan instal ulang karena sangat sulit untuk 100% yakin sistemnya bersih.


sumber
2

Tidak ada yang menyarankan bahwa kotak Anda telah disusupi. Bahkan jika kata sandi Anda sangat lemah, serangan kamus yang hanya melemparkan satu upaya masuk pada setiap nama pengguna sangat tidak mungkin berhasil.

Tapi, jika Anda tahu kata sandi Anda lemah, perkuatlah! Saya pribadi suka pwgen (yang dikemas oleh Debian). Pada setiap proses, ia menghasilkan sejumlah besar kandidat kata sandi yang kuat, tetapi relatif dapat diucapkan yang (bagi saya setidaknya) cukup mudah diingat, seperti yodieCh1, Tai2daci, atau Chohcah9.

Namun, jika ada bukti lain yang menunjukkan bahwa sistem Anda telah dikompromikan ... Buang dari orbit. Itu satu-satunya cara untuk memastikan.

Data yang tidak dapat dieksekusi mungkin dapat diselamatkan, tetapi apa pun dengan konten yang dapat dieksekusi (ini berpotensi mencakup hal-hal seperti dokumen MS Office dan beberapa file konfigurasi) harus hilang kecuali Anda bersedia dan dapat memeriksanya secara manual untuk memastikan bahwa itu tidak diperlukan. t telah dimusuhi atau menerima kemungkinan bahwa hal itu bisa bermusuhan dan dapat merusak sistem Anda atau memberikan jalan untuk kompromi ulang di masa depan jika Anda tetap melakukannya.

Dave Sherohman
sumber
2

Satu perlindungan tambahan kecil yang saya suka adalah menilai batas koneksi ssh masuk untuk memperlambat serangan kamus atau sejenisnya. Jangan berharap ini melindungi Anda dengan sendirinya, tetapi gunakan ini sebagai tambahan untuk saran di jawaban lain termasuk menonaktifkan otentikasi kata sandi.

Menggunakan iptables:

$ iptables        -A INPUT      -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
$ iptables        -A INPUT      -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
$ iptables        -A INPUT      -p tcp --dport 22 -j DROP
sherbang
sumber
2

Ada beberapa saran buruk tentang utas ini, seperti:

  • menggunakan port non-standar untuk ssh (salah!)
  • menggunakan beberapa alat keamanan pihak ketiga (menambahkan ketergantungan / kompleksitas yang tidak perlu)
  • mengkonfigurasi firewall Anda untuk diblokir atau masuk daftar putih (perawatan kepala-sakit)

Cukup atur /etc/ssh/sshd_configbukan untuk meningkatkan keamanan:

  • PermitRootLogin no
  • Konfigurasikan AllowUsers hanya untuk pengguna pada sistem yang memiliki akun ssh
  • Pertimbangkan hanya menggunakan kunci fisik dengan 'Kata Sandi Kebenaran'

Jika Anda kotak telah disusupi. Bangun kembali kotak.

hendry
sumber
(-1) Mengonfigurasi aturan pada firewall, atau menggunakan sistem pencegahan intrusi kadang-kadang diperlukan. Menyebutnya saran yang buruk tanpa diskusi tambahan tentang mengapa itu bukan ide yang baik tidak terlalu membantu.
Zoredache
1

Akan terjadi setiap saat dengan ssh diaktifkan. Pindahkan ke port yang tinggi.

Ada program yang disebut "Tripwire" yang sangat bagus untuk deteksi intrusi, tetapi cukup sulit untuk menginstal. Jika tidak ada yang lain, Anda harus membaca dokumen mereka sehingga Anda memahami masalahnya.

Bill K.
sumber
1

Anda perlu menginstal deteksi intrusi sebelum menghubungkan mesin ke internet.

Dan itu ide bagus untuk koneksi SSH daftar putih IP hanya untuk memastikan seluruh dunia bahkan tidak bisa mencoba hal-hal seperti itu.

Eric Z Beard
sumber
Saya juga akan menambahkan pengguna yang masuk daftar putih diizinkan untuk masuk melalui SSH serta menonaktifkan otentikasi berbasis kata sandi jika memungkinkan.
1

Bagaimana saya bisa menentukan apakah kotak Linux saya telah disusupi?

Boot media read-only (livecd) dan bandingkan file dengan cadangan Anda atau media asli.

Lihat saja sekitar untuk perilaku aneh. Tentu saja ini paling mudah jika Anda meluangkan waktu sebelum peretasan untuk mendapatkan perasaan yang baik tentang apa yang 'normal'.

Kesalahan yang Anda posting tidak menunjukkan kompromi. Hanya seseorang yang mencoba.

Bagaimana saya bisa membatalkan kerusakan yang ditinggalkan oleh pelaku?

Instal ulang dan pulihkan dari cadangan sebelum sistem terganggu.

Lihat:

Bagaimana saya bisa mencegah hal ini terjadi di masa depan?

Lihat:

Sakit kepala
sumber
0

Psad ditambah dengan Shorewall adalah cara yang baik untuk memuji aturan iptables Anda.

Saya juga menggunakan Fail2ban untuk melacak login ssh saya

Sharjeel
sumber
0

gunakan rkhunter atau chkrootkit atau keduanya; memindai kotak Anda dari luar untuk melihat port apa yang dibuka

Bagaimanapun, jika semua yang Anda miliki adalah pengguna yang tidak valid, tidak perlu khawatir :)

quaie
sumber
0

Sesuatu yang sangat berbeda: coba gunakan Google di alamat IP! Seorang peretas yang menyebut dirinya STARTURK dari Turki mungkin mencoba meretas situs Anda.

Meskipun terlihat seperti serangan brute-force pada sistem Anda, mungkin saja peretas ini hanya melakukan satu upaya dan sekarang pergi ke beberapa situs lain.

Wim sepuluh Brink
sumber
0

Seperti banyak yang telah dicatat, Tripwire / AIDE adalah cara terbaik untuk mencari perubahan sistem. Sayangnya, sapi di luar gudang karena harus dikonfigurasi pada sistem yang dikenal baik.

Satu hal yang mungkin membantu Anda setidaknya memulai adalah menggunakan database RPM Anda untuk memeriksa md5sums file Anda. Inti dasarnya adalah ini:

rpm -qa | xargs rpm -V

Ini tidak sempurna karena berbagai alasan. Pertama, basis data RPM lokal Anda secara teoritis dapat diubah. Kedua, sebagian besar distro menggunakan prelink, dan RPM tidak mengetahui prelink. MD5 mungkin tampaknya telah diubah dari proses itu, yang sah.

Saran terbaik adalah ini: jika Anda tidak yakin apakah Anda telah dikompromikan, ini saatnya untuk membangun kembali.

pboin
sumber
0

Untuk mencegah masalah keamanan di masa depan, Anda dapat melihat OSSEC , saya menggunakannya untuk melakukan pemeriksaan integritas file dan mencatat pemantauan di server kami, ini sangat lengkap dan mudah untuk dikonfigurasi. Itu dapat mengirim pemberitahuan email, Anda dapat memeriksa peringatan melalui baris perintah atau antarmuka web ...

http://www.ossec.net/

diambil dari situs web:

"OSSEC adalah Sistem Deteksi Intrusi Berbasis Host Sumber Terbuka. Ia melakukan analisis log, pemeriksaan integritas file, pemantauan kebijakan, deteksi rootkit, peringatan waktu-nyata, dan respons aktif."

  • analisis log Ini dapat memeriksa file log di server Anda dan memberitahu Anda melalui aturan (ada banyak yang ditentukan sebelumnya dan Anda dapat menambahkan sendiri)

  • integritas file tripwire / pembantu seperti functionnality sehingga Anda akan melihat apakah ada file yang telah dimodifikasi di server Anda

  • pemantauan kebijakan: periksa beberapa aturan keamanan "Praktik terbaik"

  • deteksi rootkit: rkhunter, chkrootkit seperti fungsi

  • peringatan real-time dan respons aktif: Anda dapat mengonfigurasi ossec untuk bereaksi secara otomatis terhadap peringatan (saya tidak menggunakan ini tetapi Anda dapat menggunakannya untuk memblokir akses ssh ke host yang membuat terlalu banyak upaya koneksi yang gagal)

Produk yang benar-benar bagus dan sangat aktif

Untuk mengeraskan kotak Anda, Anda juga dapat menggunakan lynis atau bastille

Guillaume
sumber