Chciałbym mieć konto root bezpiecznie, nawet jeśli mój nieuprzywilejowany użytkownik jest zagrożony.
W systemie Ubuntu domyślnie można używać sudo tylko ze względów bezpieczeństwa. Nie jestem jednak pewien, czy jest to bezpieczniejsze niż logowanie przy użyciu konsoli tekstowej. Jest zbyt wiele rzeczy, które mogą pójść nie tak, jeśli osoba atakująca może uruchomić kod jak mój normalny użytkownik. Na przykład dodawanie aliasów, dodawanie elementów do mojej ŚCIEŻKI, ustawianie keyloggerów LD_PRELOAD i X11, żeby wymienić tylko kilka. Jedyną zaletą, którą widzę, jest limit czasu, więc nigdy nie zapomnę się wylogować.
Mam takie same wątpliwości co do su, ale nie ma nawet limitu czasu. Niektóre operacje (szczególnie przekierowanie IO) są bardziej wygodne z su, ale ze względów bezpieczeństwa wydaje się, że jest gorzej.
Logowanie na konsoli tekstowej wydaje się najbezpieczniejsze. Ponieważ jest uruchamiany przez init, jeśli atakujący może kontrolować PATH lub LD_PRELOAD, jest już rootem. Zdarzenia naciśnięcia klawisza nie mogą zostać przechwycone przez programy działające na X. Nie wiem, czy programy działające na X mogą przechwycić [ctrl] + [alt] + [f1] (i otworzyć okno pełnoekranowe, które wygląda jak konsola) lub jest bezpieczny jak [ctrl] + [alt] + [del] w systemie Windows. Poza tym jedynym problemem, jaki widzę, jest brak limitu czasu.
Czy coś mi umknęło? Dlaczego faceci Ubuntu postanowili zezwolić tylko na sudo? Co mogę zrobić, aby poprawić bezpieczeństwo którejkolwiek z metod?
Co z SSH? Tradycyjnie root nie może zalogować się przez SSH. Ale użycie powyższej logiki nie byłoby najbezpieczniejszym rozwiązaniem:
- zezwalaj na rootowanie przez SSH
- przejdź do trybu tekstowego
- zaloguj się jako root
- ssh do drugiej maszyny
- zalogować się jako root?