Bezpieczeństwo serwera Apache

Bezpieczeństwo serwera Apache

Jednym z aspektów funkcjonowania serwera WWW jest bezpieczeństwo udostępnianych danych i informacji.

Udostępnianie komputera osobom postronnym jest bardzo niebezpieczne i można to porównać do otwartych drzwi i wpuszczeniu nieznajomych do mieszkania. Przeciętny komputer stojący na biurku zapewnia pewien poziom bezpieczeństwa wykradzenie danych czy innych informacji oraz uszkodzenie wymaga po prostu fizycznego dostępu czyli włamania się na ten komputer. Sytuacja zmienia się diametralnie kiedy ten komputer podłączony jest do sieci Internet za pomocą linii telefonicznej lub innego medium. Jeśli komputer nie zostanie odpowiednio zabezpieczony skutki takiej nierozwagi mogą być poważne.

Dyskusja na temat bezpieczeństwa systemów i serwerów praktycznie nie ma końca i można by na ten temat długo dyskutować.

Jednym z ważniejszych zagadnień funkcjonowania serwera Apache jest problem bezpieczeństwa. Oprócz wszystkich normalnych zagrożeń, takich jak włamania, serwery WWW są odpowiedzialne za chronienie integralności zarówno informacji rozsyłanej przez serwer, jak i informacji wysyłanej przez klienta do serwera.

Główne zagrożenia spowodowane bezpieczeństwem to:

  • wykorzystanie błędów programowych serwera WWW i skryptów CGI do uzyskania nielegalnego dostępu do plików systemu czy nawet przejęcia kontroli nad całym komputerem
  • przedostanie się ważnych informacji z serwera do nieupoważnionych użytkowników
  • przechwycenie danych przesyłanych między serwerem i przeglądarką
  • przedostanie się ważnych informacji z komputera, na którym działa przeglądarka WWW do fałszywego serwera prowadzonego potajemnie przez przestępców.

Podstawowym zadaniem dobrego zarządzania serwerem jest uniemożliwienie udostępnienia poufnych informacji. Z drugiej jednak strony serwer ma służyć do szybkiego udostępniania dużej ilości informacji. Co za tym idzie wzrasta poziom niebezpieczeństwa.

Jednakże tak jak i każde udostępnienie czegokolwiek pociąga za sobą ryzyko, że udostępnione zasoby mogą być nadmiernie wykorzystywane lub też sposób ich udostępniania może być co najmniej niewłaściwy. Dlatego też przy prowadzeniu serwisów administratorzy powinni zwrócić szczególną uwagę na prawidłowe ich zabezpieczenie.

Jakie środki podejmiemy w celu zabezpieczenia serwera zależeć będzie przede wszystkim jakiego typu będzie nasz serwis. Inaczej będzie to wyglądało w przypadku serwera na którym testujemy swoje strony, a inaczej w przypadku serwera w intranecie czy też udostępnionego publicznie.

W przypadku bezpiecznego serwera użytkownicy i projektanci aplikacji muszą dokładnie rozważyć, które z certyfikatów i urzędów certyfikacji można uznać za wiarygodne. Jakiekolwiek błędy spowodowane nieodpowiednim wybraniem mogą spowodować duże straty.

Zabezpieczenie serwera Apache w systemach Windows jest dyskusyjne nie oznacza to ze systemy te nie posiadają żadnych zabezpieczeń a raczej są one słabo udokumentowana i zrozumiałe dla wąskiej grupy ludzi. Dlatego też dla poważnych czy tez komercyjnych serwisów zaleca się instalowania serwera Apache na którejś z odmian systemów operacyjnych Unika.

