Wyszukiwanie w witrynie

Jak chronić łącza twarde i symboliczne w CentOS/RHEL 7


W Linuksie twarde i miękkie linki odnoszą się do plików, które są bardzo ważne, jeśli nie są dobrze chronione, wszelkie zawarte w nich luki mogą zostać wykorzystane przez złośliwych użytkowników systemu lub osoby atakujące.

Częstą luką jest wyścig dowiązań symbolicznych. Jest to luka w zabezpieczeniach oprogramowania, która pojawia się, gdy program w niepewny sposób tworzy pliki (zwłaszcza pliki tymczasowe), a złośliwy użytkownik systemu może utworzyć symboliczne (miękkie) łącze do takiego pliku.

Przeczytaj także: Jak utworzyć łącze twarde i symboliczne w systemie Linux

To praktycznie się zdarza; program sprawdza, czy plik tymczasowy istnieje, jeśli nie, tworzy plik. Jednak w tak krótkim czasie pomiędzy sprawdzeniem pliku a jego utworzeniem osoba atakująca może utworzyć dowiązanie symboliczne do pliku, do którego nie ma dostępu.

Zatem gdy program działa z prawidłowymi uprawnieniami, tworzy plik o tej samej nazwie, co plik utworzony przez osobę atakującą, dosłownie tworzy plik docelowy (powiązany z nim), do którego atakujący miał zamiar uzyskać dostęp. Może to umożliwić atakującemu kradzież poufnych informacji z konta root lub uruchomienie szkodliwego programu w systemie.

Dlatego w tym artykule pokażemy, jak zabezpieczyć dowiązania twarde i symboliczne przed złośliwymi użytkownikami lub hakerami w dystrybucjach CentOS/RHEL 7.

W CentOS/RHEL 7 istnieje istotna funkcja bezpieczeństwa, która pozwala na tworzenie linków lub korzystanie z nich przez programy tylko wtedy, gdy spełnione są pewne warunki opisane poniżej.

Dla twardych linków

Aby użytkownik systemu mógł utworzyć łącze musi zostać spełniony jeden z poniższych warunków.

  • użytkownik może łączyć tylko pliki, których jest właścicielem.
  • użytkownik musi najpierw mieć dostęp do odczytu i zapisu pliku, do którego chce się utworzyć łącze.

Dla łączy symbolicznych

Procesy mogą podążać tylko za łączami, które znajdują się poza katalogami, do których nie można zapisywać innych użytkowników (inni użytkownicy mogą do nich pisać) i które zawierają bity trwałe, lub musi być spełniony jeden z poniższych warunków.

  • proces następujący po dowiązaniu symbolicznym jest właścicielem dowiązania symbolicznego.
  • właściciel katalogu jest także właścicielem dowiązania symbolicznego.

Włącz lub wyłącz ochronę dowiązań twardych i symbolicznych

Co ważne, domyślnie funkcja ta jest włączona przy pomocy parametrów jądra znajdujących się w pliku /usr/lib/sysctl.d/50-default.conf (wartość 1 oznacza włączenie ).

fs.protected_hardlinks = 1
fs.protected_symlinks = 1

Jeśli jednak z tego czy innego powodu chcesz wyłączyć tę funkcję bezpieczeństwa; utwórz plik o nazwie /etc/sysctl.d/51-no-protect-links.conf z poniższymi opcjami jądra (wartość 0 oznacza wyłączenie).

Zwróć uwagę na 51 w nazwie pliku (51-no-protect-links.conf), które należy przeczytać po pliku domyślnym, aby zastąpić ustawienia domyślne.

fs.protected_hardlinks = 0
fs.protected_symlinks = 0

Zapisz i zamknij plik. Następnie użyj poniższego polecenia, aby wprowadzić powyższe zmiany (to polecenie faktycznie ładuje ustawienia z każdego pliku konfiguracyjnego systemu).

sysctl --system
OR
sysctl -p  #on older systems

Możesz także przeczytać poniższe artykuły.

  1. Jak zabezpieczyć hasłem plik Vima w systemie Linux
  2. 5 poleceń „chattr”, które sprawiają, że ważne pliki są NIEZMIENNE (niezmienne) w systemie Linux

To wszystko! Możesz zadać swoje pytania lub podzielić się przemyśleniami na ten temat, korzystając z poniższego formularza opinii.