DokuWiki jest aplikacją sieciową, często używaną na serwerach publicznych, dostępnych przez Internet. Oznacza to większe ryzyko ataku przez złośliwych ludzi, niż na przykład lokalnej aplikacji w systemie stacjonarnym.
DokuWiki jest rozwijana z myślą o bezpieczeństwie. Próbujemy odnaleźć równowagę pomiędzy przyjaznością i bezpieczeństwem, jednak preferujemy zabezpieczenie gdy nie można uzyskać satysfakcjonującego kompromisu.
Ta strona powinna dać ci pogląd na jakie aspekty powinieneś zwrócić uwagę by upewnić się, że DokuWiki jest bezpieczna.
Gdy odkryjesz problem w zabezpieczeniach, powiadom nas o tym. Preferowane sposoby to:
Preferujemy pierwsze dwie drogi, chyba że jest to bardzo poważny błąd, którego upublicznienie przed udostępnieniem poprawki mogłoby narazić instalacje DokuWiki na całym świecie.
Wszystkie poprzednie zgłoszenia można obejrzeć w systemie śledzenia błędów.
W zależności od od dotkliwości znalezionego problemu bezpieczeństwa zostanie on poprawiony w kolejnej wersji (przy zgłoszeniach naprawdę niewielkiej wagi) lub zostanie wydana wersja poprawkowa. W tym drugim przypadku użytkownicy zostaną poinformowani przez mechanizm sprawdzenia aktualizacji.
Powinieneś zawsze pracować na najaktualniejszej wersji DokuWiki jako że na niej są wydawane poprawki bezpieczeństwa dla starszych wersji.
DokuWiki przechowuje dane konfiguracji i stron w plikach. Pliki te nie mogą być dostępne bezpośrednio z sieci. Dystrybucyjna paczka archiwum zawiera zestaw plików .htaccess
, który często wskazuje serwerowi sieciowemu Apache blokowanie dostępu do pewnych folderów.
Jeśli n ie używasz serwera sieciowego Apache lub twój Apache nie używa plików .htaccess
musisz ręcznie zabezpieczyć instalację
Następujące foldery nie mogą być dostępne z sieci:
data
conf
bin
inc
(nie jest niebezpieczny, jeśli dostępne, ale jednak)
Jeśli potrzebujesz sprawdzić uprawnienia dostępu, spróbuj wejść na http://yourserver.com/dokuwiki/data/pages/wiki/dokuwiki.txt
. Nie powinieneś uzyskać dostępu do pliku w ten sposób.
Jeśli foldery nie są odpowiednio zabezpieczone, przeczytaj kolejne sekcje by dowiedzieć się, jak to zrobić.
Najprostszym sposobem jest włączenie obsługi .htaccess
w konfiguracji Apache. Przejrzyj Samouczek .htaccess Apache.
DokuWiki dostarczana jest już z odpowiednio skonfigurowanymi plikami .htaccess. Zawartość pliku .htaccess blokującego całkowicie dostęp do folderu powinna wyglądać jak następuje:
order allow,deny deny from all
Obserwacja : Podczas używania apache2 na Ubuntu, .htaccess nie działa !
Wydaje się, że Apache2 ogólnie, lub być może tylko w szczególności wraz z Ubuntu, jest konfigurowany trochę inaczej niż Apache1.x.
W /etc/apache2/sites-available powinieneś zmienić plik default (lub plik default-ssl jeśli używasz https zamiast http)
Znajdziesz tam:
NameVirtualHost * <VirtualHost *> ServerAdmin admin@site.com DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride none Order allow,deny allow from all </Directory>
Domyślnie dla AllowOverride w <Directory /var/www/> jest wpis none, powinien być all
/etc/init.d/apache2 reload by odświeżyć konfigurację apache, a pliki .htaccess powinny zadziałać.
(Przejrzyj http://ubuntuforums.org/showthread.php?t=47669 by poznać cały wątek)
Innym sposobem jest użycie dyrektywy LocationMatch
wewnątrz definicji VirtualHost
- jest to trochę bardziej efektywne niż .htaccess
. Tuż poniżej dyrektywy Directory
dodaj:
<LocationMatch "/(data|conf|bin|inc)/"> Order allow,deny Deny from all Satisfy All </LocationMatch>
Mimo wszystko przejrzyj sekcję “What to use When” w http://httpd.apache.org/docs/2.0/sections.html#file-and-web by dowiedzieć się że dyrektywy “Location” nie powinny być używane do ochrony obiektów systemu plików, a tylko wirtualne (np tworzone przez bazy danych) ścieżki. IMO jeśli .htaccess nie jest dostępny albo wystarczający, umieszczenie specyficznych dla folderów ograniczeń bezpośrednio w pliku konfiguracyjnym hostów będzie będzie najbezpieczniejszym podejściem. Opisane w http://ada.adrianlang.de/dokuwiki-php-execution#solutions_in_the_configuration wydaje się poprawnym podejściem - jednak ten dokument powinien być “kanoniczny”.
Access to the mentioned directories can be disabled in IIS' configuration settings.
In IIS7:
Repeat for “/data/media” and choose “Always Allow” (otherwise your images and other won't be visible)
Note: By default, the Management Console snap-in for Internet Information Services 7 does not have UI access to “IIS Request Filtering” section. However, can be enabled by installing “IIS Administration pack 1.0” by using the Web Platform Installer.
Using a URL re-write you can deny access to the above directories. In your lighttpd.conf file adding the following URL rewrite rule should be sufficient to keep people out. It suppose your Dokuwiki files are installed under http://yourwebsite.tld/dokuwiki/. Don't forget to uncomment “mod_rewrite”
in the server.modules
section.
url.rewrite-once = ( "^/dokuwiki/(data|conf|bin|inc)/+.*" => "/nonexistentfolder" )
Or use “mod_access”
. More examples available here.
$HTTP["url"] =~ "^/dokuwiki/(data|conf|bin|inc)/+.*" { url.access-deny = ("") }
Dostęp do powyższych katalogów może zostać wyłączony w sekcji serwera DokuWiki pliku konfiguracyjnego Nginx. W pliku nginx.conf dodaj następującą lokalizację by zapobiec dostępowi do bezpiecznych folderów.
location ~ /(data|conf|bin|inc)/ { deny all; }
Zalecane jest również zablokowanie dostępu do plików .htaccess:
location ~ /\.ht { deny all; }
Zabezpieczenie folderu data
jest najważniejsze. Jeśli nie możesz przenieść folderów poza serwer sieciowy (patrz poniżej) lub nie możesz skonfigurować serwera by zablokować dostęp (patrz wyżej), powinieneś przynajmniej spróbować uczynić trudniejszą do odgadnięcia nazwę folderu z danymi.
Aby to zrobić, zmień nazwę folderu data na jakiś tajemniczy (np. długi ciąg znaków z literami i cyframi) i zmień ustawienie opcji savedir w pliku conf/local.php
.
Najbezpieczniejszym sposobem uniknięcia dostępu do wspomnianych folderów jest przeniesienie ich poza tak zwany “Korzeń Dokumentów” Webservera.
OSTRZEŻENIE: Jeśli planujesz użycie instalatora, powinieneś zainstalować wiki wykonując skrypt install.php zanim wykonasz ten krok. Jeśli operacja Przeniesienia Folderów wykonana zostanie wcześniej, wykonanie instalatora nie powiedzie się.
data
(i całą jego zawartość) poza korzeń dokumentówdata
.
Na przykład, jeśli folder data
został przeniesiony do /home/yourname/data
, dodaj następującą linię do conf/local.php
:
$conf['savedir'] = '/home/yourname/data/';
conf
(i całą jego zawartość) poza korzeń dokumentówinc
i wpisz w nim polecenie define DOKU_CONF
wskazując nowe położenie folderu conf
.
Na przykład, jeśli folder conf
został przeniesiony do /home/yourname/conf
,utwórz następujący inc/preload.php
:
<?php // DO NOT use a closing php tag. This causes a problem with the feeds, // among other things. For more information on this issue, please see: // http://www.dokuwiki.org/devel:coding_style#php_closing_tags define('DOKU_CONF','/home/yourname/conf/');
Foder bin zawiera narzędzia CLI. Jeśli nie masz dostępu do powłoki na serwerze, możesz po prostu usunąć folder i jego zawartość. W przeciwnym przypadku po prostu przenieś folder poza korzeń dokumentów. Nie jest potrzebna żadna dalsza konfiguracja.
Nie ma obecnie prostego sposobu przeniesienia tego folderu poza korzeń dokumentów. Jednak ponieważ nie zawiera on żadnych poufnych danych, nie jest wart wysiłku włożonego w jego przeniesienie.
DokuWiki zawiera kilka ustawień konfiguracyjnych, które mają wpływ na różne aspekty bezpieczeństwa instalacji. Proszę zapoznać się z dokumentacją każdego ustawienia, aby dowiedzieć się za co odpowiadają i jakie są sugerowane ustawienia.
DokuWiki posiada wiele wtyczek dodanych przez społeczność. Wtyczki dodają nową funkcjonalność do DokuWiki przez dopisanie nowego kodu. Oznacza to kod posiadający praktycznie dowolny dostęp do serwera. Ponadto wtyczki są rozpowszechniane oddzielnie od DokuWiki w zupełnie doraźny sposób. Nie poświęca im się w tym samym stopniu uwagi i nie przegląda, w jakim podlega rdzeń DokuWiki. Dlatego konieczne są środki bezpieczeństwa przed zainstalowaniem wtyczki.
Oto kilka wskazówek pomagających w wyborze wtyczki do zainstalowania.
lib
DokuWiki, który jest dostępny bezpośrednio z zewnątrz. Przejrzyj co zawiera wtyczka i zablokuj odpowiednio dostęp w plikach .htaccess.Patrz również: Jak zgłaszać problemy bezpieczeństwa we wtyczkach.
Oto kilka wewnętrznych i zewnętrznych stron związanych z bezpieczeństwem.