欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
經(jīng)典的 Fork 炸彈解析


來(lái)源:saymagic

http://blog.saymagic.cn/2015/03/25/fork-bomb.html

如有好文章投稿,請點(diǎn)擊 → 這里了解詳情



Jaromil 在 2002 年設計了最為精簡(jiǎn)的一個(gè)Linux Fork炸彈,整個(gè)代碼只有13個(gè)字符,在 shell 中運行后幾秒后系統就會(huì )宕機:


:(){:|:&};:


這樣看起來(lái)不是很好理解,我們可以更改下格式:


:()

{

:|:&

};

:


更好理解一點(diǎn)的話(huà)就是這樣:


bomb()

{

bomb|bomb&

};

bomb


因為shell中函數可以省略function關(guān)鍵字,所以上面的十三個(gè)字符是功能是定義一個(gè)函數與調用這個(gè)函數,函數的名稱(chēng)為:,主要的核心代碼是:|:&,可以看出這是一個(gè)函數本身的遞歸調用,通過(guò)&實(shí)現在后臺開(kāi)啟新進(jìn)程運行,通過(guò)管道實(shí)現進(jìn)程呈幾何形式增長(cháng),最后再通過(guò):來(lái)調用函數引爆炸彈。因此,幾秒鐘系統就會(huì )因為處理不過(guò)來(lái)太多的進(jìn)程而死機,解決的唯一辦法就是重啟。


Bomb一下


秉著(zhù)不作不死的心態(tài),我們也來(lái)運行一下,于是我將矛頭指向云主機,,我使用了國內的一個(gè)2G內存的云主機,首先在本地開(kāi)啟兩個(gè)終端,在一個(gè)終端連接云主機后運行炸彈,秒后再?lài)L試用另外一個(gè)終端登錄,效果可以看下面Gif圖:



看,運行一段時(shí)間后直接報出了-bash: fork: Cannot allocate memory,說(shuō)明內存不足了。并且我在二號終端上嘗試連接也沒(méi)有任何反應。因為是虛擬的云主機,所以我只能通過(guò)主機服務(wù)商的后臺來(lái)給主機斷電重啟。然后才能重新登錄:



炸彈危害


Fork炸彈帶來(lái)的后果就是耗盡服務(wù)器資源,使服務(wù)器不能正常的對外提供服務(wù),也就是常說(shuō)的DoS(Denial of Service)。與傳統1v1、通過(guò)不斷向服務(wù)器發(fā)送請求造成服務(wù)器崩潰不同,Fork炸彈有種坐山觀(guān)虎斗,不費一兵一卒斬敵人于馬下的感覺(jué)。更嚇人的是這個(gè)函數是不需要root權限就可以運行的??吹骄W(wǎng)上有帖子說(shuō)某些人將個(gè)性簽名改為Fork炸彈,結果果真有好奇之人中槍?zhuān)囅肴绻袠尩娜耸窃诠痉?wù)器上運行的話(huà),oh,!


預防方式


當然,Fork炸彈沒(méi)有那么可怕,用其它語(yǔ)言也可以分分鐘寫(xiě)出來(lái)一個(gè),例如,python版:


import os


while True:

   os.fork()


Fork炸彈的本質(zhì)無(wú)非就是靠創(chuàng )建進(jìn)程來(lái)?yè)屨枷到y資源,在Linux中,我們可以通過(guò)ulimit命令來(lái)限制用戶(hù)的某些行為,運行ulimit -a可以查看我們能做哪些限制:


ubuntu@10-10-57-151:~$ ulimit -a

core file size          (blocks, -c) 0

data seg size           (kbytes, -d) unlimited

scheduling priority             (-e) 0

file size               (blocks, -f) unlimited

pending signals                 (-i) 7782

max locked memory       (kbytes, -l) 64

max memory size         (kbytes, -m) unlimited

open files                      (-n) 1024

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 8192

cpu time               (seconds, -t) unlimited

max user processes              (-u) 7782

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited


可以看到,-u參數可以限制用戶(hù)創(chuàng )建進(jìn)程數,因此,我們可以使用ulimit -u 20來(lái)允許用戶(hù)最多創(chuàng )建20個(gè)進(jìn)程。這樣就可以預防bomb炸彈。但這樣是不徹底的,關(guān)閉終端后這個(gè)命令就失效了。我們可以通過(guò)修改/etc/security/limits.conf文件來(lái)進(jìn)行更深層次的預防,在文件里添加如下一行(ubuntu需更換為你的用戶(hù)名):


ubuntu - nproc 20


這樣,退出后重新登錄,就會(huì )發(fā)現最大進(jìn)程數已經(jīng)更改為20了,



這個(gè)時(shí)候我們再次運行炸彈就不會(huì )報內存不足了,而是提示-bash: fork: retry: No child processes,說(shuō)明Linux限制了炸彈創(chuàng )建進(jìn)程。


參考


http://en.wikipedia.org/wiki/Fork_bomb


看完本文有收獲?請分享給更多人

關(guān)注「Linux 愛(ài)好者」,提升Linux

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
LINUX最大線(xiàn)程數及最大進(jìn)程數
Linux下設置最大文件打開(kāi)數nofile及nr
大戰C100K之-Linux內核調優(yōu)篇--轉載
關(guān)于內核轉儲的設置方法(轉)
bash版本的fork bomb分析
fork()創(chuàng )建新進(jìn)程
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久