Zabezpieczenie Apache w tych systemach ogranicza się do odpowiedniej przemyślanej konfiguracji serwera:

  • ograniczenie wykonywania skryptów CGI w ogóle lub tylko w obrębie katalogu użytkownika
  • ograniczeni wykonywania skryptów PHP, JAVA, ActiveX
  • zabezpieczenie plików czy katalogów na hasło za pomocą pliku .htacces
  • używanie dyrektyw deny i allow dla określenia lub zablokowania komputera lub grupy komputerów
  • serwery WWW pozwalają na przechodzenie do miejsc docelowych wskazywanych przez łącza symboliczne, które znajdują się poza strukturą drzewa katalogów przeznaczonych na dokumenty serwera. W ramach bezpieczeństwa powinniśmy zabronić przechodzenia do linków wskazujących na łącza symboliczne lub umożliwić tylko przechodzenie do łącz, takich gdzie dowiązanie i wskazywany przez nie plik lub katalog należą do tego samego użytkownika. Łącza symboliczne mogą być niebezpieczne ze względu na możliwość stworzenia przez lokalnych userów dowiązań do plików systemowych co może spowodować ominięcie zabezpieczeń. Stosowanie łącz symbolicznych umożliwia opcja FollowSymLinks dyrektywy Options
  • dużą porcję informacji mogą nam dostarczyć pliki dzienników. Wszystkie błędy wykryte przez serwer zapisywane są w pliku wskazanym przez dyrektywę ErrorLog. Zaleca się więc wyłączeni modułu mod_status i mod_info (domyślnie są wyłaczone)
  • ograniczenie działania komputera jedynie do prowadzenia serwera WWW
  • ustalenie maksymalnej wielkości plików przesyłanych na serwer co zabezpieczy przed nadmiernych zapełnieniem buforów pamięci
  • uruchamiamy jedynie te usługi, które są niezbędne dla działania serwera WWW
  • przeprowadzanie regularnie wykonywanych kopii zapasowych
  • śledzenie na bieżąco informacji na temat wykrytych przez producenta i użytkowników luk w bezpieczeństwie w używanym systemie operacyjnym

Powyższe zagadnienia obejmują bezpieczeństwo po stronie serwera ale oprócz samego bezpieczeństwa serwera, bardzo ważne jest bezpieczeństwo po stronie klienta. Jeżeli chcemy prowadzić biznes e-commerce, możemy skorzystać z bezpiecznego serwera, który korzysta z bezpiecznego protokołu.

Wszystkie dane przesyłane są w formie czystego tekstu. Na dodatek jest to robione na otwartym kanale. Każdy kto ma dostęp do któregokolwiek z serwerów, przez które przechodzą informacje od użytkownika, może bez problemów przechwycić te dane. Jedynym wyjściem z tej sytuacji jest zastosowanie systemu szyfrującego. Obecnie, wszystkie bardziej liczące się przeglądarki (Internet Explorer, Netscape czy Opera), umożliwiają obsługę standardów kodowania, lecz każda robi to w inny sposób.

Protokół TCP/IP nie zawiera w budowanych mechanizmów ochrony danych w komunikacji klient – serwer, co umożliwiłoby bezpieczną wymianę danych. Może to stanowić zagrożenie, że dane zostaną przechwycone przez osoby trzecie. Dla spełnienia wymagań bezpieczeństwa na rynku internetowym zostało opracowanych wiele protokołów pośredniczących pomiędzy warstwą transportu – TCP/IP a warstwą aplikacyjną – np. HTTP (protokół przesyłania danych w WWW).

Do najważniejszych z nich zaliczamy:

  • S-HTTP (Secure-HTTP) jest modyfikacją HTTP umożliwiającą bezpieczne przesyłanie informacji zgodnych z protokołem HTTP. S-HTTP nie jest standardem. Został zgłoszony do World Wide Web Consortium (W3C) w celu poddania procesowi standaryzacyjnemu. Zapewnia poufność, integralność i autoryzację danych, a jednocześnie możliwość negocjowania algorytmów, zarządzania kluczami oraz metod szyfrowania.
  • SSL (Secure Socket Layer) jest to protokół opracowany przez firmę Netscape Communications, stanowi „nakładkę” na TCP/IP i jako taki umożliwia zarówno przesyłanie wiadomości w protokole HTTP jak i innych.
  • SST (Secure Transaction Technology) opracowany został przez Microsoft i firmę VISA. Protokół jest przeznaczony do prowadzenia bezpiecznych zakupów w Internecie przy pomocy kart kredytowych.

Najbardziej rozpowszechnionym z wyżej wymienionych protokołów jest protokół SSL i używa się go w przypadku, gdy istnieje potrzeba zestawienia bezpiecznego połączenia, aby dane wymieniane między klientem a serwerem nie mogły być przechwycone przez niepowołane osoby. Zapewnia szyfrowanie i integralność danych serwera oraz opcjonalnie klienta. Bezpieczny serwer stosujemy przy prowadzeniu m.in. sklepów internetowych, w których korzystamy z numerów kont czy kart kredytowych. Protokół SSL dopuszcza trzy warianty uwierzytelniania porozumiewających się stron: uwierzytelnienie obustronne (serwer i klient), uwierzytelnienie jednostronne (serwer, klient zostaje anonimowy) i komunikację całkowicie anonimową.

