Rozważam kilka opcji dla procesu piaskownicy w systemie Linux. Używanie clone()
z CLONE_NEWNET
(itp.) Jest jedną z opcji. CLONE_NEWNET
zapewnia, że proces piaskownicy nie może wykonywać lub akceptować rzeczywistych połączeń sieciowych. Ale chciałbym całkowicie wyłączyć gniazda dla tego procesu, nawet bind()
do dowolnego portu na 0.0.0.0
i powiązać z uniksowym gniazdem unixowym (nawet anonimowym). Chciałbym to zrobić, aby zapobiec wykorzystaniu zbyt dużej ilości zasobów jądra przez powiązanie z tysiącami portów. Jak mogę to zrobić?Jak wyłączyć tworzenie gniazda dla procesu Linux, dla piaskownicy?
Ogólnie interesuję się wieloma podejściami do piaskownicy (tj. Dostarczonymi przez jądro Linuksa i egzekwowanymi przez ptrace()
), ale w tym pytaniu interesuje mnie tylko aspekt tworzenia gniazda w podejściu do piaskownicy (tak jeśli sugerujesz podejście do piaskownicy, wyjaśnij również, jak zapobiec tworzeniu gniazda za pomocą tego narzędzia) i nie interesują mnie podejścia, które wymagają łatania jądra lub które wymagają załadowania modułu jądra, który nie jest częścią domyślnego pakietu jądra systemu Ubuntu Lucid lub które wpłynęłyby na każdy proces w systemie.
Podobny Qs na procesy Sandboxing/uwięzienie w systemie Linux lub UNIX: * http://unix.stackexchange.com/q/6433/4319 * http://stackoverflow.com/q/3859710/94687 * http://stackoverflow.com/q/4249063/94687 * http://stackoverflow.com/q/1019707/94687 –