Bezpiecznie napraw ostrzeżenie „AllowOverride All” w usłudze ownCloud Apache
AllowOverride AllJeśli ownCloud zgłasza brak ustawienia Apache , dodaj je do <Directory>bloku Apache odpowiadającego ścieżce instalacji ownCloud, przetestuj konfigurację i przeładuj Apache. W typowej instalacji Debiana lub Ubuntu ustawienie znajduje się w aktywnym wirtualnym hoście ownCloud lub w odpowiednim bloku katalogu w konfiguracji Apache. Nie włączaj nadpisywania na całym serwerze tylko po to, aby usunąć jedno ostrzeżenie.
W serwerze ownCloud (wersja Classic) serwer Apache musi mieć możliwość odczytu reguł instalacji .htaccess. Reguły te obsługują przepisywanie adresów URL i pomagają chronić wrażliwe ścieżki. Brak lub nieskuteczność reguły może zatem wpłynąć zarówno na czyste adresy URL, jak i na kontrolę bezpieczeństwa katalogu danych. Niniejszy przewodnik dotyczy serwera ownCloud z serwerem Apache HTTP Server; nie dotyczy on serwerów Nginx, ownCloud Infinite Scale ani konfiguracji hostingu, w której konfiguracja Apache jest kontrolowana przez dostawcę.
Krótki przewodnik
Bramka
Sprawdź lub ustaw
Zezwalaj na reguły ownCloud dla poszczególnych katalogów
AllowOverride Allw pasującym <Directory>bloku
Potwierdź, że Apache może przeanalizować zmianę
sudo apachectl -tpowinien zgłosićSyntax OK
Aktywuj konfigurację
sudo systemctl reload apache2na Debianie lub Ubuntu
Sprawdź czyste adresy URL
Upewnij się, że ta opcja mod_rewritejest włączona, jeśli Twoja konfiguracja tego wymaga
Potwierdź, że ostrzeżenie zniknęło
Po przetestowaniu uszkodzonego adresu URL ponownie załaduj przegląd administracyjny ownCloud
Co oznacza ostrzeżenie
Dyrektywa Apache'a AllowOverridedecyduje, czy dyrektywy w .htaccessplikach mogą wpływać na żądania. Apache honoruje tylko AllowOverridewewnątrz <Directory>sekcji; umieszczenie wiersza na najwyższym poziomie hosta wirtualnego lub w niepowiązanym bloku nie włączy go dla plików ownCloud. Szersza <Directory>reguła, bardziej szczegółowa reguła lub inny włączony host wirtualny może również oznaczać, że edytowane ustawienie nie obsługuje żądania.
Aktualne instrukcje instalacji serwera 10.16 w ownCloud znajdują się AllowOverride Allw bloku katalogu głównego dokumentu ownCloud. Opcja „All” zezwala na klasy nadrzędne obsługiwane przez moduły Apache w tym zakresie. Należy ograniczyć to uprawnienie do katalogu ownCloud, zamiast zmieniać globalną politykę systemu plików Apache. Podręcznik Apache zawiera również wskazówki AllowOverrideListdla administratorów, którzy chcą zezwolić tylko na określone dyrektywy, ale wąska lista wymaga starannego przetestowania zgodności z wersją ownCloud i jej dołączonymi .htaccessregułami.
Przykład wirtualnego hosta umieszczonego AllowOverride Allw bloku katalogu dla /var/www/owncloud.
Przed zmianą Apache
Potwierdź, że produkt to ownCloud Server (Classic) i zidentyfikuj dokładną ścieżkę systemu plików do jego katalogu głównego. Adres URL, taki jak ten, /cloudmoże być mapowany przez serwer Apache Aliasdo innego katalogu na dysku.
Znajdź aktywny wirtualny host i plik konfiguracyjny. W systemach Debian i Ubuntu typowe lokalizacje to /etc/apache2/sites-available/i /etc/apache2/apache2.conf. W systemach z rodziny RHEL konfiguracja Apache'a zazwyczaj znajduje się poniżej /etc/httpd/. Panele i kontenery hostujące mogą korzystać z innych ścieżek.
Przed edycją pliku należy wykonać jego kopię zapasową i zachować wszelkie istniejące dyrektywy TLS, proxy, kontroli dostępu i ownCloud.
Sprawdź, czy AllowOverride Nonedo tej samej ścieżki ma zastosowanie inna reguła lub reguła katalogu. Nie edytuj domyślnego pliku witryny, który nie jest włączony dla nazwy hosta ownCloud.
Napraw samodzielnie zarządzany serwer Apache
1. Edytuj aktywną konfigurację
W systemie Debian lub Ubuntu otwórz wirtualny host obsługujący nazwę hosta ownCloud, na przykład:
W tym pliku znajdź lub dodaj <Directory>sekcję dla właściwego katalogu instalacyjnego ownCloud. Ten minimalistyczny przykład pokazuje odpowiednie umiejscowienie; zachowaj wszelkie dodatkowe dyrektywy wymagane przez serwer:
<Directory /var/www/owncloud/>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
Zastąp /var/www/owncloud/rzeczywistą ścieżką. Jeśli Apache mapuje adres URL na Alias, skonfiguruj katalog systemu plików zawierający pliki ownCloud, a nie tylko ścieżkę URL. Instrukcja instalacji Apache ownCloud zawiera dodatkowe uwagi dotyczące konfiguracji; skorzystaj z przykładu odpowiadającego Twojej wersji ownCloud i konfiguracji PHP.
2. Sprawdź moduły i składnię
W przypadku czystych adresów URL bez index.php, dokumentów ownCloud mod_rewritei mod_envjako warunek wstępny. W systemie Debian lub Ubuntu włącz moduł przepisywania, jeśli nie jest jeszcze aktywny:
sudo a2enmod rewrite
sudo apachectl -t
Test konfiguracji powinien kończyć się Syntax OK. Jeśli zgłosi błąd, należy go naprawić przed ponownym załadowaniem. Pomyślne sprawdzenie składni dowodzi, że Apache potrafi analizować swoją konfigurację; nie dowodzi to jednak, że aktywny jest poprawny host wirtualny ani że uruchomiony proces załadował edytowany plik.
Test konfiguracji Apache powinien zostać zwrócony Syntax OKprzed ponownym załadowaniem usługi.
3. Przeładuj Apache i przetestuj ownCloud
W systemie Debian lub Ubuntu należy ponownie uruchomić serwer Apache po pomyślnym sprawdzeniu składni:
sudo systemctl reload apache2
W systemach z rodziny RHEL usługa ma zazwyczaj nazwę httpd, dlatego należy użyć odpowiedniej nazwy usługi i polecenia configuration-test dystrybucji. Nie należy kopiować poleceń specyficznych dla Debiana do innego systemu bez potwierdzenia jego układu usług.
Otwórz nazwę hosta ownCloud w przeglądarce i przetestuj stronę, która wcześniej wymagała przepisania. Jeśli serwer używa prefiksu ścieżki, takiego jak /cloud, przetestuj również adres URL z prefiksem. Pętla przekierowań, odpowiedź 403 lub błąd Apache 500 oznaczają, że konfiguracja nadal wymaga sprawdzenia. Sprawdź dziennik błędów Apache i dziennik ownCloud, zamiast wielokrotnie zmieniać niezwiązane z tym dyrektywy.
Włączaj mod_rewritetylko wtedy, gdy jest to konieczne, a następnie ponownie załaduj usługę Apache po pomyślnym sprawdzeniu składni.
Jeśli ostrzeżenie nadal występuje
Objaw
Następne sprawdzenie
Ostrzeżenie pozostaje po ponownym załadowaniu
Sprawdź, czy edytowany wirtualny host jest włączony i obsługuje nazwę hosta; sprawdź apachectl -S, czy istnieje reguła katalogu niższego poziomu lub bardziej szczegółowa.
Czyste adresy URL nadal obejmująindex.php
Sprawdź, czy opcja mod_rewritejest włączona, czy katalog ownCloud ma zamierzone uprawnienie nadpisywania i czy baza przepisywania ownCloud jest zgodna ze ścieżką adresu URL.
Strona administratora informuje, że katalog danych może być publicznie dostępny
Sprawdź, czy katalog danych znajduje się poza katalogiem głównym, jeśli to możliwe. W przeciwnym razie sprawdź, czy dostarczony katalog danych .htaccessistnieje, jest czytelny i respektowany przez serwer Apache; nie traktuj usunięcia ostrzeżenia jako substytutu zabezpieczenia katalogu.
Apache zwraca 500 lub raportuje „tutaj nie wolno”
Przeczytaj dziennik błędów Apache. Dyrektywa w .htaccessmoże być niedozwolona przez aktywne klasy nadrzędne lub wymagany moduł może być niedostępny.
Uruchamianie w kontenerze lub zarządzanym hoście
Sprawdź udokumentowaną konfigurację Apache'a obrazu lub panel sterowania dostawcy. Plik Apache'a na poziomie hosta może nie być serwerem obsługującym żądania.
Jeśli ownCloud zgłasza, że .htaccesspliku nie można zaktualizować, przed zmianą należy sprawdzić prawa własności i zapisu zgodnie z wytycznymi ownCloud dotyczącymi aktualizacji i wzmacniania zabezpieczeń. Należy unikać ustawiania całej instalacji jako skrótu z możliwością zapisu przez serwer WWW. Dokumentacja ownCloud wskazuje, że szczegóły konfiguracji różnią się w zależności od instalacji i że PHP-FPM nie korzysta z ustawień PHP z .htaccess; w takim przypadku ustawienia należą do .user.ini. To rozróżnienie PHP samo w sobie nie zastępuje konieczności przetwarzania reguł przepisywania i dostępu ownCloud przez Apache.
Lista kontrolna weryfikacji
Ścieżka <Directory>dokładnie odpowiada plikom ownCloud na dysku.
Dopasowany blok zawiera AllowOverride Alli żadna aktywna, kolidująca reguła nie ma pierwszeństwa.
sudo apachectl -tzwraca Syntax OK.
Apache został przeładowany przy użyciu prawidłowej nazwy usługi.
Strona logowania ownCloud i poprzednio uszkodzony adres URL ładują się przez HTTPS zgodnie z oczekiwaniami.
Podsumowanie administracyjne nie wyświetla już tego samego ostrzeżenia po odświeżeniu, a katalog danych pozostaje niedostępny z poziomu publicznej sieci.
Przykładowa strona logowania ownCloud pod skonfigurowaną nazwą hosta; sprawdź rzeczywisty status ostrzeżenia w przeglądzie administracyjnym.