Je ne connais pas de moyen d'avoir une machine multi-utilisateurs fonctionnelle pour une tache comme le developpement, et insensibles aux DoS.
Un DoS tres simple est un tres simple programme qui fait des fork et des malloc rapides et brutaux. Une machine qui possede beaucoup de swap (genre les serveurs) freeze en beaute, et est irrecuperable. Apparemment quand t'as pas, ou pas trop de swap tu peux reussir a reprendre la main mais c'est chaud. La seule maniere de lutter contre ca, a priori, est d'utiliser ulimit (man bash / search ulimit), mais si tu fais cela tu peux dire au revoir au developpement pour lequel tu as besoin de plusieurs centaines de Mo de memoire pour compiler certains logiciels, par exemple du C++ avec des template en -O3.
Apres quelques tests j'avais trouve que les limites suivantes permettaient de ne pas se faire niquer par un DoS a base de fork et malloc mais bien sur tu peux plus rien faire en utilisateur normal.
# (/etc/services) fuck them all except root and me
if [ "$UID" != "0" ] && [ "$UID" != "576" ]; then
ulimit -t 1
ulimit -u 5
ulimit -v 5000
ulimit -s 1000
ulimit -n 15
ulimit -f 1000
ulimit -d 1000
ulimit -l 1000
ulimit -m 500
echo "Consult your ulimit before any work on this host :-)"
fi
[^] # Re: Securite basique d'une machine
Posté par gc . En réponse à la dépêche Noyau Linux, 3xpl01t r00t & DoS. Évalué à 10.
Un DoS tres simple est un tres simple programme qui fait des fork et des malloc rapides et brutaux. Une machine qui possede beaucoup de swap (genre les serveurs) freeze en beaute, et est irrecuperable. Apparemment quand t'as pas, ou pas trop de swap tu peux reussir a reprendre la main mais c'est chaud. La seule maniere de lutter contre ca, a priori, est d'utiliser ulimit (man bash / search ulimit), mais si tu fais cela tu peux dire au revoir au developpement pour lequel tu as besoin de plusieurs centaines de Mo de memoire pour compiler certains logiciels, par exemple du C++ avec des template en -O3.
Apres quelques tests j'avais trouve que les limites suivantes permettaient de ne pas se faire niquer par un DoS a base de fork et malloc mais bien sur tu peux plus rien faire en utilisateur normal.
# (/etc/services) fuck them all except root and me
if [ "$UID" != "0" ] && [ "$UID" != "576" ]; then
ulimit -t 1
ulimit -u 5
ulimit -v 5000
ulimit -s 1000
ulimit -n 15
ulimit -f 1000
ulimit -d 1000
ulimit -l 1000
ulimit -m 500
echo "Consult your ulimit before any work on this host :-)"
fi