Python: Zabezpieczanie niezaufanych skryptów / podprocesów za pomocą chroot i chjail?

Piszę serwer internetowy oparty na Pythonie, który powinien być w stanie wykonywać „wtyczki”, aby można było łatwo rozszerzyć funkcjonalność.

W tym celu rozważałem podejście do posiadania pewnej liczby folderów (po jednym dla każdej wtyczki) i wielu skryptów powłoki / Pythona nazwanych po predefiniowanych nazwach dla różnych zdarzeń, które mogą wystąpić.

Jednym z przykładów jest posiadanieon_pdf_uploaded.py plik, który jest wykonywany, gdy plik PDF jest przesyłany na serwer. W tym celu używałbym Pythonapodproces przybory.

Dla wygody i bezpieczeństwa pozwoliłoby mi to używać uniksowych zmiennych środowiskowych w celu dostarczenia dalszych informacji i ustawienia katalogu roboczego (cwd) procesu, tak aby mógł uzyskać dostęp do właściwych plików bez konieczności znajdowania ich lokalizacji.

Ponieważ kod wtyczki pochodzi z niezaufanego źródła, chcę uczynić go tak bezpiecznym, jak to możliwe. Moim pomysłem było wykonanie kodu w podprocesie, ale umieszczenie go w więzieniu chroot z innym użytkownikiem, aby nie mógł uzyskać dostępu do żadnych innych zasobów na serwerze.

Niestety, nie mogłem nic o tym wiedzieć, a nie chciałbym polegać na niezaufanym skrypcie, aby wejść do więzienia.

Ponadto nie mogę umieścić procesu głównego / wywołującego w więzieniu chroot, ponieważ kod wtyczki może być wykonywany w wielu procesach w tym samym czasie, gdy serwer odpowiada na inne żądania.

Oto pytanie: w jaki sposób mogę wykonać podprocesy / skrypty w więzieniu chroot z minimalnymi uprawnieniami, aby chronić resztę serwera przed uszkodzeniem przez wadliwy, niezaufany kod?

Dziękuję Ci!

questionAnswers(2)

yourAnswerToTheQuestion