Fork Bomb Nedir?

Çatal Bombası, bir sisteme belleğin dolmasını sağlayarak zarar veren bir programdır. Belleği doldurmak için işlemleri sonsuza kadar çatallar. Çatal bombası, Linux tabanlı bir sisteme karşı bir tür hizmet reddi (DoS) saldırısıdır.
Bir sistemde başarılı bir çatal bomba etkinleştirildiğinde, sistemi yeniden başlatmadan normal çalışmaya devam etmek mümkün olmayabilir, çünkü çatal bombanın tek çözümü tüm örneklerini yok etmektir.
fork bomb kullanımı
Bash üzerinde aşağıdaki komutu çalıştırdığınız fork bomb etkin olacaktır.
Bir çökmeye ve/veya sisteminizi zorla yeniden başlatmaya hazır değilseniz, lütfen bu komutu 'test etmek' için çalıştırmayın. Ayrıca, çalıştırmak için root'a ihtiyaç duymaz.
:(){ :|: & };:
Komut dosyasının Adım Adım Açıklaması:
- :() adında bir işlev tanımladığınız anlamına gelir:
- {:|: &} , işlevi çalıştırmak anlamına gelir: ve çıktısını tekrar : işlevine gönderin ve bunu arka planda çalıştırın.
- : – ':' işlevinin başka bir kopyasını belleğe yükleyin
- | – ve çıkışını
- : – belleğe yüklenmesi gereken ':' işlevinin başka bir kopyası
- Bu nedenle, ':|:' , ':' çağrıldığında ':' dosyasının iki kopyasını alır.
- & – işlevleri reddedin, eğer ilk ':' öldürülürse, başlattığı tüm işlevler otomatik olarak ÖLDÜRÜLMEMELİDİR
- } – ':' dediğimizde ne yapacağımızın sonu
- ; Komut Ayırıcı
- : işlevi ilk kez çalıştırır.
Yukarıda, her aramada kendisini iki kez çağıran ve kendisini sonlandırmanın hiçbir yolu olmayan bir işlev oluşturuyorsunuz. Sistem kaynaklarınız bitene kadar iki katına çıkmaya devam edecektir.
Çatal bombaları, hem çatallanma sürecinde CPU zamanını tüketerek hem de işletim sisteminin işlem tablosunu doyurarak çalışır. Çatal bombanın temel bir uygulaması, sürekli olarak kendisinin yeni kopyalarını başlatan sonsuz bir döngüdür.
ÇÖZÜM -1
Genel olarak kurulan sistemlerde, çalıştırabileceğiniz mevcut maksimum işlemleri sınırsız olarak gelmektedir. Bir sınır koymadığınız taktirde, fork bomb gibi komutlar çalıştığında tüm sistem tüketilebilir. İlk olarak, ulimit'in bir kabuk yerleşik olduğunu unutmayın. Bunu type komutunu veya komut komutunu aşağıdaki gibi kullanarak doğrulayabilirsiniz .
type ulimit
Çalıştırabileceğiniz mevcut maksimum işlemlerinin sınırsız olduğunu doğrulayın.
ulimit
Linux'ta çalıştırabileceğiniz mevcut maksimum işlemleri bulmak için aşağıdaki ulimit komutunu kullanın.
ulimit -u
Benim sistemimde, 159030 çalıştırılabilecek işlem sayısı çıktı. Buda 159030 işlemi çalıştırabileceğinizi gösterir. Linux sisteminizi bir çatal bombasından korumak için bu sayıyı düşürmeniz gerekir. Oturumunuzu 5000 işlemle sınırlamak için aşağıdaki komutu kullanın.
ulimit -S -u 5000
Şimdi çatal bombayı tekrar çalıştırın.
:(){ :|:& };:
Aşağıdaki gibi mesajları göreceksiniz.
bash: fork: Resource temporarily unavailable
Linux'ta çatal bombasından kurtuldunuz. Geçerli iş parçacığı sınırını görmek için aşağıdaki pgrep komutunu çalıştırın.
pgrep -wcu $USER
Aşağıdaki gibi bir çıktı alacaksınız.
5002
Sonsuz bir döngüye dönüşebilecek herhangi bir ifadede çatal kullanmaktan kaçının. Önerile bu çözüm sayesinde, Çatal işlemini aşağıdaki gibi sınırlayabilirsiniz. Kullanıcı eklemek ve limitlerini yapılandırmak için konfigürasyon dosyasını root hesabı ile açalım.
sudo vi /etc/security/limits.conf
Dosyayı aşağıdaki gibi düzenleyin.
user_name hard nproc 10
Kayıt edip çıkınız.
:wq!
fork bomb için C programı
// C program Sample for FORK BOMB
// It is not recommended to run the program as
// it may make a system non-responsive.
#include <stdio.h>
#include <sys/types.h>
int main()
{
while(1)
fork();
return 0;
}