Jeśli chcemy korzystać z bezpiecznego uwierzytelnienie musimy zaopatrzyć się w moduł mod_ssl, który dla opisywanego serwera nie jest aktualnie dostępny.

Dokumentacja opisująca bezpieczeństwo serwera Apache w systemie Windows praktycznie nie istnieje nawet w dokumentacji dostarczanej razem z serwerem, jednak przeanalizowanie dostępnych dyrektyw i zdrowy rozsadek może uczynić z serwera Apache w miarę bezpieczny serwer stron WWW.

Dyrektywy blokowe serwera HTTP Apache

 Apache udostępnia cały szereg tzw. dyrektyw blokowych (ang. block directives). Dyrektywy te pozwalają na ograniczenie innych zawartych w nich dyrektyw określonych dla plików, katalogów czy serwerów wirtualnych. Dyrektywy blokowe stanowią, więc rodzaj kontenera dla innych dyrektyw, które są wykonywane tylko i wyłącznie w obrębie danej dyrektywy blokowej i są one niezwykle istotne dla administrowania serwerem.

Dyrektywa blokowa na następującą składnie:

<dyrektywa blokowa>

</dyrektywa blokowa>

Poniżej przedstawię dyrektywy blokowe oraz dyrektywy używane wewnątrz dyrektyw blokowych przez serwer Apache.

<VirtualHost>

Dyrektywa blokowa używaną przez Apache do definiowania tzw. serwerów wirtualnych. Jeśli na przykład mamy domenę o nazwie moja_firma.com.pl i chcemy utworzyć oddzielna stronę dla biura w tej firmie np. biuro.moja_firma.com.pl to właśnie do tego celu używamy <VirtualHost>.

Dostępne dyrektywy:

  • ServerAdmin – adres emal administratora serwera wirtualnego
  • DocumentRoot – ścieżka dostępu do katalogu z plikami serwera wirtualnego
  • SerwerName – nazwa domeny serwera wirtualnego
  • ErrorLog – ścieżka do pliku error.log w którym zapisywane SA błędy w działaniu serwera
  • TransferLog – ścieżka do pliku acces.log

 

Przykład:

<VirtualHost biuro.moja_firma.com.pl>

        ServerAdmin aminek@moja_firma.com.pl

       DocumentRoot /usr/www_virtual/biuro

       SerwerName biuro.moja_firma.com.pl

       ErrorLog /usr/www_virtual/biuro/logs/error_log

      TransferLog /usr/www_virtual/biuro/logs/access_log

</VirtualHost>

 

Kolejne trzech dyrektyw blokowych, (Directory, Files, Location), zostaną przedstawione w kolejności rosnącej, co oznacz ze dyrektywa Directory może zostać zmodyfikowana przez Files, a ta musi ustąpić pierwszeństwa Location.

<Directory> i <DirecoryMatch>

Zapis:

<Directory Nazwa_katalogu>

</Directory>

Dyrektywa ta pozwala na ograniczenie zasięgu działania dyrektyw do wybranego katalogu lub grupy katalogów. Nazwa katalogu może zawierać symbole wieloznaczności „?” (dowolny znak) i „*” (dowolny ciąg dowolnych znaków), a również nawiasy kwadratowe ([ ]), służące do definiowania grup znaków. Na przykład [a-d] oznacza dowolny znak z ciągu a, b, c, d. Umieszczenie tyldy (~) na początku nazwy katalogu pozwala na użycie wyrażeń regularnych.

Wyrażenia regularne (ang. regular expressions) to wzorce, które opisują łańcuchy symboli. Teoria wyrażeń regularnych jest związana z teorią tworzenia tzw. języków naturalnych. Wyrażenia regularne mogą określać zbiór pasujących łańcuchów, mogą również wyszczególniać istotne części łańcucha.
Dyrektywa <DirectoryMatch> działa tak samo jak <Direktory>, tj. akceptuje definicję nazwy katalogu w postaci wyrażeń regularnych, tak więc zapis <Directory ~/katalog> i <Directory /katalog> są identyczne.

Dyrektywy te można użyć w konfiguracji głównej oraz serwerach wirtualnych.

<Files> i <FilesMatch>

Zapis:

<Files nazwa_pilku>

</Files>

Dyrektywy tej używa się dla ograniczenia określonego pliku podanego w parametrze nazwa_pliku. Dyrektywa <FileMatch> używana jest wraz z wyrażeniem regularnym nie poprzedzonym znakiem tyldy.

