Obrona wigwamu

Poniżej prezentujemy kilkanaście sztuczek, które sprawią, że komputer, na którym został zainstalowany serwer Apache, nie będzie podatny na ataki ze strony domorosłych hakerów. Na specjalistów od włamań – jak wiadomo – nie ma rady, choć stosując nasze zalecenia, i im możemy utrudnić życie. Wszystkie komponenty serwera zainstalujmy na oddzielnej partycji dysku, sformatowanej w systemie plików NTFS. Dzięki temu będziemy mogli – podobnie jak w OS-ach uniksowych – nadawać prawa plikom i katalogom, a także szyfrować dane.

Serwer Apache

Domyślna instalacja Apache’a dla Windows działa na poziomie konta systemowego LocalSystem. Ustawienie to powinniśmy zmienić z dwóch powodów. Po pierwsze, takie konto ma zbyt duże uprawnienia lokalne, zatem każdy, kto znajdzie lukę w oprogramowaniu Apache’a, będzie mógł potencjalnie dostać się do wnętrza naszego systemu. Po drugie, konto LocalSystem nie ma uprawnień do korzystania z zasobów Sieci przez mechanizmy bezpieczeństwa Windows. Aby usunąć to potencjalne zagrożenie, tworzymy w systemie konto zwykłego użytkownika, nadajemy mu niezbędne uprawnienia i uruchamiamy na nim serwer WWW.

Na straży rezerwatu

O tym, kto będzie miał dostęp do naszego serwera WWW, możemy zadecydować już na poziomie zapory ogniowej. Choć jest to metoda skuteczna, nie zawsze będzie dla nas najwygodniejsza. Poznajmy zatem dyrektywy Allow oraz Deny, za pomocą których określimy, kto i do jakich zasobów będzie miał dostęp. Polecenia Allow oraz Deny umieszczamy w pliku konfiguracyjnym Apache’a (

httpd.conf)

, w sekcji Directory. Przykładowo: jeśli chcemy, aby dostęp do naszego serwera WWW (czyli konkretnego katalogu) miały tylko komputery z sieci lokalnej, musimy dodać następujący wpis:

<Directory “E:/WWW/Apache/Apache2/htdocs”>
Order Deny, Allow
Deny from all
Allow from 192.168.1.0/24
</Directory>

Wyrażenie Order decyduje o kolejności przetwarzania dyrektyw Allow i

Deny

. Najpierw blokujemy wszystko (

Deny

), a następnie zezwalamy na dostęp tylko komputerom z sieci lokalnej. Pozostali ujrzą komunikat 403 Forbidden, który informuje o zakazie dostępu do tych zasobów. Możemy stosować dowolną kombinację dyrektyw Deny i

Allow

, przypisując im różne wartości – nazwy domen, pojedyncze adresy IP lub ich zakres. Co ważne, uprawnienia dostępu modyfikujemy dla każdego katalogu na serwerze z osobna.

Nie ufaj skryptom

Jeżeli na serwerze będą materiały publikowane przez osoby trzecie, powinniśmy włączyć tylko te mechanizmy, które będą tym osobom rzeczywiście potrzebne. Zagrożeniem są skrypty CGI oraz polecenia SSI. Za pomocą kodu SSI użytkownik może wykonać jakieś polecenie na serwerze (dyrektywa

exec

) lub przejrzeć zawartość jakiegoś plik z dysku (dyrektywa

include

). Domyślnie Apache ma wyłączoną obsługę SSI. Aby zezwolić na przetwarzanie poleceń SSI, w sekcji Directory dodajemy wpis Options +Includes. Znacznie lepiej jest jednak użyć wyrażenia Option IncludesNOEXEC, które co prawda włączy obsługę SSI, ale zabroni wykonywania poleceń z poziomu strony WWW.

Zabezpieczając Apache’a, możemy zastosować także inną prostą sztuczkę. Polega ona na blokowaniu wyświetlania (listowania) zawartości katalogów, w wypadku gdy na serwerze nie umieszczono plików startowych index.html, 3index.php itd. W tym celu w sekcji Directory umieszczamy wpis Options -Indexes .

Wejście na hasło

Jeśli chcemy, by wszystkie dane publikowane w witrynach były odczytywane tylko przez uprawnione do tego osoby, dostęp do stron zabezpieczmy hasłem. Do tego celu stosuje się plik .htaccess, który umieszczamy w katalogu, do którego dostęp ograniczamy. Zawartość przykładowego zbioru .htaccess wygląda następująco:

AuthType Basic
AuthName “Podaj hasło:”
AuthUserFile e:\www\hasla\haslo.file
Require user kowalski

Zbiór tekstowy utworzymy w Windows za pomocą edytora. Otwieramy Notatnik, wprowadzamy właściwą treść, po czym zapisujemy plik na dysku poleceniem Plik | Zapisz jako. Ważne jest, aby pole Typy pliku ustalić na Wszystkie pliki. Dzięki temu program nie dołączy do nazwy zbioru rozszerzenia TXT.

Plik haslo.file zawiera hasło wygenerowane przez program htpassword. Powinniśmy przechowywać go w innym katalogu na dysku niż ten, w którym zamieszczamy strony WWW. Aby przygotować zbiór haslo.file, otwieramy konsolę (

Akcesoria | Wiersz poleceń

), a następnie przechodzimy do katalogu, w którym zainstalowaliśmy Apache’a. W dalszym kroku wydajemy komendę:

htpassword -c e:\www\hasla\haslo.file kowalski

Żeby cały opisany tu mechanizm zadziałał, w konfiguracji Apache’a musimy zezwolić na modyfikację praw dostępu do serwera z poziomu plików .htaccess. Decyduje o tym opcja AllowOverri de, którą umieszczamy wewnątrz dyrektywy Directory. Jeżeli w httpd.conf, w konfiguracji wybranego katalogu znajdzie się wpis AllowOverride None, pliki .htaccess nie będą akceptowane. Administrator może zezwolić na ich przetwarzanie, zmieniając wartość tej opcji z None na All. Innym dozwolonym parametrem jest

AuthConfig

– co prawda przetwarza on zbiory .htaccess, ale tylko te dyrektywy w nich zawarte, które służą do autoryzacji dostępu do strony WWW.

Bezpieczny Windows
  • Uruchamiając nawet prosty serwer pod Windows, powinniśmy pamiętać o kilku podstawowych zasadach:
  • dobrze skonfigurowany firewall to połowa sukcesu; na zewnątrz otwieramy tylko te porty, które rzeczywiście są wymagane do działania usługi, np. port 80, na którym działa Apache,
  • jeżeli serwer funkcjonuje tylko w sieci lokalnej, na zaporze blokujemy cały ruch z zewnątrz,
  • pamiętajmy o aktualizacji oprogramowania serwerów i samego systemu; w miarę możliwości instalujmy ich najnowsze wersje,
  • uruchamiajmy tylko te usługi, których rzeczywiście potrzebujemy; zmiany ustawień dokonamy w module Panel sterowania | Narzędzia administracyjne | Usługi.