Jak zarządzać separacją domen (open_basedir)?

Cel Artykułu: Dowiesz się, czym jest separacja domen (open_basedir) i jak nią zarządzać w panelu DirectAdmin. Poznasz zalety stosowania tej funkcji oraz sposoby jej konfiguracji, aby zwiększyć bezpieczeństwo Twoich stron internetowych.

Uwaga: W tym miejscu zostałaby umieszczona grafika przedstawiająca koncepcję separacji domen za pomocą open_basedir, zgodnie z opisem w pliku main.svg.txt.

Czym jest separacja domen (open_basedir)?

Open_basedir to dyrektywa bezpieczeństwa PHP, która ogranicza dostęp skryptów PHP do określonych katalogów na serwerze. Działa jak wirtualne ogrodzenie, które uniemożliwia skryptom jednej domeny dostęp do plików i katalogów innych domen.

W IQhost.pl oferujemy możliwość włączenia separacji domen, co znacząco zwiększa bezpieczeństwo Twojego hostingu, szczególnie gdy masz wiele stron na jednym koncie hostingowym.

Korzyści z używania separacji domen

Włączenie open_basedir zapewnia następujące korzyści:

  1. Zwiększone bezpieczeństwo - Jeśli jedna z Twoich stron zostanie zhakowana, atakujący nie będzie mógł uzyskać dostępu do plików innych domen na Twoim koncie

  2. Izolacja stron - Każda domena działa w swoim własnym, izolowanym środowisku

  3. Ochrona przed złośliwymi skryptami - Zapobiega przypadkowemu lub celowemu dostępowi do plików systemowych

  4. Kontrola nad zasobami - Jasne określenie, gdzie skrypty mogą działać i jakie pliki mogą odczytywać

Jak działa separacja domen w IQhost?

Kiedy włączasz separację domen dla hostingu w IQhost, każda domena na Twoim koncie otrzymuje własne, izolowane środowisko. Oznacza to, że:

  • Skrypty PHP działające na domenie example1.pl mogą uzyskać dostęp tylko do plików w katalogu public_html/example1.pl/ i podkatalogach

  • Skrypty PHP działające na domenie example2.pl mogą uzyskać dostęp tylko do plików w katalogu public_html/example2.pl/ i podkatalogach

  • Żadna z tych domen nie może zobaczyć lub uzyskać dostępu do plików drugiej domeny

Domyślnie IQhost konfiguruje open_basedir tak, aby umożliwić dostęp do:

  • Katalogu głównego domeny
  • Katalogu tymczasowego PHP (/tmp)
  • W razie potrzeby dodatkowych katalogów współdzielonych

Jak włączyć/wyłączyć separację domen w DirectAdmin

W panelu DirectAdmin masz dwie główne możliwości zarządzania separacją domen za pomocą open_basedir:

Metoda 1: Zarządzanie separacją domen (dla całego konta i poszczególnych domen)

  1. Zaloguj się do panelu DirectAdmin
  2. Przejdź do sekcji "Dodatkowe funkcje" (Additional Features)
  3. Kliknij na opcję "Zarządzanie separacją domen" (Domain Separation Management)
  4. Na tej stronie możesz:
    • Włączyć/wyłączyć ochrony open_basedir dla całego konta
    • Włączyć/wyłączyć ochronę open_basedir dla poszczególnych domen
  5. Po dokonaniu zmian kliknij przycisk "Zapisz" (Save)

Uwaga: Ustawienie separacji open_basedir działa na poziomie całego konta, ale można je nadpisać dla poszczególnych domen. Jeśli open_basedir jest włączony globalnie, ale wyłączony dla konkretnej domeny, ta konkretna domena nie będzie objęta separacją.

Panel zarządzania separacją domen w DirectAdmin

Ilustracja: Panel zarządzania separacją domen z opcjami włączania ochrony open_basedir dla całego konta i poszczególnych domen

Metoda 2: Przez plik .htaccess (tylko w niektórych konfiguracjach)

W niektórych konfiguracjach DirectAdmin można zarządzać open_basedir również za pomocą pliku .htaccess:

Niestandardowa konfiguracja open_basedir

W niektórych przypadkach może być konieczne dostosowanie konfiguracji open_basedir do specyficznych potrzeb Twojej strony.

Dodawanie dodatkowych katalogów do open_basedir

Jeśli potrzebujesz, aby skrypty PHP miały dostęp do katalogów poza domyślnymi ustawieniami, możesz to skonfigurować na kilka sposobów:

Metoda 1: Przez plik .htaccess

  1. Zaloguj się do panelu DirectAdmin
  2. Przejdź do sekcji "Menedżer Plików" (File Manager)
  3. Przejdź do katalogu głównego domeny
  4. Otwórz plik .htaccess lub utwórz go, jeśli nie istnieje
  5. Dodaj następującą linię, określając ścieżkę do dodatkowego katalogu:
