Mój szef zgłosił się na ochotnika do roli administratora systemu dla naszego produkcyjnego serwera redhat. Poprosił mnie o zaostrzenie bezpieczeństwa, aby uniknąć takich nieszczęść, rm -f *
które miały miejsce niedawno.
W tej chwili mamy 53 użytkowników sudo wkraczających na maszynę, co jest koszmarem audytu. Zastanawiam się, czy można zezwolić użytkownikom na dostęp tylko w określone dni tygodnia.
Na przykład, czy mogę zezwolić użytkownikowi „Joe” na logowanie TYLKO we wtorki i czwartki, a „Jane” tylko w niedziele? Czy etc/sudoers
można dostosować, aby to umożliwić?
Czy istnieje lepszy sposób niż używanie sudoers?
permissions
security
sudo
Chris
źródło
źródło
rm -rf /
.Odpowiedzi:
sudo
wykonuje uwierzytelnianie za pomocą PAM, podobnie jak prawie wszystko inne na Linux-ie.Więc powinieneś być w stanie
pam_time.so
to zrobić.Domyślnie przynajmniej w Debianie ten moduł nie jest włączony. Musisz dodać linię, która wygląda następująco:
aby
/etc/pam.d/sudo
włączyć tylko sudo lub/etc/pam.d/common-account
(po bloku pam-auth-update) włączyć wszystkie programy w systemie.Następnie edytuj,
/etc/security/time.conf
aby ustawić ograniczenia. Nazwa usługi powinna wynosićsudo
. Na przykład, aby zezwolić Fredowi na używaniesudo
tylko w godzinach od 15:00 do 17:00 w piątek:(UWAGA: Nie testowałem tego.)
edytuj: Aby być jasnym, zgadzam się z drugą odpowiedzią i różnymi komentatorami, wydaje się, że masz zbyt wiele osób uruchamiających zbyt wiele poleceń jako root, i naprawdę musisz to naprawić. I oczywiście, jeśli mogą zostać rootem, mogą edytować konfigurację pam ...
źródło
Chciałbym zapytać, dlaczego 53 użytkowników potrzebuje sudo do codziennej pracy - dla większości użytkowników (nawet programistów) sudo powinno być rzadkim wyjątkiem, a nie rutynową rzeczą, którą ktoś mógłby swobodnie uruchomić
sudo rm -rf *
.Czy możesz użyć uprawnień grupowych (lub nawet bardziej zaawansowanych list ACL), aby dać ludziom dostęp do plików, których potrzebują, aby wykonać swoją pracę, być może za pomocą skryptów lub plików binarnych w wersji setuid lub sudo, aby umożliwić im wykonywanie zadań takich jak ponowne uruchomienie usług? (zwróć uwagę, że trudno jest napisać bezpieczny skrypt setuid / sudo, więc bardziej uczciwym ludziom należy zachować uczciwość).
Nawet jeśli możesz ograniczyć ludzi do jednego dnia tygodniowego dostępu do sudo, nadal 53 osoby mają dostęp do sudo w ciągu tygodnia, więc to naprawdę nie pomaga w twoim podstawowym problemie.
W związku z tym chciałbym zapytać, czy tak wielu użytkowników w ogóle potrzebuje dostępu do serwera produkcyjnego - czy możesz wysłać dzienniki lub inne dane / pliki, których potrzebują na maszynę nieprodukcyjną?
źródło
vi/cp/mv/rm
. Tylkocd
imore
. Nic więcej.Najprostszym sposobem byłoby użycie suders.d (przez inludedir) do konfiguracji. Możesz wtedy mieć zadania crona, które mogą umieścić reguły dla każdego użytkownika w tym katalogu na pożądany czas.
Dyrektywy #includedir można użyć w / etc / sudoers do utworzenia katalogu sudo.d, do którego można upuścić reguły sudoers jako część reguł. Na przykład, biorąc pod uwagę:
#includedir /etc/sudoers.d
sudo odczyta każdy plik w /etc/sudoers.d, pomijając nazwy plików, które kończą się na „~” lub zawierają „.” znak, aby uniknąć problemów z menedżerem pakietów lub edytorem plików tymczasowych / zapasowych. Pliki są analizowane w posortowanej kolejności leksykalnej. Oznacza to, że /etc/sudoers.d/01_first zostanie przeanalizowany przed /etc/sudoers.d/10_second. Pamiętaj, że ponieważ sortowanie jest leksykalne, a nie numeryczne, /etc/sudoers.d/1_whoops zostanie załadowany po /etc/sudoers.d/10_second. Aby uniknąć takich problemów, można użyć stałej liczby zer wiodących w nazwach plików.
Zauważ, że w przeciwieństwie do plików zawartych przez #include, visudo nie będzie edytować plików w katalogu #includedir, chyba że jeden z nich zawiera błąd składniowy. Nadal możliwe jest uruchomienie visudo z flagą -f w celu bezpośredniej edycji plików.
/etc/sudoers.d/joe byłby obecny, gdy chcesz, aby Joe miał dostęp, a po prostu możesz usunąć plik, aby go odebrać.
źródło
Możesz dodać tabelę crontab, aby umieścić użytkowników w grupie sudo, a następnie drugą tabelę crontab, aby usunąć tego użytkownika.
źródło