Zapobieganie wykonywaniu przez użytkowników systemu Linux wszelkich niezatwierdzonych elementów

0

Dla niektórych użytkowników „bob” w Linuksie możliwe jest ograniczenie rzeczy wykonywalnych przez „bob” tylko do określonych ścieżek.

Załóżmy na przykład, że „bob” ma katalog domowy / home / bob

„bob” nie może nigdy odczytywać / zapisywać / wykonywać (zero praw) niczego powyżej / home / bob.

/ bin, / lib, / usr / bin, / usr / lib, / usr / local / bin, / usr / local / lib itp. mają jawnie odpowiednie ustawienia rx - więc 'bob' może wykonywać rzeczy z tych ścieżek, ale nie pisz do nich.

„bob” ma prawa rwx do własnego katalogu (/ home / bob), ale czy można domyślnie zabronić bobowi wykonywania rzeczy z jego własnego katalogu, a następnie zezwolić, aby niektóre rzeczy (programy uruchamiające, skrypty itp. selektywnie) mogły być wykonywane przez „bob” „

Uwaga - 'bob' może kompilować własne rzeczy w / home / bob i uruchamiać te rzeczy (należy temu zapobiec). Również „bob” może zawsze używać chmod, chgrp itp. Na plikach będących jego własnością. Potrzebne jest zapobieganie wykonywaniu - nawet w przypadku posiadanych plików.

no.names.please
źródło

Odpowiedzi:

2

Umieść katalogi domowe w noexecsystemie plików. Pomoże to zapobiec uruchamianiu przechowywanych w nim plików binarnych, chociaż nie jest to gwarancja 100%.

Umieść dowolne inne zapisywalne przez użytkownika lokalizacje, takie jak / tmp, również w systemach plików noexec.

Umieść wszystko, co chcesz, aby użytkownicy mogli wykonać, na przykład / usr / local, należące do roota i posiadające odpowiednie uprawnienia.

Zauważ, że nie zapobiegnie to analizowaniu przez parserów i wykonywaniu kodu przechowywanego w katalogu domowym boba. Na przykład skrypt Perla może mieć ustawiony bit wykonania i być wykonywany jako ./myscript.pllub może zostać wykonany, ponieważ perl ./myscript.plw takim przypadku będzie on czytany tylko jako dane wejściowe do interpretera Perla.

Jeśli chcesz mieć lepsze zabezpieczenia, rozważ ulepszenie za pomocą więzów chroot, SELinux, a może nawet całkowite usunięcie dostępu do powłoki boba. Jeśli wolno mu używać swojego konta tylko jako uwielbianego magazynu plików, to czy naprawdę potrzebuje dostępu do powłoki? Może na przykład ograniczenie niezaufanym użytkownikom dostępu do sftp, SMB / CIFS / NFS lub WebDAV będzie działać lepiej w twoim przypadku użycia?

CVn
źródło
Dziękuję za szybką odpowiedź. Potrzebne jest, aby „bob” był w stanie skompilować rzeczy (tj. Zezwolić na wykonanie gcc lub zainstalowanego systemu firefox, na przykład itp.) („Bob” nie powinien być w stanie skopiować lub utworzyć pliku binarnego i wykonać go)
nie. names.please
dla jasności - „bob” powinien być w stanie uruchomić systemowego firefoxa - ale nie przez niego świeżo skompilowanego binarnego firefoxa - lub - nie pobranego binarnego firefoxa.
no.names.please