Aby ograniczyć obsługiwanie przez serwer tylko plików graficznych z rozszerzeniem *.gif, *.jpg musimy użyć dyrektywy <FileMatch „.gif|jpg”>.

Dyrektywę tą używamy w konfiguracji głównej, serwerach wirtualnych oraz plikach .htaccess.

<Location> i <LocationMatch>

Zapis:

<Location adres-url>

</Location>

Użycie tych dyrektyw pozwala na ograniczenia zasięgu działania bloku dyrektyw do zadanych adresów URL.

Dyrektywy te używa się w konfiguracji głównej oraz serwerach wirtualnych.

<IfDefine>

Zapis:

<IfDefine nazwa>

</IfDefine>

Dyrektywa ta pozwala na warunkowe uaktywnienie bloku dyrektyw w przypadku uruchomienia Apache z opcja –D nazwa. Pozwala to na zamkniecie w osobnym pliki httpd.conf osobnych wariantów konfiguracyjnych. Przydaje się to głównie podczas tworzenia i testowania tworzonych witryn. W przypadku regularnie działających witryn nie jest to stosowane.

<IfModule>

Zapis:

<IfModule [!]Nazwa_modułu>

</IfModule>

Dyrektywa pozwala na warunkowe uaktywnienie bloku dyrektyw w zależności od tego czy moduł o danej nazwie jest dołączony (podczas kompilacji lub dynamicznie przez załadowanie biblioteki dll) do programu Apache. Poprzedzenie nazwy modułu wykrzyknikiem powoduje uaktywnienie modułu, jeśli nie został on dołączony do programu.

Pliki konfiguracyjne Apache

Apache jest najszerzej stosowanym serwerem HTTP w Internecie. Jego udział wśród serwerów wynosił około 65%. W połączeniu z interpreterem języka skryptowego PHP i bazą danych MySQL, Apache stanowi jedno z najczęściej spotykanych środowisk w firmach oferujących miejsce na serwerach sieciowych.

Konfiguracja serwera Apache odbywa się za pomocą kilku plików konfiguracyjnych.

Należą do nich:

httpd.conf

Jest to główny plik konfiguracyjny Apache. W pliku tym zapisane są m.in. informacje na temat komputera, portu, trybu pracy, logów, zasobów udostępnianych przez serwer. Tutaj również przeprowadzamy konfigurację serwerów wirtualnych WWW uruchamianych przy pomocy Apache.

srm.conf

Plik ten konfiguruje sposób zarządzania żądaniami serwera, wskazuje na katalogi, które zawierają informacje oferowane przez serwer i różne elementy potrzebne do formatowania i prezentowania informacji.

access.conf

Służy do definiowania kontroli dostępu dla serwera i dostarczanych przez niego informacji.

Wszystkie trzy pliki mają podobną strukturę. Są one plikami ASCII, komentarze zaczynają się od znaku # i wszystkie posiadają obszerny komentarz do poszczególnych poleceń. Ponadto, większość poleceń w plikach jest zapisana w formie opcji, po której następuje wartość przypisana do opcji. Użycie trzech plików konfiguracyjnych jest podyktowane zachowaniem ze standardem serwera NCSA. Od wersji 1.3.4 zaleca się umieszczenie wszystkich parametrów konfiguracyjnych w jednym pliku co sprawia łatwiejsze zarządzanie serwerem. Pozostałe pliki (srm.conf i acess.conf) nadal istnieją, ale zawierają informacje, że istnieją wyłącznie ze względów historycznych a całą konfigurację należy przeprowadzić w pliku httpd.conf. W wersji prezentowanej w tym opracowaniu, czyli 2.0.52 już całkowicie zrezygnowano z tych plików i nie znajdują się one w katalogu konfiguracyjnym serwera.

Konfiguracja pliku serwera WWW składa się z dyrektyw, które można ustawić konkretną opcją, pozwalającą na kierowanie procesem uruchamiania serwera.
Dyrektywy wraz z opcjami zapisujemy w jednej linii w następujący sposób:

dyrektywa opcja 1 opcja 2

<Directory />
AllowOverride none
Require all denied
</Directory>

Po każdej modyfikacji pliku konfiguracyjnego należy z restartować serwer tak, aby nowe ustawienia zostały zaktualizowane.

Oprócz zwykłych dyrektyw możemy korzystać z dyrektyw blokowych posiadających budowę podobną do znaczników języka HTML. Dyrektywy te pozwalają na ograniczenie zasięgu działania innych zawartych w nich dyrektyw dla określonych serwerów wirtualnych, katalogów i plików.

