Stworzyłem aplikację, która używa NTP do zmiany czasu w sieci, do synchronizacji dwóch moich komputerów. Działa jako root
, ponieważ tylko ta ostatnia może zmieniać godzinę i datę w Linuksie (tak myślę).
Teraz chcę go uruchomić jako użytkownik. Ale muszę uzyskać dostęp do czasu.
- Czy dobrą praktyką jest uruchamianie demona na koncie użytkownika innego niż root?
- Czy mam dać mojej aplikacji możliwość taką jak
CAP_SYS_TIME
? - Czy nie wprowadza to luki w zabezpieczeniach?
- Czy jest lepszy sposób?
security
daemon
access-control
Anonimowy12223
źródło
źródło
ntp
konto użytkownika (przynajmniej w systemach Linux), więc nie powinno być wymagane wprowadzanie tej zmiany. Jaki pakiet NTP zainstalowałeś?Odpowiedzi:
Tak, i to jest powszechne. Na przykład Apache startuje jako root, a następnie forsuje nowy proces jako dane www (domyślnie).
Jak powiedziano wcześniej, jeśli Twój program zostanie zhakowany (np. Wstrzyknięcie kodu), atakujący nie uzyska dostępu do konta root, ale będzie ograniczony do uprawnień nadanych temu konkretnemu użytkownikowi.
Jest to dobry pomysł, ponieważ unikasz używania setuid i ograniczasz uprawnienia do tej bardzo specyficznej możliwości.
Możesz zwiększyć bezpieczeństwo, na przykład:
źródło
USER
w katalogu, użyjchroot
(uruchom go jako użytkownik root). Należy jednak wcześniej utworzyć i zainicjować więzienie (katalog). Krótko mówiąc, musisz umieścić biblioteki i pliki binarne potrzebne procesowi w tym więzieniu, a następnie wywołaćchroot <path/to/jail> <command>
. Dobry samouczek z kilkoma potrzebnymi przykładami jest dostępny tutajO ile nie masz silnych, niepodważalnych powodów, powinieneś po prostu użyć pakietu NTP dostarczonego z dystrybucją GNU / Linux. Standardowy demon NTP potrzebował lat, aby rozwinąć się i oferować zaawansowane funkcje, takie jak spowalnianie lub przyspieszanie zegara systemowego w celu synchronizacji z zegarem sieciowym lub GPS. Został dostosowany do synchronizacji zegarów, więc najprawdopodobniej jest najlepszym narzędziem do tego celu.
ntpd
jest nadal utrzymywany, sądząc po najnowszych aktualizacjach (w momencie pisania tego postu). Jeśli potrzebujesz więcej funkcji, sugeruję skontaktowanie się bezpośrednio z programistami, zaufaj temu, co mają do powiedzenia na ten temat.źródło
Jeśli masz program, który musi być w stanie wykonywać funkcję X (np. Manipulować zegarem), i możesz nadać mu przywilej / moc wykonywania funkcji X i nic więcej, to jest lepsze niż podanie całej puszki alfabetu zupa. Jest to znane jako zasada najmniejszego przywileju . Zastanów się, co jeśli twój program zawiera błąd - zwykły błąd programowy lub podatną na atak lukę w zabezpieczeniach. Jeśli działa jako „root”, może usunąć wszystkie pliki - lub wysłać je do atakującego. Jeśli jedyną rzeczą, którą program jest w stanie zrobić, jest manipulowanie zegarem (i nieuprzywilejowanymi funkcjami, takimi jak manipulowanie plikami w zablokowanym katalogu), to jest to najgorsze, co może się zdarzyć, jeśli program zostanie nieuczciwy.
źródło