Jak bezpieczne jest przechowywanie skryptów innych niż root w /etc/init.d?

15

Mam aplikację, która działa jako demon i jest kontrolowana przez skrypt w /etc/init.d
Czasami musimy zmienić niektóre parametry uruchamiania / kontroli tych skryptów, a następnie ponownie uruchomić demona. Te skrypty mają tylko uprawnienia do zapisu dla użytkownika root, więc podczas edycji tych skryptów potrzebuję uprawnień roota.

Myślałem, że powinienem uczynić użytkownika innego niż root właścicielem tych skryptów. W ten sposób tylko root i specjalny użytkownik mogą edytować te skrypty.

Czy dopuszczalne jest przechowywanie niektórych plików innych niż root w katalogach /etc/init.d?
Czy to absurdalne, zakłócające naturalny porządek systemu?

Akaks
źródło
1
zły pomysł, nie rób tego.
ChuckCottrill

Odpowiedzi:

17

To, co natychmiast przychodzi mi na myśl, to nieuprzywilejowany użytkownik, który może uruchamiać rzeczy podczas rozruchu jako root , co jest pożądane dla crackerów, którzy:

  • Chcesz zwiększyć uprawnienia innych kont
  • Chcesz użyć swojego serwera do hostowania nieuczciwej usługi
  • Chcesz uruchomić boty IRC / Spam, jeśli serwer uruchomi się ponownie
  • Chcesz wysłać polecenie ping do statku-matki, aby powiedzieć „Znowu wstałem”, i być może pobierz nową zawartość
  • Chcesz oczyścić swoje utwory
  • ... inna zła.

Jest to możliwe, jeśli twój upośledzony użytkownik jest w jakiś sposób narażony na szwank, być może za pośrednictwem innej usługi (http / etc). Większość atakujących szybko uruchomi lslub uruchomi findwszystko, /etcaby sprawdzić, czy takie możliwości istnieją, istnieją powłoki napisane w różnych językach, których używają, co czyni to prostym.

Jeśli zarządzasz serwerem zdalnie, głównie za pośrednictwem SSH, istnieje bardzo duża szansa, że ​​nawet go nie zobaczysz, dopóki nie przejrzysz skryptu inicjującego, ponieważ nie zobaczysz danych wyjściowych podczas rozruchu (powinieneś jednak użyć czegoś, co porównuje skróty tych skryptów ze znanymi skrótami, aby sprawdzić, czy coś się zmieniło, czy oprogramowanie do kontroli wersji itp.)

Zdecydowanie nie chcesz, aby tak się stało, root naprawdę musi posiadać ten skrypt inicjujący. Możesz dodać użytkownika programistycznego do listy sudoerów, aby wygodnie było zaktualizować skrypt, ale radzę nie zezwalać na nieuprzywilejowany dostęp do zapisu do czegokolwiek w init.d

Tim Post
źródło
5
tl; dr : Jeśli to zrobisz, użytkownik inny niż root jest tak samo dobry jak root przy następnym uruchomieniu. Błagasz, żebyś został wyleczony.
Warren Young,
9

Oprócz bardzo dobrych uwag Tima Posta, dodałbym, że w przypadku konfiguracji, w której wiele osób musi mieć możliwość wypychania zmian na serwer, należy rozważyć użycie jakiegoś systemu zarządzania konfiguracją.

Jeśli np. Używasz marionetki, szefa kuchni lub cfengine, możesz poprosić odpowiednich użytkowników o lokalną edycję plików, a następnie wypchnięcie zmian za pomocą zarządzania konfiguracją. Dokładnie sposób skonfigurowania tego będzie oczywiście różny w zależności od używanego systemu, ale jego poprawne skonfigurowanie będzie obejmować oprogramowanie do wersjonowania, które ułatwi powrót do wcześniejszej wersji pliku konfiguracyjnego, kiedy (uwaga: kiedy , nie jeśli !) ktoś popełnił błąd. Ułatwi również skopiowanie konfiguracji do osobnego systemu testowego itp.

Jenny D.
źródło
Przechowywanie zarówno skryptów, jak i plików danych konfiguracyjnych wersjonowanych w systemie zarządzania konfiguracją / wersją jest doskonałym pomysłem, nawet bez rozważenia, czy system może zostać naruszony.
ChuckCottrill
Rzeczywiście - użyłem go do naprawy błędów o kilka wielkości częściej niż użyłem go do naprawy skompromitowanego systemu.
Jenny D.
Dziękuję Ci bardzo . Ponieważ tutaj głównie dedykowany użytkownik korzysta z tej aplikacji, więc sudo działa całkiem dobrze i to, co robiłem od dawna. ALE NAPRAWDĘ jestem bardzo zainteresowany systemem zarządzania wersjami dla konfiguracji. Drogi Jenny, czy możesz mi w tym pomóc, LUB DOWOLNY PRZYKŁAD !! :)
Akaks
1
Jeśli nie chcesz iść pełną trasą lalek / szefa kuchni / cfengine itp., Osobiście skorzystałbym ze strony www.perforce.com. Użyliśmy tego na ~ 100 serwerach w czasie, zanim istniała marionetka, a ich licencja ewaluacyjna wystarcza na jeden serwer. Główną zaletą jest to, że można pobierać pliki VC do dowolnego miejsca w systemie plików zamiast ograniczać się do jednej podścieżki. Inne opcje to joeyh.name/code/etckeeper lub użycie dowolnego VC w połączeniu ze skryptami do przeniesienia plików do odpowiedniego katalogu.
Jenny D