Apache serwer stron WWW dla każdego

Serwer WWW to program, który odbiera nadesłane siecią żądanie i odpowiada na nie, czyli jeśli wpisujemy w przeglądarce jakiś adres to przeglądarka wysyła żądanie do serwera, a serwer w odpowiedzi na to żądanie wyświetla nam w oknie przeglądarki żądana stronę.

WWW –( w skrócie World Wide Web) – jest hipertekstowym, multimedialnym, sieciowym systemem informacyjnym opartych na publicznym dostępie, którego pierwotnym i w chwili obecnej nadal podstawowym zadaniem WWW jest publikowanie informacji. Aby uzyskać dostęp do tak udostępnianej informacji, trzeba posłużyć się programem komputerowym, który nazywamy przeglądarką internetową. Przeglądarka łączy się z serwerem internetowym, skąd pobiera pewien zbiór informacji określany jako strona internetowa. Strona internetowa może zostać wyświetlona, zapisana w lokalnym systemie plików czy wydrukowana. Zawartość strony internetowej jest hipertekstem, znaczy to, że użytkownik oglądając stronę internetową może podążać za hiperłączami, które przenoszą go do innych stron internetowych w ramach tego samego serwera internetowego lub innych dostępnych w ramach sieci. Często korzystanie z WWW nazywa się „surfowaniem po sieci„.

serwer ApacheNazwę Apache można różnie tłumaczyć, są zwolennicy, którzy twierdza, iż nazwa pochodzi od gry słów „a patch”, czyli „łatka” i ma sugerować, iż serwer Apache to program, który składa się z bloku już istniejącego kodu i doklejonego do niego łat (patch), ale spora grupa osób uważa to za głupi żart podważający autorytet programistów tworzących ten program. Dlatego też grupa trzeźwo myślących fachowców lansuje pogląd, iż nazwa pochodzi od nazwy słynących z waleczności i wytrwałości północnoamerykańskiego plemienia Indian Apache.

Serwer Apache jest programem nie komercyjnym pracuje nad min grupa ochotników zwanej Zespołem Apache (The Apache Group), która ma pełna swobodę w akceptowaniu i odrzucaniu sugestii z zewnątrz od użytkowników.

Serwer Apache pochodzi w prostej linii od innego serwera WWW, opracowanego przez rząd stanów Zjednoczonych, a ściślej przez Krajowe Centrum Zastosowań Superkomputerów (NCSA, National Center for Supercomputing Applications). W dokumencie FAQ dla serwera Apache dostępnego na stronie http://www.apache.org/docs/FAQ.html można przeczytać:

… serwer Apache oparty został na kodzie i rozwiązaniach zastosowanych w najpopularniejszym w owych czasach serwerze http – programie httpd 1.3 opracowanych w NCSA w początkach roku 1995.

Warto tu wspomnieć, iż opracowanie serwera, w NCSA było finansowane z pieniędzy podatników, dlatego też kod jest dostępny dla każdego, można go skopiować i na bazie togo kodu stworzyć własny serwer.

Apache jest jednym z najpopularniejszych serwerów WWW używanych w Internecie szacuje się ze około 68% serwerów WWW to właśnie serwery Apache. Serwer ten jest, dlatego tak popularny, iż spełnia wszystkie wymaganie stawiane serwerom tego typu, a mianowicie:

  • Pracuje szybko, co pozwala obsługiwać wiele żądań bez większego obciążania komputera, na którym pracuje.
  • Pracuje w trybie wielozadaniowym, co umożliwia obsługiwanie wielu żądań
  • Weryfikować tożsamość klientów
  • Reagować na błędy, np. gdy nie może znaleźć żądane strony
  • Uzgodnić z klientem język komunikacji
  • Udostępniać dane w różnym formacie
  • Możliwość wykorzystania w charakterze serwera pośredniczącego (Proxy)
  • Zapewnić bezpieczeństwo danych

Tak mniej więcej przedstawia się zakres usług, które według twórców serwera program ten powinien zapewniać. Oczywiście można by też wymyślić wiele innych funkcji, które mogłyby się przydać w przyszłości lub ulepszyć serwer lub wręcz przeciwnie pogorszyć jego działanie.

Serwer Apache dostępny jest praktycznie dla wszystkich systemów operacyjnych. W wielu dystrybucjach Linux jest dołączany standardowo, w systemie Windows program ten należy zainstalować i dlatego też praca ta opierać się będzie na instalacji i konfiguracji w systemie Windows.

