Poslao: 20 Apr 2011 13:56
|
offline
- nulti.korisnik
- Legendarni građanin
- Pridružio: 20 Feb 2005
- Poruke: 4505
- Gde živiš: planeta Zemlja
|
Naglašavam da sledeću komandu ne treba da kucate zato što će dovesti do rušenja sistema (moraćete da ugasite računar ili da ga restartujete)!
Elem, čuvena komanda glasi ovako:
:(){ :|:& };:
Objašnjenje:
:()
Ovo je ime funkcije (koristimo prilikom pisanja skripi za školjku). Primer funkcije sa "normalnijim" imenom:
rip_mp2avi ()
Fork bomb (gore naveden) može da se napiše i ovako:
Citat:bomba (){
bomba | bomba &
}; bomba
U čemu je štos? Objasnićemo:
1. Funkcija je bomba () (ovo je "glavna" funkcija);
2. Glavna funkcija bomba | bomba poziva sebe i svoj izlaz pajpuje opet u sebe;
3. & koristimo da stavimo proces u pozadinu. Ako pogledamo tačku 2 detaljnije, jasno nam je zašto je to loše. Uporno ćemo da pozivamo glavnu funkciju u samu sebe u pozadini (ako sam ja dobro razumeo, ovo se ponavlja beskonačno mnogo puta zbog tehnike iz tačke 2);
4. ; završava definisanje funcije;
5. bomba koristimo da pokrenemo funkciju (eng. launch (možda će nekome biti jasnije));
Ovo sam našao na sledećem sajtu: http://www.cyberciti.biz/faq/understanding-bash-fork-bomb/
Interesovalo me je kako radi pa sam zato i potražio. Možda neke delove nisam najbolje razumeo pa vi ispravite ako sam negde pogrešio.
! Korisno: Na ovoj adresi imate objašnjenje kako da ograničite broj korisničkih procesa po korisničkom nalogu.
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
|
Poslao: 21 Apr 2011 00:28
|
offline
- nulti.korisnik
- Legendarni građanin
- Pridružio: 20 Feb 2005
- Poruke: 4505
- Gde živiš: planeta Zemlja
|
FarscapeFan ::ali novi kerneli imaju
"proces oom killer" koji automatski "ubije" procese kad nestane memorije
http://linux-mm.org/OOM_Killer
valjda se on sam uključi u toj situaciji ,ili ne ?
Istražiću ovo (hvala). Nisam ni znao da imamo tako nešto u kernelu
|
|
|
|
Poslao: 21 Apr 2011 09:38
|
offline
- Pridružio: 25 Maj 2005
- Poruke: 1482
- Gde živiš: Gracanica, Kosovo
|
Na sledecem linku ima vise objasnjenja, kako "ubiti" fork, kao i zastita od fork bombinga:
http://en.wikipedia.org/wiki/Fork_bomb
Na Linuxu postoji GRSECURITY patch koji bi (izmedju ostalog) trebalo da obezbedi zastitu od forkovanja, evo malog citata:
...
Fork-bombing protection
CONFIG_GRKERNSEC_FORKBOMB
If you say Y here, you will be able to configure a group to add to users
on your system that you want to be unable to fork-bomb the system.
You will be able to specify a maximum process limit for the user and
set a rate limit for all forks under their uid. (Fork-bombing is a
tactic used by attackers that can be enacted in two ways, (1) loading
up thousands of processes until the system can't take any more (this
method can be stopped outside of the kernel with PAM, however we place
protection for it in the kernel to be more complete and reduce overhead),
and (2), by forking processes at a rapid rate, and then killing them
off, which cannot be protected against in the same way at tactic 1)
The rate limit is specified in forks allowed per second. Set this
limit low enough to stop tactic 2, but high enough to allow for
normal operation. The protection will kill the offending process.
If the sysctl option is enabled, a sysctl option with name
"fork_bomb_prot" is created.
Max processes for fork-bomb protection
CONFIG_GRKERNSEC_FORKBOMB_MAX
Here you can configure the maximum number of processes users in the
fork-bomb protected group can run. I would not recommend setting a
value lower than 8, since some programs like man(1) spawn up to 8
processes to run. The default value should be fine for most purposes.
If the sysctl option is enabled, a sysctl option with name
"fork_bomb_max" is created.
Forks allowed per second
CONFIG_GRKERNSEC_FORKBOMB_SEC
Here you can specify the maximum number of forks allowed per second.
You don't want to set this value too low, or else you'll hinder
normal operation of your system. The default value should be fine for
most users. If the sysctl option is enabled, a sysctl option with name
"fork_bomb_sec" is created.
Group for fork-bomb protection
CONFIG_GRKERNSEC_FORKBOMB_GID
...
|
|
|
|
Poslao: 21 Apr 2011 15:21
|
offline
- Stator
- Ugledni građanin
- Pridružio: 26 Avg 2005
- Poruke: 384
- Gde živiš: Beograd
|
Samo da javim da ovo ne radi na npr RHEL 6. Sada sam probao i prost ctrl + c resava problem.
|
|
|
|
|
Poslao: 22 Apr 2011 10:50
|
offline
- Stator
- Ugledni građanin
- Pridružio: 26 Avg 2005
- Poruke: 384
- Gde živiš: Beograd
|
Nije navlakusa, ovo je test system:
Fedora 14
VMware
RHEL 6.0
Pre pokretanja sam imao oko 130 procesa posle pokretanja imam 1024(default limit po useru) u tom trenutku mi puca watch -d "ps aux | wc -l" komanda.Ali ctrl + c resava stvar. Napominjem da sam komandu pokrenuo kao user. Posle (nekoliko) ctrl + c broj procesa se vraca na normalu
Pritom dobijam gresku bash: fork: Resource temporarily unavailable
Ova greska se javlja kada system ne moze da napravi novi proces zbog manjka memorije.
Rezultat je isti sa i bez selinux-a.
Medjutim ako ga pokrenes kao root sve ode dodjavola. To sam samo zaboravio da napomenem
|
|
|
|
|