Blog (76)
Komentarze (5.3k)
Recenzje (0)

Z pamiętnika z życia programisty FLOSS: Bezpieczna konfiguracja

@nintyfanZ pamiętnika z życia programisty FLOSS: Bezpieczna konfiguracja19.08.2019 17:04

Jakiś czas temu byłem zafascynowany projektem etckeeper. Prawdopodobnie przeczytałem o nim w Linux Magazine. Projekt robi w pewnym sensie to samo, co snapper, a mianowicie pozwala na przywracanie i zapisywanie konfiguracji systemu (choć snapper ma większy zakres działań).

Parę dni temu rozpocząłem projekt, który podchodzi do tego od innej strony. Również pozwala wyświetlić administratorowi listę dokonanych zmian, ale zamiast pozwalać na dokonanie zmian w systemie przed możliwością ich podejrzenia, izoluje zmiany i wyświetla je administratorowi z pytaniem czy je potwierdza.

Okno wyświetlające informacje o dokonanych zmianach
Okno wyświetlające informacje o dokonanych zmianach

Projekt jest przeznaczony raczej dla bardziej obeznanych z administrowaniem systemami ludzi. Normalna osoba pewnie nie zrozumie, co wynik polecenia diff (pokazywany w okienku) zawiera. Myślę jednak, że będzie pomocny, bo uwalnia adminów od ciężkiej, mozolnej pracy. Pozwala także na uruchamianie graficznego narzędzia we własnym środowisku. I chociaż wiem, że X-y podobno bezpieczeństwem nie grzeszą (część rzeczy, jak możliwość wywłaszczenia klawiatury i przechwytywania jej komunikatów wydaje się być dla mnie oczywista, lecz X-y podobno mają też inne niedociągnięcia), to uruchomiony program poprzez moje narzędzie, nie powinien móc nadpisywać plików systemowych. Inna sprawa jest z Waylandem.

Narzędzie to prosty skrypt bash-a. Korzysta z tar, flatpak, diff i find. Dodatkowo komunikuje się za pomocą dialog, kdialog lub zenity. Zenity jest obsługiwane jedynie częściowo, gdyż sposób jego użycia zawiera błędy. Obecnie udostępniłem pierwszą wersję narzędzia + prostą łatkę, dodającą obsługę zenity i dialog, a także poprawiającą małe błędy.

Programy wywoływane przez moje narzędzie są zależne od dystrybucji, bo:

  1. Jeden plik w archiwum tar z programem, zawiera listę paczek. Tutaj korzystamy z narzędzia RPM, by odnaleźć pliki należące do tej paczki. Jest więc zależne od dystrybucji RPM-owych, a dodatkowo od konkretnej dystrybucji, gdyż nazwy paczek mogą się różnić w poszczególnych dystrybucjach.
  2. Układ plików w systemie plików, a także wewnętrzny układ danych w pliku, mogą się różnić w poszczególnych dystrybucjach

Postanowiłem jednak ułatwić przenoszenie konfigóratorów na inne dystrybucje, więc skorzystałem z flatpaka. Może w przyszłości podejmę kroki, by ukryć różnice między dystrybucjami. Zastanawiałem się nad własnym systemem konfiguracji, z którego/na który dystrybucje mogłyby tłumaczyć swoje pliki ale to pieśń przyszłości.

Sposób działania jest następujący:

  1. Znalezienie właściwego odpowiednika dialog
  2. Jeśli odpowiedni program nie został znaleziony lub nie może pracować (np. jako dialog skrypt postanowił użyć konsolowego programu dialog, ale domyślne wejście nie jest terminalem), to używamy wall do powiadomienia o problemie i kończymy działanie
  3. Sprawdzamy czy program jest uruchomiony, jako root. Jeśli tak, to przechodzimy do punktu 6
  4. Informujemy użytkownika o tym, że może konieczne być ponowne uruchomienie programu jako root
  5. Jeżeli użytkownik zdecyduje się na uruchomienie jako root, to uruchamiamy program jako root (można to rozumieć, jako skok do punktu 1.).
  6. Rozpakowujemy archiwum tar z listą pakietów, właściwym programem i danymi dla flatpaka (nazwa środowiska wykonawczego i jego gałąź)
  7. Tworzymy odpowiednie katalogi tymczasowe. Od tego momentu, w razie przerwania pracy, katalogi tymczasowe zostaną usunięte
  8. Odczytujemy listę pakietów, zainstalowane wraz z nimi pliki i kopiujemy te pliki do katalogów tymczasowych
  9. Wyświetlamy użytkownikowi listę skopiowanych plików i pytamy o zgodę na kontynuację. Jeżeli użytkownik nie wyraził zgody na kontynuację, kończymy działania
  10. Wyświetlamy nazwę środowiska wykonawczego i jego pnia. Pytamy również o kontynuację, kończąc wykonanie w razie jej braku.
  11. Uruchamiamy skrypt basha w odpowiednim środowisku wykonawczym, udostępniając mu katalogi tymczasowe.
  12. Skrypt ten tworzy odpowiednie katalogi i dowiązania symboliczne do katalogów tymczasowych (utworzonych poprzednio), by właściwy program miał je w stałej lokalizacji.
  13. Skrypt ten uruchamia następnie właściwy program.
  14. Po zakończeniu właściwego programu i wyjściu z flatpaka, główny skrypt porównuje każdy plik z katalogu tymczasowego ze skopiowaną konfiguracją, z katalogiem root systemu.
  15. Główny skrypt wyświetla dane zgromadzone przez program diff i pyta czy nadpisać konfigurację systemu. Jeżeli użytkownik się nie zgodził, to kończymy działanie.
  16. Nadpisujemy konfigurację systemu.

Repo jest tutaj.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.