Jak działa Apache?

Odwołując się do jakiejś strony WWW wpisujmy jej adres i przeglądarka za pośrednictwem Internetu przesyła komunikat do sytemu (w tym przypadku serwera WWW) dostępnego pod tym adresem, który musi być uruchomiony. Komunikat taki trafia do portu 80, który jest domyślnym portem dla serwerów WWW, a właściwie dla protokołu HTTP.

  • HTTP – (ang. Hypertext Transfer Protocol) to protokół sieci WWW (World Wide Web). Jest on wykorzystywany przy każdej transakcji. Właśnie za pomocą protokołu HTTP przesyła się żądania udostępnienia dokumentów WWW i informacje o kliknięciu odnośnika oraz informacje z formularzy. Zadaniem stron WWW jest publikowanie informacji – natomiast protokół HTTP właśnie to umożliwia. Protokół HTTP jest tak użyteczny, ponieważ udostępnia znormalizowany sposób komunikowania się komputerów ze sobą. Określa on formę żądań klienta dotyczących danych oraz formę odpowiedzi serwera na te żądania.
  • Porty protokołu to pojęcie związane z protokołem TCP-IP używanym w Internecie do rozróżniania wielu różnych usług i połączeń na serwerze. Porty protokołu są oznaczone za pomocą liczb całkowitych z zakresu od 1 do 65535. Niektóre porty (od 1 do 1023) są zarezerwowane na standardowe usługi takie jak WWW albo poczta elektroniczna. Przykładowo jeśli jakiś host est serwerem WWW i poczty elektronicznej to program chcący otworzyć stronę WWW na tym hoście musi otworzyć port 80 a chcąc wysłać email musi otworzyć port 25.

Każdy adres składa się z trzech podstawowych elementów:

<metody>://<adresu-hosta>/<bezwzględnej-scieżki-dostepu>

Np. http://www.wp.pl

server Apache

W przykładzie tym metodą wysłania komunikatu przez przeglądarkę jest protokół HTTP po tym właśnie protokole przeglądarka wie gdzie ma wysłać i na jakim porcie nasłuchiwać odpowiedzi. Kolejny element nazwa hosta w tym przykładzie jest to www.wp.pl jest to zrozumiała i łatwa do zapamiętania dla człowieka nazwa. Nazwa ta trafia do serwera DNS, który zamienia ja na adres IP zrozumiały dla komputerów.

  • DNS – (ang. Domain Name System) – to system serwerów oraz protokół komunikacyjny zapewniający zamianę adresów znanych użytkownikom Internetu na adresy zrozumiałe dla sieci komputerowej. Dzięki wykorzystaniu DNS nazwa mnemoniczna, np. www.wp.pl może zostać zamieniona na odpowiadające jej adres IP, czyli 212.77.100.101.
  • IP – (ang.Internet Protocol) – to protokół komunikacyjny, używany powszechnie w Internecie i sieciach lokalnych

I na podstawie IP komunikat zostaje wysłany do właściwego komputera. Trzeci element, czyli bezwzględna ścieżka dostępu jest w tym danym przykładzie domyślna i wskazuje na plik, który jest domyślnie uruchamiany przez serwer, jeśli nie zostanie podany w adresie. Najczęściej jest to plik typu index.html lub inny ustawiony w opcjach konfiguracyjnych serwera. Po takim zinterpretowaniu adresu w oknie naszej przeglądarki ukarze się żądana przez nas strona.

Serwer Apache jest przystosowany do pracy w systemach wielozadaniowych i dostępny jest zarówno dla platform Unix jak i Windows.
Program Apache wykonywany jest zwykle jako proces drugoplanowy, każda uruchomiona kopia jest odpowiedzialna za obsługę witryny WWW dostępnej w odpowiednim katalogu. W systemie Windows Apache pracuje jako pojedynczy proces o kliku wątkach, z których każde obsługuje jedno połączenie. W stanie spoczynku serwer Apache prowadzi jedynie nasłuch na adresach IP oraz portach wyszczególnionych a pliku konfiguracyjnym. Po otrzymaniu żądania HTTP, Apache dobiera je analizuje oraz odpowiada na podstawie zasad zapisanych w pliku konfiguracyjnym.

Plik konfiguracyjny jest podstawowym narzędziem dla administratora do konfiguracji, zarządzania i sterowania serwerem, a administrator ma do dyspozycji około 150 dyrektyw oraz kilkanaście opcji wywołania, pozwalającymi kierować procesem uruchamiania serwera.