Ubuntu'yu çatal bombadan nasıl korursunuz?


72

Birinin çatal bombadan bahsettiğini duydum, biraz araştırma yaptım ve insanların komut satırına yazabilecekleri garip görünen bazı karakterler hakkında korkunç bilgiler buldum ve sonuç olarak bilgisayarda kötü şeyler yaptım. Kesinlikle anlamadığım komutları vermeyeceğim ama kimse ne olacağını asla bilemez.

Bazı işletim sistemlerinin yöneticinin, çatal bombalarının etkilerini hafifletmek için kullanıcı işlemlerine bir miktar sınır koymasına izin verdiğini duydum, bu koruma varsayılan olarak Ubuntu'da mı yoksa sudo ayrıcalığına sahip bir kişi mi belirlemek zorunda? Öyleyse nasıl?

Yanıtlar:


73

Ubuntu'da ve diğer Linux dağıtımlarında üretilebilecek işlem miktarını değiştirerek kolayca sınırlayabilirsiniz. /etc/security/limits.conf

sudoedit /etc/security/limits.conf

Ardından bu satırı o dosyanın altına ekleyin:

*    hard     nproc     nnn

nerede:

  • hard Sınırı çekirdek düzeyinde ayarlar, böylece yeniden başlatmadan değiştirilemez.
  • nproc Kullanıcı başına maksimum işlem sayısıdır.
  • nnn sisteminiz için hesaplamanız gereken bir sayıdır:

    ps aux -L | cut --delimiter=" " --fields=1 | sort | uniq --count | sort --numeric-sort | tail --lines=1
    

Yukarıdaki komut, iş parçacığı dahil tüm kullanıcılar için tüm işlemleri listeler , bunları toplar ve kullanıcı adını en fazla işlemle listeler. Güvenli tarafta olmak için, yukarıdaki komutu çalıştırmadan önce normalde ihtiyaç duyduğunuz kadar uygulamayı açın ve güvenlik için bu sayıyı ikiye katlayın.

Bu limit konulduktan sonra, yeniden başlatmanız gerekir, ancak sistemdeki kök olmayan her kullanıcıyı etkileyecektir . Bu nedenle, bir çatal bomba kök olmayan herhangi bir kullanıcı tarafından yürütülürse, bu zor sınırlamaya sahip olacaktır.

Grup ve joker karakter sınırları, varsayılan olarak kök kullanıcıya uygulanmaz . rootSüper kullanıcı için bir kural uygulamak istiyorsanız kurallardaki değişmez kullanıcı adını kullanın .

Ayrıca, yakında herhangi bir zamanda yeniden başlatmak istemiyorsanız sudo ulimit -u 800, kısıtlamayı yalnızca koşu oturumuna yerleştirecek olanı kullanabilirsiniz , ancak sudoayrıcalıklara sahip bir çatal bomba ile kolayca atlatılabilir !

Yeniden başlattıktan sonra, içinde /etc/security/limits.confne varsa kullanılacaktır.

Çatal bombalarıyla ilgili bazı ek bilgiler: Kötü amaçlı yazılım değil ya da korkunç bir şey değiller. Genelde, kendisini iki kez çağıran bir komut dosyası kadar basit bir şeyden oluşur - bu sayede makinedeki varlığını katlanarak artırır. Hızlı tempoya sahip olmaları durumunda küçük bir bellek ayak izi olsalar bile, çoğullar mevcut tüm RAM'leri hızlı bir şekilde doldururlar ve makine donar veya yeniden başlatılır. Tek tehlike kaydedilmemiş bilgileri kaybetmek. Bir çatal tahtasını kötü niyetli yazılımdan çok şaka olarak sınıflandırırdım.

Önemli bir hatırlatma:

Eyleminin% 98’inden emin olmadığınız zamanlarda nadiren komut satırında hiçbir şey yapmamanız gerekir. Çalıştırdığınız komutları okuyamıyorsanız - yapma. Bu, her türlü boşluğu gizlemek için kullanılabilecek, okunamayan hex / base64 karakter parçalarına iki kat uygulanır. Bir komuttan emin değilseniz, Ubuntu Man sayfalarındaki eylemlerini her zaman arayabilir ve o sudozamandan beri root kullanıcısı olarak çalıştırılacağına dikkat edin.


@MarcoCeppi: Numaranız tipik bir Birlik kullanıcısı için çok uzakta değildi: hesaplamaya göre şu anda sistemim için 404 ...
Fabby

1
Söyleyeyim, alias ":(){ :|: & };:"="echo 'No.'"benim gibi bir şey koymak .bashrc- her giriş yürütecek mi?
UniversallyUniqueID

Daha yüksek bir nproc limiti seçmenin bir dezavantajı var mı? Görünen o ki, mevcut işlem sayısını sınırlayan veya hatta iki katına çıkacak fazla alan yok, 10.000 veya daha fazla bir sınır hala çatal bombalarına karşı etkili olabilir mi? Her bir çatal / işlem ne kadar koç tüketir? Belki daha evrensel bir RAM kaynaklı limit vardır?
Xen2050

1

Beğendiğim basit bir yol, takma ad her zaman uygulanmadığı halde takma ad oluşturmaktır, yukarıdaki cevabı kontrol edin.

alias :="echo No."

şimdi

$ :(){ :|: & };:
bash: syntax error near unexpected token `('

22
elbette, bu ortak bir çözümdür; bu nasıl durur a(){ a|a & };a? (ya da başka bir fonksiyon ismi?)
kedi
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.