php_admin_value open_basedir "/home/hostXXXX/domains/twojastrona.pl:/home/hostXXXX/shared:/tmp"

W powyższym przykładzie:

  • /home/hostXXXX/domains/twojastrona.pl to katalog domeny
  • /home/hostXXXX/shared to dodatkowy katalog, do którego chcesz umożliwić dostęp
  • /tmp to katalog tymczasowy

Ścieżki należy oddzielić dwukropkiem (:) bez spacji.

Uwaga: W niektórych konfiguracjach DirectAdmin zmiana open_basedir przez plik .htaccess może być zablokowana. W takim przypadku skontaktuj się z supportem IQhost.

Metoda 2: Przez PHP Selector (niepolecana, tylko informacyjnie)

W sekcji PHP Selector widoczne jest pole open_basedir, jednak należy pamiętać, że:

Ważna uwaga: Ustawienia open_basedir dokonane w PHP Selector mogą być ignorowane przez system. Głównym i zalecanym narzędziem do zarządzania separacją domen jest sekcja "Zarządzanie separacją domen" opisana w Metodzie 1.

Pole open_basedir w PHP Selector

Ilustracja: Pole open_basedir w PHP Selector - wartości mogą być ignorowane przez system

Typowe przypadki użycia niestandardowej konfiguracji open_basedir

1. Współdzielenie bibliotek między domenami

Jeśli masz biblioteki PHP, które chcesz współdzielić między wieloma domenami:

  1. Utwórz katalog współdzielony, np. /home/hostXXXX/shared_libs
  2. Umieść biblioteki w tym katalogu
  3. Dodaj ten katalog do konfiguracji open_basedir dla wszystkich domen, które potrzebują dostępu

2. Dostęp do katalogu nadrzędnego

Jeśli Twoja aplikacja wymaga dostępu do katalogu nadrzędnego:

  1. Zmodyfikuj open_basedir, aby zawierał ścieżkę do katalogu nadrzędnego, na przykład:
    php_admin_value open_basedir "/home/hostXXXX/domains:/tmp"

    To zapewni dostęp do wszystkich domen w katalogu domains, a nie tylko do bieżącej domeny

3. Współdzielenie zasobów między wieloma projektami

Jeśli masz treści, które powinny być współdzielone między stronami:

  1. Utwórz katalog dla współdzielonych treści, np. /home/hostXXXX/shared_content
  2. Dodaj ten katalog do konfiguracji open_basedir dla domen, które potrzebują dostępu

Rozwiązywanie problemów z open_basedir

Jeśli włączyłeś separację domen i napotkałeś problemy, oto typowe sytuacje i ich rozwiązania:

Problem 1: Błędy open_basedir restriction in effect

Jeśli widzisz błędy związane z open_basedir, takie jak:

Warning: open_basedir restriction in effect. File(/path/to/file) is not within the allowed path(s)

Rozwiązanie:

  1. Sprawdź, czy skrypt próbuje uzyskać dostęp do pliku poza dozwolonymi katalogami
  2. Dodaj wymagany katalog do konfiguracji open_basedir
  3. Jeśli to możliwe, zmodyfikuj skrypt, aby używał relatywnych ścieżek lub przechowywał pliki w dozwolonych katalogach

Problem 2: Niedziałające skrypty po włączeniu separacji

Rozwiązanie:

  1. Sprawdź logi błędów PHP, aby zidentyfikować problematyczne ścieżki
  2. Tymczasowo wyłącz open_basedir, aby sprawdzić, czy to jest przyczyną
  3. Dostosuj open_basedir, aby uwzględnić niezbędne katalogi
  4. Jeśli to konieczne, zreorganizuj strukturę plików, aby odpowiadała ograniczeniom open_basedir

Problem 3: Problemy z kopiowaniem/przesyłaniem plików

Rozwiązanie:

  1. Upewnij się, że skrypt PHP ma uprawnienia do zapisu w docelowym katalogu
  2. Sprawdź, czy katalog docelowy jest uwzględniony w konfiguracji open_basedir
  3. Użyj FTP/SFTP do przesłania plików zamiast narzędzi PHP, jeśli to możliwe

Najlepsze praktyki korzystania z separacji domen

  1. Włącz separację domen dla wszystkich hostingów produkcyjnych - zapewnia to podstawową warstwę ochrony

  2. Regularnie przeglądaj i testuj konfigurację - szczególnie po aktualizacji aplikacji lub zmianie struktury katalogów

  3. Używaj jak najmniej wyjątków - każde rozszerzenie dostępu open_basedir potencjalnie zmniejsza bezpieczeństwo

  4. Śledź logi błędów - aby szybko identyfikować problemy związane z open_basedir

  5. Stosuj najmniej uprzywilejowany dostęp - daj dostęp tylko do katalogów, które są absolutnie niezbędne

