DokuWiki

It's better when it's simple

Narzędzia użytkownika

Narzędzia witryny


pl:security

Bezpieczeństwo

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.

Raportowanie i powiadomienia

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.

Bezpieczeństwo dostępu przez sieć

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ć.

Blokowanie dostępu do folderów w Apache

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”.

Deny Directory Access in IIS

Access to the mentioned directories can be disabled in IIS' configuration settings.

  1. Open the configuration tool: Start → Settings → Control Panel → Administrative Tools → Internet Information Services
  2. Navigate to the directory you want to protect: Local Computer → Web Sites → Default Web Site → path to directory
  3. Right-Click the folder and chose Properties → Directory Security → IP address and domain name restrictions → Edit…
  4. Choose „By default, all computers will be: Denied access”

In IIS7:

  1. select „IIS Request Filtering”
  2. go to the „URL” tab
  3. click on „Deny Sequence”
  4. enter „/data” in the popup box

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.

Deny Directory Access in Lighttpd

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 = ("")
}

Blokowanie dostępu do folderów na Nginx

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;
    }

Zmiana nazwy folderu data

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.

Przeniesienie folderów poza DocRoot

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ę.

Folder data

  1. Przenieś folder data (i całą jego zawartość) poza korzeń dokumentów
  2. Zmień ustawienie savedir by wskazywało nowe położenie folderu data.

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/';

FOlder conf

  1. Przenieś folder conf (i całą jego zawartość) poza korzeń dokumentów
  2. Utwórz plik o nazwie preload.php z folderze inc 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:

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/');

Folder bin

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.

Folder inc

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.

Ustawienia konfiguracji DokuWiki

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.

  • allowdebug – wyłączenie wyjścia diagnostycznego, aby uniknąć wycieku informacji o systemie :!:
  • fmode, dmode – ustawienie uprawnień dla plików utworzonych w DokuWiki, a także odczytu informacji na temat konfiguracji uprawnień
  • fetchsize – konfiguracja buforowania danych zewnętrznych
  • fullpath – pokazywanie pełnych nazw ścieżek do stron
  • usewordblock – zapobieganie spamowi przy użyciu blacklist
  • mailguard – unikanie robotów zbierających adresy mail
  • iexssprotect – ochrony przed problemem XSS w Internet Explorerze
  • htmlok – włączenie HTML
  • phpok – właczenie PHP
  • hidepages – ukrycie niektórych stron w indeksie i wyszukiwaniu
  • safemodehack – obejścia ograniczenia trybu bezpiecznego

Zabezpieczenia wtyczek

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.

  • Jeśli możesz, przejrzyj samodzielnie kod źródłowy wtyczki zanim ją zainstalujesz.
  • W przypadku wątpliwości, pytaj na liście mailingowej.
  • Wtyczki instalowane są w folderze lib DokuWiki, który jest dostępny bezpośrednio z zewnątrz. Przejrzyj co zawiera wtyczka i zablokuj odpowiednio dostęp w plikach .htaccess.
  • Wtyczki są autorstwa twórców nie związanych bezpośrednio z projektem DokuWiki - mogą oni być niedoświadczeni, mieć złe intencje lub może trzymać kod źródłowy wtyczki na serwerze, który został skompromitowany. Uważaj, którym ufasz!
  • Przejrzyj stronę wtyczki pod kątem wymienionych ostrzeżeń o bezpieczeństwie i aktualizować wtyczkę gdy będą dostępne nowe wydania.

Patrz również: Jak zgłaszać problemy bezpieczeństwa we wtyczkach.

Lektura dodatkowe

pl/security.txt · ostatnio zmienione: 2015-10-02 18:05 przez 194.88.128.214

Wszystkie treści w tym wiki, którym nie przyporządkowano licencji, podlegają licencji: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki