SSHD CPU'nun% 100'ünü Tüketmek (Yüzlerce işlem) - Ölmeyecek


7

Son zamanlarda, yönettiğim birkaç sistemde SSHd'nin çok büyük miktarda CPU tüketen durdurulamaz süreçlerin ortaya çıkmasına başlayacağını fark ettim.

Sistem, işlemlerin tümünün 'çalışıyor' olduğunu ve zombi olmadığını veya ebeveynlerinin onları öldürmesini beklediğini gösteriyor (en azından söyleyebileceğim kadarıyla değil).

görüntü tanımını buraya girin

Bu süreçleri öldürmek için her şeyi denedim ... bugüne kadar bulduğum tek güvenilir yöntem tüm sunucuyu yeniden başlatmak (ki bu ideal değil). Dropshear için openssh-server'ı değiştirmeyi denedim, ancak uygulamalarım için ihtiyaç duyduğum gibi davranmıyor.

Denedim:

killall -9 sshd

Her sshd'yi kimliği ile öldürmek. Diğer bazı yanlış şeyler (htop + sigterm, etc ...)

Bu süreçleri öldürmek ya da buna neyin sebep olduğunu çözmek için bazı fikirleri severim.


3
Güvenlik uygulamanızla oynayan birileri saldırı altında görünüyor. Bunlar en son yamalı versiyonları sshd mi?
Eugen Rieck

2
Otomatikleştirilmiş çoğu komut dosyası tarayıcılarından kurtulmak için bunları varsayılan 22 / TCP bağlantı noktasından bazı keyfi yüksek bağlantı noktalarına taşımayı deneyin. Bu bir güvenlik önlemi DEĞİLDİR, sadece günlüklerinizi aklı başında tutar. Yalnızca üçlü ölçüt için güvenliğinizi kontrol edin ve fail2ban'ı dağıtmayı düşünün.
MacLemon

Ve sen onun yanındayken, chkrootkit ve rkhunter da. Asla bilemezsin ...
MariusMatutiae

Liman 22'de iken, düşük limitler ve yüksek yasaklama süreleri ile fail2ban'a sahip. Netstat'a baktım, vb ... beklenmeyen çok az SSH bağlantısı.
Bravo Delta 19

Güncelleme: Sunucu sadece anahtar olarak ayarlanmış, bir çok gelen bağlantı değil fail2ban etkin.
Bravo Delta

Yanıtlar:


2

Bunlar gerçekte OpenSSH sshd's ise, benim tahminim, bir yerde bir betiğin onları bozuk bir döngüde çalıştırdığı ve alt süreçlerinden birinin tüm bu CPU'yu tıkadığıdır.

Marki555’in önerdiği gibi, stracesize yardımcı olacaktır, ancak strace’ın strace -fçocuk süreçlerini takip etmesi için kullanmanız gerekir . Kimden man strace:

   -f          Trace child processes as they are  created  by  cur-
               rently  traced  processes as a result of the fork(2)
               system call.

Strace çok fazla veri ürettiğinden, -e argümanını da kullanmak iyi bir fikir olabilir (örneğin, yalnızca açık () çağrıları göstermek için):

   -e expr     A qualifying expression which modifies which  events
               to  trace  or  how to trace them.  The format of the
               expression is:
                         [qualifier=][!]value1[,value2]...

Sen deneyebilirsiniz başka komut ps xafveya pstree -ao sshd 's başladığı işi süreç belirleyebilmesi için kolay bir süreç ve çocuklarının ağaç görünümünü anlamak için işler. lsofAyrıca size yardımcı olabilir, bir sürecin hangi dosyaları açtığını söyleyecektir.

Ve elbette, en son OpenSSH'yi kullandığınızdan emin olun. Eski bir OpenSSH 3.4p1’de rsync + big files + ssh’ın sorunlu olacağını düşünüyorum.

Bunlar gerçekten sshd işlemleri DEĞİL ise, o zaman ikili dosyanın bir MD5 sağlama toplamı düzgün görüntülenebilir, ancak çalışan gerçek sshd programı olmayabilir. Ayrıca md5sumkomutun kendisi, belirli dosyalar (sshd gibi) için doğru sağlama toplamını bildirecek şekilde değiştirilmiş arka kapı sürüm olabilir.

/ Proc / [sshd pid] / exe dosyasına bir göz atmalı ve bunun için / usr / sbin / sshd (veya sshd'niz nerede olursa olsun) ve / proc / [sshd pid] / ortam ile bağlantı kurulduğundan emin olmalısınız. hangi ortam değişkenlerini kullandığını ve / proc / [sshd pid] / cmdline komutunu neyin başlattığını görmek için kullanın.

Bir saldırgan kötü niyetli programı "sshd" olarak yeniden adlandırmış olsa da, sshd görünmesi için onu çalıştırdı. Hatta / usr / sbin / sshd'yi / tmp / sshd konumuna taşıdıktan sonra, kötü niyetli sshd'yi / usr / sbin / sshd konumuna getirip bu tür / proc analizlerinden gizlemeyi denemek için / usd / sshd geri alındığında / usr / sbin / sshd / proc / [sshd pid] / exe sembolik bağlantısı aşağıdaki gibidir ls:

   lrwxrwxrwx 1 root root 0 May 19 06:47 /proc/[sshd pid]/exe ->  (deleted)/usr/sbin/sshd

Ayrıca, eğer bu sshd'ler normal süreç analizini aktif olarak engellemek için bir şeyler yapıyorlarsa , süreci “duraklatmak” kill -STOPyerine deneyebilirsiniz kill -9( kill -CONTdevam ettirmek için kullanın . Bkz. Http://en.wikipedia.org/wiki/Job_control_%28Unix%29 # Uygulama ).

Ancak, bir saldırganın kök izinleri varsa, / proc, netstat, ls, vb. Den gizlenen bir rootkit takılabilir. Gerçekten tehlikeye düşerseniz, en iyi eylem yolu sistemi çevrimdışı duruma getirmek ve bölümlerini başka bir yere monte etmektir ( temiz) sistem daha sonra adli tıp (veya adli tıp için hazırlanmış canlı Linux CD'lerden birini kullanın) yapın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.