Автор Тема: Forkbomb  (Прочетена 3485 пъти)

delyanyanev

  • Новаци
  • *
  • Публикации: 2
    • Профил
Forkbomb
« -: Mar 15, 2013, 00:40 »
Здравейте,
при преглеждане на тази секция не намерих нищо по въпроса та реших да  споделим опит и добри практики относно защитата и оптимизацията на системната  сигурност и производителност.Така наречените Forkbombs могат да се създадат от не super user  привилегирован потребител,като да се стигне до отказ на услуги и поражения по системата.Едно от средствата за предотвратяване на такива атаки е ограничаването на отделните потребители до системни ресурси посредством ulimit,както и използването sysctl за подобряване на производителността на сървъра.Та тук искам да споделим добри практики от използването на тези средства,както и допълнителна информация относно темата.
Благодаря :) 
Активен

shoshon

  • Напреднали
  • *****
  • Публикации: 497
    • Профил
Re: Forkbomb
« Отговор #1 -: Mar 15, 2013, 11:28 »
Hahaha

Fork бомбите  бяха проблем едно време. Сега всички ОС идват така:

[hpeivged@ivan-laptop Videos]$ 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) 30924                                                                                                                                                           
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) 1024                                                                                                                                                           
virtual memory          (kbytes, -v) unlimited                                                                                                                                                       
file locks                      (-x) unlimited     


Виждаш ли - max user proceses = 1024. Има обаче един голям проблем.

max memory size         (kbytes, -m) unlimited


Много се смях веднъж. Ама много...
http://www.openwall.com/lists/oss-security/2012/12/22/6
CVE-2012-5667

Long story short.

grep match-ва редове. Ако реда е твърде голям умира със съобщение че няма памет.

Някой C спец ( сигурно такъв като мене) е "оправил" това и имаше период в който реда можеше да е много дълъг...

Убих си лаптопа с простото

grep "U gonna die" /dev/zero

:D

                                                                                                                                                                       

[ivan@ivan-laptop Videos]$  grep "U gonna die" /dev/zero
grep: паметта е изчерпана                                                                                                                                                                           
[ivan@ivan-laptop Videos]$ ^C                                                                                                                                                                   
          # след 30 мин първи отговор от шел-а                                                                                                     
[ivan@ivan-laptop Videos]$ uptime                                                                                                                                                               
 11:24:39 up  2:15,  5 users,  load average: 26,32, 49,89, 26,41   

Кви форк бомби кви пет леа. Вече е по лесно :)


Активен

dejuren

  • Напреднали
  • *****
  • Публикации: 1025
  • Distribution: Ubuntu, RedHat
  • Window Manager: lxde KDE4
    • Профил
Re: Forkbomb
« Отговор #2 -: Mar 15, 2013, 16:39 »
Много се смях веднъж. Ама много...
http://www.openwall.com/lists/oss-security/2012/12/22/6
CVE-2012-5667

Long story short.

grep match-ва редове. Ако реда е твърде голям умира със съобщение че няма памет.

Някой C спец ( сигурно такъв като мене) е "оправил" това и имаше период в който реда можеше да е много дълъг...

Убих си лаптопа с простото

grep "U gonna die" /dev/zero

[ivan@ivan-laptop Videos]$  grep "U gonna die" /dev/zero
grep: паметта е изчерпана                                                                                                                                                                           
[ivan@ivan-laptop Videos]$ ^C                                                                                                                                                                   
          # след 30 мин първи отговор от шел-а                                                                                                     
[ivan@ivan-laptop Videos]$ uptime                                                                                                                                                               
 11:24:39 up  2:15,  5 users,  load average: 26,32, 49,89, 26,41   


CVE-2012-5667 е фиксиран във версия grep >= 2.11
Активен

http://webchat.freenode.net/?channels=ubuntu-bg
The quieter you become, the more you are able to hear.
Две седмици цъкане с мишката спестяват два часа четене на документацията.

vyrgozunqk

  • Гост
Re: Forkbomb
« Отговор #3 -: Mar 15, 2013, 17:19 »
Брех, това бил готин начин за чистене на паметта... от 2 ГБ използвана с

[ceco@linux-7788 ~]$ grep "U gonna die" /dev/zero
grep: memory exhausted


Кърнъла, разкара всичко излишно и изпразни до 700МБ след прекратяването на операцията... хахаха
Активен

dejuren

  • Напреднали
  • *****
  • Публикации: 1025
  • Distribution: Ubuntu, RedHat
  • Window Manager: lxde KDE4
    • Профил
Re: Forkbomb
« Отговор #4 -: Mar 15, 2013, 17:58 »
... И ти уби кеша, всички приложения трябва да се изчетат пак от диска при стартиране барабар с отворените документи, машината става по-бавна до въстановяването на кеша в паметта...

Въобще тролинга може и да мине веднаж-дваж, докато народа се усети, че не е "чистене на паметта" а набутване :-)
Активен

