Protejarea impotriva atacului fork bomb





Salut, sunt Ionut din partea itassistant.org si astazi va voi prezenta ce este un fork bomb si cum putem sa ne protejam impotriva unui astfel de atac.

Un fork bomb este un atac de tipul “denial of service” si consta in pornirea unui numar mare de procese, care duc la saturarea tabelei de procese, a procesorului si a memoriei. Acest atac poate incetini sistemul sau se poate chiar ajunge la imposibilitatea de a-l folosi fiind necesar un reboot.

Numele atacului vine de la apelul de sistem Linux: “fork” in urma caruia un proces da nastere unui proces copil.

Sa analizam un simplu exemplu de fork bomb in bash:

bomb() { bomb | bomb &}; bomb

Am creat o noua functie numita: bomb, care se autoapeleaza si isi redirecteaza iesirea catre alta copie a sa. Deasemnea rulam cele 2 copii in background astfel incat daca procesul parinte este omorat sa nu isi incheie executia si copilul.

Daca rulam acest exemplu pe un server neprotejat, acesta cel mai probabil s-ar bloca. Pentru a porni un fork bomb pe un sistem nu ai neaparat nevoie de drepturi administrative, un cont de simplu utilizator care nu a fost limitat corespunzator este de ajuns.

Pentru a verifica limitarile userului curent tastam comanda:

ulimit -a

In cazul nostru suntem interesati de campul: “max user processes”. Daca acest camp este unlimited, sistemul este vulnerabil.

Pentru a proteja sistemul de un atac de tip fork bomb putem sa limitam toti userii inafara de cel privilegiat: root. Facem acest lucru editand fisierul: “/etc/bash.bashrc” (avem nevoie de drepturi administrative) si sa adaugam urmatoarele reguli:

if [ `/usr/bin/id -u` -ne 0]; then
	ulimit -u 2000 &> /dev/null
else
	ulimit -u unlimited
fi

Acum sistemul nu mai este vulnerabil deoarece cand userul atinge limita de procese (2000 in cazul de fata), nu vor mai fi create noi procese.

Related posts:

  1. Intrebari si raspunsuri Sisteme de Operare
Tags: ,

V-a placut acest tutorial? Aveti anumite sugestii pentru urmatoarele tutoriale video? Lasati un comentariu! Feedback-ul vostru este foarte important pentru noi.

Pentru intrebari mai elaborate, cu caracter general, va rugam folositi forumul si in cel mai scurt timp veti primi un raspuns. Astfel ii vom ajuta si pe ceilalti sa invete din eventualele probleme.

7 comentarii la “Protejarea impotriva atacului fork bomb”

  1. cioc says:

    super tare . se vede ca esti in domeniu , ce sti ca propia palma . :)

  2. admin says:

    Multumim, cioc. Te mai asteptam.

  3. Silviu says:

    Diferite tipuri de fork bomb, in functie de SO si limbaj:

    XP/Vista:
    creati un .bat si scrieti:

    :bomb
    start %0
    goto bomb

    am reusit sa blochez si win 7 cu batul asta

    cod C :
    #include
    int main() { while(1) fork(); }

    Perl :
    perl -e “fork while fork” &

    Python:
    import os
    while(1):
    os.fork()

    pt python atentie la sintaxa.

    Din ce am studiat eu pe windows nu prea se poate limita numarul de procese (cel putin nu am gasit solutie pt asta)

  4. paul says:

    Foarte util si usor de inteles chiar va admir.
    Exista cumva un tip de program sau protectie impotriva atacurilor DDoS?

  5. Ionut
    says:

    Salut Paul,

    Exista firewall pentru a bloca acest tip de atacuri.
    In Linux un instrument bun este ‘iptables’.

  6. paul says:

    Aha deci exista,crezi ca in scurt timp va aparea si un tutorial cu el sau no chance?:D

  7. Ionut
    says:

    Salut Paul,

    O sa facem si un tutorial pe tema asta, pana atunci aici gasesti un articol interesant: https://help.ubuntu.com/community/IptablesHowTo