Geçen gün projelerin olduğu VDS'lerden birinde garip bir yavaşlık sezdim. CPU kullanımı sürekli %100'de geziniyor site yanıt vermiyor. SSH ile sunucuya baktığımda <code>top</code> ve <code>htop</code> ekranında adını bile daha önce duymadığım rastgele harflerden oluşan garip bir process CPU'yu sömürüyor.
Klasik bir cryptojacking vakasıyla karşı karşıya olduğumu o an anladım. Muhtemelen zayıf bir şifreden ya da güncel olmayan bir web uygulamasından içeri sızmışlar. Sunucuyu komple formatlamadan, bu izinsiz process'i nasıl yakaladığımı, kökünü kurutup diskten nasıl temizlediğimi bu sorunu yaşayanlar için adım adım buraya bırakıyorum.
Sunucuda bu tarz bir durumla karşılaşınca panik yapıp direkt sunucuya reset atmamak gerekir. Şöyle bir yol izleyebilirsiniz;
1. Adım: Hangi İşlemin CPU'yu Sömürdüğünü Bulmak (<code>htop</code> / <code>top</code>)
Öncelikle SSH ile sunucuya bağlanıp anlık olarak sistemi yoran process'i ve PID (Process ID) numarasını tespit ediyoruz:
htop
(veya htop yoksa <code>top</code> komutu)
Listede en üstte CPU'yu %99 kullanan garip isimli (örneğin rastgele <code>xmr-stak</code>, <code>kworker</code> kılığına girmiş sahte servisler veya anlamsız dizinlerden çalışan) dosyanın PID numarasını bir kenara not edin (<code>4821 gibi</code>)
2. Adım: İşlemin Disk Üzerindeki Yerini Bulmak
İşlemi öylece sonlandırıp bırakmayın. Çünkü arkada çalışan bir cronjob veya servis onu tekrar aktif hale getirebilir. Önce zarar veren kısmın dosya sisteminde nereye saklandığını bulmamız lazım.
Şu komutla çalışan process'in kök dizinini ve çalıştırıldığı yolu öğrenebilirsiniz;
pwdx 4821 # veya şu komutla tam dosya yolunu görün: ls -l /proc/4821/exe
(Çıktıda size <code>/tmp/...</code> veya <code>/var/tmp/...</code> ya da <code>/usr/bin/</code> altında garip bir dosya yolu verecektir.)
3. Adım: Süreci ve İlgili Ağ Bağlantılarını Kesin
Zarar veren kısmın dosya yolunu öğrendikten sonra artık süreci sonlandırabilirsiniz.
kill -9 4821
4. Adım: Zararlı Kaynak Dosyasını ve Uzantılarını Silmek
Bulduğumuz dosya yoluna giderek zararlı script'i veya binary dosyayı ortadan kaldırıyoruz.
rm -rf /tmp/zararli_dosya_adi
(Dikkat edin, <code>/tmp</code> veya <code>/var/tmp</code> dizinlerinde bu tarz gizli klasörler <code>.hidden</code> şeklinde de bulunabilir. <code>ls -la /tmp</code> yaparak gizli dosyaları mutlaka kontrol edin.)
5. Adım: En Önemli Kısım - Tekrar Tetiklenmesini Engellemek
Korsanlar genellikle bu tarz zararlıları sistem yeniden başladığında veya belli aralıklarla tekrar çalışması için şu noktalara saklarlar. Buraları mutlaka temizlemelisiniz:
Crontab (Zamanlanmış Görevler) Kontrolü:
crontab -l # Kullanıcı crontab'lerini kontrol edin: cat /etc/crontab ls -la /etc/cron.d/
Eğer burada kendinizin eklemediği, şüpheli bir <code>wget</code> veya <code>curl</code> komutuyla dışarıdan dosya çekip çalıştıran satırlar varsa hemen temizleyin.
Sistem servisleri arasına yerleşmiş garip isimli bir servis var mı diye göz atmayı unutmayın varsa <code>systemctl disable --now servis_adi</code> ile kapatıp ilgili service dosyasını (<code>/etc/systemd/system/</code> altından) silin.
6. Adım: Şifreleri ve Yetkileri Sıkılaştırmak
Zararlı dosyayı temizledikten sonra kapıyı aralık bırakmamak için;
SSH portunuzu varsayılan 22'den başka bir şeye taşıyın.
Şifreli (Password) SSH girişini kapatıp sadece SSH Key (Anahtar) ile girişe geçin.
Sunucuda CPU'nun %100'e fırlaması ve fanların çıldırması genelde bu tarz kriptocuların eseridir. Panik yapmadan <code>pwdx</code> ve <code>ls -l /proc/.../exe</code> ikilisiyle zararlının kaynağını bulup temizlemek sistemi kurtarmak için yeterlidir.
Geçen gün projelerin olduğu VDS'lerden birinde garip bir yavaşlık sezdim. CPU kullanımı sürekli %100'de geziniyor site yanıt vermiyor. SSH ile sunucuya baktığımda <code>top</code> ve <code>htop</code> ekranında adını bile daha önce duymadığım rastgele harflerden oluşan garip bir process CPU'yu sömürüyor.
Klasik bir cryptojacking vakasıyla karşı karşıya olduğumu o an anladım. Muhtemelen zayıf bir şifreden ya da güncel olmayan bir web uygulamasından içeri sızmışlar. Sunucuyu komple formatlamadan, bu izinsiz process'i nasıl yakaladığımı, kökünü kurutup diskten nasıl temizlediğimi bu sorunu yaşayanlar için adım adım buraya bırakıyorum.
Sunucuda bu tarz bir durumla karşılaşınca panik yapıp direkt sunucuya reset atmamak gerekir. Şöyle bir yol izleyebilirsiniz;
1. Adım: Hangi İşlemin CPU'yu Sömürdüğünü Bulmak (<code>htop</code> / <code>top</code>)
Öncelikle SSH ile sunucuya bağlanıp anlık olarak sistemi yoran process'i ve PID (Process ID) numarasını tespit ediyoruz:
(veya htop yoksa <code>top</code> komutu)
Listede en üstte CPU'yu %99 kullanan garip isimli (örneğin rastgele <code>xmr-stak</code>, <code>kworker</code> kılığına girmiş sahte servisler veya anlamsız dizinlerden çalışan) dosyanın PID numarasını bir kenara not edin (<code>4821 gibi</code>)
2. Adım: İşlemin Disk Üzerindeki Yerini Bulmak
İşlemi öylece sonlandırıp bırakmayın. Çünkü arkada çalışan bir cronjob veya servis onu tekrar aktif hale getirebilir. Önce zarar veren kısmın dosya sisteminde nereye saklandığını bulmamız lazım.
Şu komutla çalışan process'in kök dizinini ve çalıştırıldığı yolu öğrenebilirsiniz;
(Çıktıda size <code>/tmp/...</code> veya <code>/var/tmp/...</code> ya da <code>/usr/bin/</code> altında garip bir dosya yolu verecektir.)
3. Adım: Süreci ve İlgili Ağ Bağlantılarını Kesin
Zarar veren kısmın dosya yolunu öğrendikten sonra artık süreci sonlandırabilirsiniz.
4. Adım: Zararlı Kaynak Dosyasını ve Uzantılarını Silmek
Bulduğumuz dosya yoluna giderek zararlı script'i veya binary dosyayı ortadan kaldırıyoruz.
(Dikkat edin, <code>/tmp</code> veya <code>/var/tmp</code> dizinlerinde bu tarz gizli klasörler <code>.hidden</code> şeklinde de bulunabilir. <code>ls -la /tmp</code> yaparak gizli dosyaları mutlaka kontrol edin.)
5. Adım: En Önemli Kısım - Tekrar Tetiklenmesini Engellemek
Korsanlar genellikle bu tarz zararlıları sistem yeniden başladığında veya belli aralıklarla tekrar çalışması için şu noktalara saklarlar. Buraları mutlaka temizlemelisiniz:
Eğer burada kendinizin eklemediği, şüpheli bir <code>wget</code> veya <code>curl</code> komutuyla dışarıdan dosya çekip çalıştıran satırlar varsa hemen temizleyin.
Sistem servisleri arasına yerleşmiş garip isimli bir servis var mı diye göz atmayı unutmayın varsa <code>systemctl disable --now servis_adi</code> ile kapatıp ilgili service dosyasını (<code>/etc/systemd/system/</code> altından) silin.
6. Adım: Şifreleri ve Yetkileri Sıkılaştırmak
Zararlı dosyayı temizledikten sonra kapıyı aralık bırakmamak için;
Sunucuda CPU'nun %100'e fırlaması ve fanların çıldırması genelde bu tarz kriptocuların eseridir. Panik yapmadan <code>pwdx</code> ve <code>ls -l /proc/.../exe</code> ikilisiyle zararlının kaynağını bulup temizlemek sistemi kurtarmak için yeterlidir.
Herkese iyi forumlar.