http://webchat.freenode.net/?channels=ubuntu-bg
The quieter you become, the more you are able to hear.
Две седмици цъкане с мишката спестяват два часа четене на документацията.

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Forkbomb
« Отговор #5 -: Mar 15, 2013, 18:33 »
Всъщност изхвърлянето на кешовете става доста по-безаварийно през procfs. Мен друго ме интересува - защо не направят подобен мехзнизъм, който примерно изхвърля указан от потребителя процент (грубо разбира се, няма как да стане точно) от кешираните данни. Идеята е че има частни случаи, в които memory management-а в линукс прави глупости. Например когато някой процес задели бързо голямо количество памет (както обикновено jvm-ите при стартиране), в този момент, ядрото понякога предпочита вместо да изхвърли кеширани страници памет, да pageout-ва, което е ужасно глупаво (и не, бутането на proc/sys/vm/swapiness няма много ефект за такива моменти). Като резултат имаш гигабайти кеширани работи и си да речем половин гигабайт навътре в swap-а. След което минават ония kernel thread-ове дето се занимават с page-ването, kswapd ли кво беше и се почва едно бавене и чагъртане по дисковете, много дразни.
Активен

"Knowledge is power" - France is Bacon

!ntel

  • Напреднали
  • *****
  • Публикации: 444
    • Профил
Re: Forkbomb
« Отговор #6 -: Mar 15, 2013, 22:16 »
Последното ми направи много голямо впечатление заради държанието на една виртуална машина.
Седя си аз и по едно време почва да ми чегърта диска. Кога поглеждам, нищо ново не съм пуснал да се зарежда - wtf?
След малък "оглед" разбирам, че проблема е в виртуалната машина.

И то, вината е разпределена м/у самата операционна система на виртуалната машина и едновременно с това - hypervisor-a за виртуализация. Да не навлизам в скучни подробности, но най-голямо впечатление ми направи, това че swapiness наистина не помага, колкото и да го връткаш.
А най-странното е, че виртуализатора показва много по-малко заета памет от колкото виртуалната машина, което си е направо странно ако питате мен. Проблема с тези пусти кешове си е доста голям в тази област. Но просто някой го мързи да измисли/имплементира по-читав способ. Както казва gw - всичко е чудесно, докато в един хубав момент не почне звука от хард диска :D
Активен

vyrgozunqk

  • Гост
Re: Forkbomb
« Отговор #7 -: Mar 16, 2013, 17:17 »
[ceco@linux-7788 ~]$ grep "U gonna die" /dev/zero

'ша ви Управи! хаха  :D >:D

тролололоо
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Forkbomb
« Отговор #8 -: Mar 17, 2013, 00:10 »
Добре де, каква е тази радост :) Същото ще го постигнеш с няколко реда програмка, която цикли malloc(). Може дори с цел да прецакаш ulimit ограниченията да форкваш повече процеси, които правят същото, защото ulimit -m е per-process ограничение.

Ако сега разбирате че линукс въобще не е чак толкова дуракоустойчива система и ако някой има локален достъп, може да натвори доста глупости, значи това си е ваш проблем :)
Активен

"Knowledge is power" - France is Bacon

vyrgozunqk

  • Гост
Re: Forkbomb
« Отговор #9 -: Mar 17, 2013, 01:02 »
Е това " U gonnna die"  не те ли гъделичка... как няма да се кефя хахаха.... Ташак да става ... ::) :D

И от какъв зор да пиша " няколко реда програма ", като мога да фрасна " U gonna Die " и тия, които гледат проектора да умрат...  ;D ;D ;D :D
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Forkbomb
« Отговор #10 -: Mar 17, 2013, 01:04 »
Ми ето  една причина - някой е решил да реши проблема като си настрои лимитите за максимална памет на процес. Пишеш 20 реда програма и лимитите отиват "фостата". Не е ли забавно :)
Активен

"Knowledge is power" - France is Bacon

vyrgozunqk

  • Гост
Re: Forkbomb
« Отговор #11 -: Mar 17, 2013, 01:08 »
това е добра идея, трябва да вкараш и едно ASCII снимче на спиндерман, да се извежда при изпълняване...  :P ;D
« Последна редакция: Mar 17, 2013, 01:15 от vyrgozunqk »
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Forkbomb
« Отговор #12 -: Mar 17, 2013, 01:14 »
Това което ме притеснява е че филмчето може и да не завърши преди машината да сдаде багажа и тогава язък за креативното творчество :)
Активен

"Knowledge is power" - France is Bacon

vyrgozunqk

  • Гост
Re: Forkbomb
« Отговор #13 -: Mar 17, 2013, 01:17 »
Еми тогава ще стане от "фостата" на "фаноса"  :)

Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Forkbomb
« Отговор #14 -: Mar 17, 2013, 01:26 »
Ееее ама ти много се вживя с този спайдърмен сега :)
Активен

"Knowledge is power" - France is Bacon