Sto scrivendo un programma che genera processi figli. Per motivi di sicurezza, voglio limitare ciò che questi processi possono fare. Conosco misure di sicurezza esterne al programma come chroot
o ulimit
, ma voglio fare qualcosa di più. Voglio limitare le chiamate di sistema fatte dal processo figlio (ad esempio impedendo le chiamate verso open()
, fork()
e cose del genere). C'è un modo per farlo? In modo ottimale, le chiamate di sistema bloccate dovrebbero tornare con un errore, ma se ciò non è possibile, uccidere il processo è anche un bene.Prevenire i processi per eseguire alcune chiamate di sistema
Immagino che si possa fare wuth ptrace()
ma dalla pagina man non capisco davvero come usarlo per questo scopo.
Probabilmente vuoi SELinux http://en.wikipedia.org/wiki/Security-Enhanced_Linux Non sono sicuro al 100%, ma dovrebbe avere un'API programmabile. –
[ 'prctl (PR_SET_SECCOMP, ...)'] (http://www.kernel.org/doc/man-pages/online/pages/man2/prctl.2.html) può essere quello che vuoi. È così vicino a "non consentire le syscalls" come puoi ottenere. – Damon
Il problema con 'prctl (PR_SET_SECCOMP, ...)' è che si blocca anche il 'exec()' chiamata, quindi è inutilizzabile per me. – petersohn