← Back to team overview

sslug-teknik team mailing list archive

Fork bombe

 

KRBJ (Kristian Bjørnskov) wrote (subj. "Re: [TEKNIK] Udswap en udvalgt process"):
> Hvad med at starte et program op der spiser alt den memory den kan 
> komme til
[... cut crazy memory allocator ...]

Fedt. Så fik jeg tjekket, at mine memory-begrænsninger i 
/etc/security/limits.conf virker.

Er der nogen, der har en fork-bombe (program, der fork'er tonsvis 
af børne-processer), så jeg kan teste, om min proces-begrænsning 
også virker som forventet?


Forskud på evt. spørgsmål:

På nogle maskiner, der benyttes af mere end én person af gangen 
er det uhensigtsmæssigt, hvis en bruger kommer til at lægge beslag 
på så mange ressourcer, at de andre ikke kan arbejde. Fx. har jeg 
set eksempler på, at folk logget ind via XDM blev smidt af, hvis 
en anden XDM-bruger startede talrige kæmpe programmer.

For at begrænse rammerne for folks udskejelser har jeg skabt en 
/etc/security/limits.conf med flg. indhold:
*               hard    memlock         60000
*               hard    rss             60000
*               hard    as              60000
*               hard    data            60000
*               hard    stack           60000
*               hard    nproc           500
*               hard    maxlogins       30
*               hard    fsize           500000

De første fem linjer siger mig egentlig ikke så meget og er derfor 
sat lidt i blinde. Det viste sig dog, at "as"-linjen var den, der 
bestemte hvor langt Kristians crazy-memory-allocator program kunne 
nå (60mB).

Den sidste linje handler om, at jeg ikke gider at rode med egentlige 
quotas. Linjen forhindrer mod følgende situation, som jeg engang 
oplevede: Et problem i et X-program førte til en eksplosivt voksende 
.xsession-errors fil, som til sidst bevirkede DoS ved at fylde 
filsystemet op.

For at linjerne får effekt kræver det, at følgende linje er indsat 
i relevante /etc/pam.d/... fil:
session    required     /lib/security/pam_limits.so

Fx. kunne /etc/pam.d/xdm se ud som følger:
auth       required     /lib/security/pam_securetty.so
auth       required     /lib/security/pam_pwdb.so shadow nullok
auth       required     /lib/security/pam_nologin.so
account    required     /lib/security/pam_pwdb.so
password   required     /lib/security/pam_cracklib.so
password   required     /lib/security/pam_pwdb.so shadow nullok use_authtok
session    required     /lib/security/pam_pwdb.so
session    optional     /lib/security/pam_console.so
session    required     /lib/security/pam_limits.so

-- 
Greetings from Troels Arvin, Copenhagen, Denmark


Follow ups

References