Podsumowanie zalet i wad open_basedir

Zalety:

  • Znacznie zwiększone bezpieczeństwo
  • Izolacja między domenami
  • Zmniejszone ryzyko rozprzestrzeniania się złośliwego kodu
  • Większa kontrola nad dostępem do plików

Wady:

  • Może powodować problemy z niektórymi skryptami i aplikacjami
  • Wymaga dodatkowej konfiguracji dla współdzielonych zasobów
  • Skomplikowane aplikacje mogą wymagać bardziej złożonej konfiguracji

Często zadawane pytania

Czy włączenie separacji domen wpłynie na wydajność mojej strony?

Wpływ na wydajność jest minimalny. Open_basedir dodaje niewielkie obciążenie do każdego żądania pliku, ale korzyści bezpieczeństwa znacznie przewyższają ten koszt.

Czy mogę włączyć separację domen tylko dla wybranych domen?

Tak, możesz włączyć lub wyłączyć open_basedir selektywnie dla poszczególnych domen w panelu DirectAdmin.

Czy separacja domen działa również dla subdomen?

Tak, każda subdomena może mieć własne ustawienia open_basedir, podobnie jak domeny główne.

Co się stanie, jeśli wyłączę separację domen?

Skrypty PHP będą mogły uzyskać dostęp do wszystkich plików na serwerze, do których użytkownik hostingu ma dostęp. Zwiększa to ryzyko bezpieczeństwa, szczególnie jeśli jedna z Twoich stron zostanie zaatakowana.

Czy open_basedir chroni przed wszystkimi typami ataków?

Nie, open_basedir to tylko jedna z warstw bezpieczeństwa. Chroni przed niektórymi typami ataków (np. odczyt plików poza katalogiem strony), ale nie zastępuje innych dobrych praktyk bezpieczeństwa, takich jak aktualizowanie aplikacji, używanie silnych haseł itp.

Czy mogę użyć open_basedir z Cloudflare lub innymi usługami CDN?

Tak, open_basedir działa niezależnie od warstwy CDN. Cloudflare i inne usługi CDN nie będą wpływać na działanie open_basedir, który działa na poziomie serwera.

Czy zmiany w konfiguracji open_basedir są natychmiastowe?

Tak, zmiany w konfiguracji open_basedir są zazwyczaj natychmiastowe i nie wymagają restartu serwera. Jednak w niektórych przypadkach może być konieczne wyczyszczenie cache PHP, aby zmiany zostały w pełni zastosowane.

Przykłady konfiguracji dla popularnych aplikacji

WordPress

WordPress zazwyczaj działa dobrze z domyślną konfiguracją open_basedir. Jednakże, jeśli korzystasz z niektórych wtyczek, możesz potrzebować dodatkowych katalogów w konfiguracji:

php_admin_value open_basedir "/home/hostXXXX/domains/twojastrona.pl:/home/hostXXXX/domains/twojastrona.pl/wp-content/uploads:/tmp"

Joomla

Joomla zwykle wymaga dostępu tylko do własnego katalogu i katalogu tymczasowego:

php_admin_value open_basedir "/home/hostXXXX/domains/twojastrona.pl:/tmp"

PrestaShop

PrestaShop może wymagać dostępu do dodatkowych katalogów dla cache i modułów:

php_admin_value open_basedir "/home/hostXXXX/domains/twojastrona.pl:/home/hostXXXX/domains/twojastrona.pl/var/cache:/tmp"

Magento

Magento ma bardziej złożoną strukturę i może wymagać dostępu do wielu katalogów:

php_admin_value open_basedir "/home/hostXXXX/domains/twojastrona.pl:/home/hostXXXX/domains/twojastrona.pl/var:/home/hostXXXX/domains/twojastrona.pl/pub:/tmp"

Uwaga: Interfejs DirectAdmin może być wyświetlany w różnych językach, w zależności od ustawień konta. W niniejszym artykule podano nazwy sekcji i opcji w języku polskim oraz, w nawiasach, ich odpowiedniki w języku angielskim. Jeśli Twój panel wyświetla się w innym języku, nazwy opcji mogą się różnić.


Powiązane Artykuły:

Czy ten artykuł był pomocny?

Twoja strona WordPress działa wolno?

Sprawdź nasz hosting WordPress z ultraszybkimi dyskami NVMe i konfiguracją serwera zoptymalizowaną pod kątem wydajności. Doświadcz różnicy już dziś!

Sprawdź ofertę hostingu
30-dniowa gwarancja zwrotu pieniędzy