ZSS - cz. 1 - Sieci komputerowe - konfiguracja i administracja
Transkrypt
ZSS - cz. 1 - Sieci komputerowe - konfiguracja i administracja
Zarządzanie Serwerami Sieciowymi Sieci komputerowe - konfiguracja i administracja Studium podyplomowe KIS (PŁ) mgr inŜ. Adam Sobczyk e-mail: [email protected] Zarządzanie Serwerami Sieciowymi Terminarz zajęć 14-15.02.2008 Sobota, 14. 02. 2009: Niedziela, 15. 02. 2009: 8.15-10.30 – Wykład, 10.45-13.45 – Laboratorium 8.15-10.30 – Wykład, 10.45-13.45 – Laboratorium Uwaga: o godzinie 11:00 krótka przerwa na ankietę, którą przeprowadzi p. Marta Ciabiada (KIS). Wszystkie zajęcia odbywają się w sali 311: Katedra Informatyki Stosowanej, 90-924 Łódź, ul. Stefanowskiego 18/22, III piętro w budynku Wydziału Elektrotechniki, Elektroniki, Informatyki i Automatyki PŁ. Zarządzanie Serwerami Sieciowymi Cel kursu i wymagania wstępne Cel kursu - nabycie wiedzy teoretycznej i praktycznej z dziedziny konfiguracji usług i aplikacji serwerowych: konfiguracja filtru pakietów ‘netfilter’ z uŜyciem tablic ‘iptables’ – narzędzie do realizacji funkcji routingu oraz firewall’a, usługa DNS z uŜyciem programu ‘bind’ – mechanizmy i protokoły, Usługa samba w GNU/Linux jako darmowy odpowiednik SMB („Otoczenie sieciowe”) w systemach Windows. Nawiązanie współpracy, Usługi HTTP i FTP z uŜyciem aplikacji ‘Apache’ w środowisku izolowanym za pomocą ‘chroot’, Usługa e-mail na przykładzie oprogramowania ‘postfix’, połączenia szyfrowane i sieci VPN, realizowane z uŜyciem protokołów IPSec. Wymagania wstępne - wiedza na temat aspektów funkcjonowania sieci komputerowej: warstw otwartego modelu ISO/OSI, stosów protokołów TCP/IP oraz UDP/IP, połączenia i podstawowa obsługa w systemach operacyjnych MS Windows oraz GNU/Linux, podstawy funkcjonowania urządzeń sieciowych, teorii informacji oraz kryptografii. Zarządzanie Serwerami Sieciowymi Zakres wykładu i ćwiczeń laboratoryjnych 1. 2. 3. 4. 5. 6. 7. 8. Konfiguracja połączenia sieciowego w systemie GNU/LINUX. Routing statyczny, Usługa DNS - konfiguracja serwera ‘bind’, Zasada działania protokołu HTTP. Konfiguracja serwera ‘apache’, Zasada działania protokołów FTP. Konfiguracja serwera ‘vsftpd’, Samba jako serwer plików w 'Otoczeniu sieciowym' MS Windows, Szyfrowanie połączenia przy wykorzystaniu IPSec. Kryptografia symetryczna i asymetryczna, certyfikaty, podpis elektroniczny. System pocztowy na przykładzie ‘Postfix’, Filtracja i modyfikacja pakietów za pomocą ‘iptables’. Mechanizm NAT - konfiguracja zaawansowana, Konfiguracja połączenia sieciowego w systemie GNU/LINUX. Routing statyczny Charakterystyka ogólna cechy funkcjonalne zakres stosowalności Podstawowe pojęcia i reguły: adres, maska, brama, trasa kluczowe polecenia – ifconfig, route, ping, netstat Routing statyczny Charakterystyka ogólna (1) • Routing statyczny jest podstawową metodą routingu. Polega na ręcznym dodawaniu wpisów (marszrut) do tablicy routingu przez administratora. • W podejmowaniu decyzji router kieruje się jedynie ustawionymi przez administratora trasami (z metrykami przypisanymi na stałe). W szczególności: – – – • router podejmuje decyzje bazując na adresie IP hosta docelowego zawartym w pakiecie, wszystkie urządzenia na całej drodze pakietu uŜywają tego adresu IP, aby przesłać dane we właściwe miejsce, aby router podejmował właściwe decyzje musi wiedzieć jaka jest trasa do odległej sieci. W przypadku routingu statycznego, router: – – nie reaguje na zmiany w topologii sieci, nie oblicza samodzielnie najbardziej optymalnej ścieŜki dla danego pakietu. Routing statyczny Charakterystyka ogólna (2) • Router zaprogramowany do trasowania statycznego przesyła pakiety przez określone porty. Po skonfigurowaniu routerów nie jest konieczne poznawanie tras ani przesyłanie informacji na ich temat (rola routerów ograniczona wyłącznie do przesyłania pakietów). • Trasowanie statyczne sprawdza się jedynie w przypadku bardzo małych sieci, w których przesyłanie danych do wszystkich punktów docelowych odbywa się po tych samych ścieŜkach. • W małych sieciach (LAN) trasowanie statyczne jest zazwyczaj najlepszym rozwiązaniem, gdyŜ nie wymaga dodatkowego pasma na poznawanie tras i komunikację z innymi routerami. Jest teŜ względnie proste. Routing statyczny Charakterystyka ogólna (3) • W miarę rozrastania się sieci i tworzenia w niej nowych połączeń, utrzymanie rutowania statycznego staje się coraz bardziej pracochłonne. • Po kaŜdej zmianie w dostępności routerów lub urządzeń transmisyjnych (awarie, rekonfiguracje, niedostępności) w sieciach MAN/WAN konieczne jest ich ręczne sprawdzanie i przeprogramowywanie. • Dlatego sieci rozległe (MAN/WAN), gdzie konieczne jest korzystanie z wielu ścieŜek, bezwzględnie wymagają stosowania trasowania dynamicznego. Routing statyczny Podstawowe pojęcia i reguły (1) Podstawowe parametry adresowe IP urządzenia: Adres – identyfikuje urządzenie w sposób unikalny w (danej) sieci IP, Maska – pozwala na określenie przez urządzenie, do jakiej sieci IP naleŜy. Do tej sieci urządzenie będzie wysyłać pakiety bezpośrednio na swój interfejs sieciowy. salsolo@ubuntu:~$ ifconfig ppp0 ppp0 Link encap:Point-to-Point Protocol inet addr:79.162.44.97 P-t-P:10.64.64.64 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:541 errors:0 dropped:0 overruns:0 frame:0 TX packets:685 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:145414 (145.4 KB) TX bytes:92955 (92.9 KB) Procedura obsługi ruchu w węźle IP jest dokonywana z osobna dla kaŜdego pakietu IP, pojawiającego się w węźle (w routingu IP, realizowanym w warstwie 3ej modelu OSI/ISO nie wyróŜnia się połączeń, które pojawiają się dopiero w warstwie 4-ej - transportowej): Jeśli adres docelowy pakietu zgadza się z lokalnym adresem – odbieram pakiet i kończę przetwarzanie W przeciwnym wypadku sprawdzam czy tablica routingu zawiera wpis pasujący do adresu docelowego pakietu: NIE – odrzucamy pakiet, TAK – przesyłamy zgodnie z pasującym wpisem w tablicy routingu. KaŜdy węzeł IP (router, komputer etc.) posiada tablicę routingu i postępuje wg powyŜszego algorytmu. Routing statyczny Podstawowe pojęcia i reguły (2) Definicja trasy routingu składa się z warunku (adres i maska) oraz przypisanej do niego akcji (wysyłanie): Jeśli adres docelowy równa się danemu lub naleŜy do jego sieci to Wyślij pakiet przez wskazany interfejs (dostarczanie lokalne lub do innego urządzenia trasującego (dostarczanie zdalne). salsolo@ubuntu:~$ route Kernel IP routing table Destination Gateway 10.64.64.64 * link-local * default 10.64.64.64 Genmask 255.255.255.255 255.255.0.0 0.0.0.0 Flags UH U UG Metric 0 1000 0 Ref 0 0 0 Use 0 0 0 Iface ppp0 ppp0 ppp0 Brama (trasa) domyślna – trasa o warunku 0.0.0.0/0, pasują do niej wszystkie adresy docelowe: maska ma długość 0 bitów - nie porównujemy Ŝadnych bitów adresu docelowego pakietu, ma najniŜszy moŜliwy priorytet (najkrótsza moŜliwa maska), zostanie uŜyta, gdy adres nie będzie pasował do Ŝadnego innego wpisu w tablicy routingu. Aby urządzenie mogło wysyłać dane do innych sieci, naleŜy wpisać do tablicy routingu dodatkowe trasy. Routing statyczny Podstawowe pojęcia i reguły (3) Uwaga: dodanie do interfejsu adresu IP z określoną maską, powoduje automatyczne dopisanie do tablicy routingu wpisu w postaci: Jest to tzw. dostarczanie lokalne: Warunek - adres sieci otrzymany z dopisanego adresu IP i maski sieci, Akcja - wyślij dane bezpośrednio na interfejs na którym znajduje się adres naleŜący do sieci podanej w warunku. jeśli interfejs ma adres naleŜący do jakiejś sieci, to jest ona do niego bezpośrednio podłączona. Jak widać, błędne przypisanie adresu IP oraz maski sieci do danego interfejsu spowoduje błędu w routingu do całej sieci, którą definiuje błędnie przypisana para: adres/maska, Urządzenie docelowe musi być podłączone do tej samej sieci fizycznej, co podłączany interfejs przez który wysyłany jest pakiet - inaczej zostanie on zignorowany. Dostarczanie lokalne jest ostatnim etapem trasy pakietu przez sieć. Na przykład: dopisanie do interfejsu eth0 adresu 192.168.3.8/16 (z maską 255.255.0.0) spowoduje utworzenie wpisu w tablicy routingu, kierującego cały ruch do sieci 192.168.0.0/16 (czyli na wszystkie adresy zaczynające się od „192.168”) na interfejs eth0. Routing statyczny Podstawowe pojęcia i reguły (4) Konfiguracja interfejsu sieciowego: sudo ifconfig -a eth0 inet up netmask 255.255.255.0 192.168.1.1 Sprawdzenie konfiguracji wszystkich interfejsów sieciowych: sudo ifconfig –a Sprawdzenie dostępności zdalnego interfejsu: sudo ping -f 192.168.1.2 Uwaga: opcja '-f' powoduje zalew pingami ('ICMP echo request flood') Wyświetlenie aktualnej tablicy routingu: route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.64.64.64 * 255.255.255.255 UH 0 0 0 ppp0 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 link-local * 255.255.0.0 U 1000 0 0 ppp0 default 10.64.64.64 0.0.0.0 UG 0 0 0 ppp0 Usługa DNS. Konfiguracja serwera ‘bind’ Usługa DNS – co to takiego? Instalacja serwera ‘bind’ Konfiguracja serwera ‘bind’ Zarządzanie Serwerami Sieciowymi Usługa DNS – co to takiego? (1) DNS (Domain Name System), to system nazw domenowych, realizowany poprzez: Dzięki DNS nazwa mnemoniczna URL, np. www.wp.pl, moŜe zostać zamieniona na odpowiadający jej adres IP: Adresy DNS składają się z domen internetowych rozdzielonych kropkami – na przykład: www.wp.pl, .pl - domena geograficzna, właściwa dla organizacji, .wp. - domena naleŜącą do organizacji „Wirtualna Polska”, www. – tzw. alias serwera w domenie „wp.pl”, który oferuje usługi HTTP (WWW) w sieci publicznej (Internet). W ten sposób moŜliwe jest budowanie hierarchii nazw, które porządkują Internet. DNS to złoŜony system komputerowy oraz prawny, zapewniający: system serwerów, protokół komunikacyjny zapewniający zamianę adresów znanych uŜytkownikom Internetu (URL) na adresy zrozumiałe dla urządzeń sieciowych (IP). rejestrację nazw domen internetowych i ich powiązanie z numerami IP, realizuje bieŜącą obsługę komputerów odnajdujących adresy IP odpowiadające poszczególnym nazwom. Istnieje moŜliwość włączenia do systemu DNS serwera, który nie dysponuje stałym, publicznym adresem IP. Jest to tzw. usługa „DynDNS”. Przykład strony realizującej tę usługę: http://www.dyndns.com/. Zarządzanie Serwerami Sieciowymi Usługa DNS – co to takiego? (2) Więcej informacji ogólnych na temat DNS: Struktura domen Administracja DNS Instytucje administrujące DNS na świecie Instytucje administrujące DNS w Polsce Techniczna strona DNS Ogólny zarys NajwaŜniejsze cechy RFC Główne serwery DNS Rodzaje zapytań DNS Odpowiedzi na zapytania Protokół DNS Przykład działania systemu DNS Typy rekordów DNS Bezpieczeństwo znajdziemy na stronie: http://pl.wikipedia.org/wiki/DNS Zarządzanie Serwerami Sieciowymi Usługa DNS – instalacja serwera ‘bind’ Instalujemy pakiety ‘bind9’ oraz ‘dnsutils’: aptitude install bind9 dnsutils ‘dnsutils’ –zawiera oprogramowanie testujące, m.in.: ‘dig’, ‘nslookup’, ‘bind9-host’. alternatywą do instalacji z poziomu konsoli jest skorzystanie z MenedŜera pakietów ‘Synaptic’ (zalecane rozwiązanie). Pliki konfiguracyjne znajdują się w katalogu: /etc/bind/ Mamy trzy główne pliki konfiguracujne: named.conf named.conf.local named.conf.options Przechodzimy do pliku: named.conf.local od którego zaczynamy konfigurację. W powyŜszym pliku definiujemy strefy. Strefa - obszar serwera DNS odpowiedzialny za daną domenę. Zawsze definiujemy parę stref: zwykłą i odwrotną. Strefa zwykła zawiera plik bazodanowy, odpowiedzialny za deklarację nazw hostów w obszarze jednej domeny. Strefa odwrotna - zawiera plik bazodanowy zawierający odwzorowanie nazw hostów na adresy IP w obrębie domeny. Zarządzanie Serwerami Sieciowymi Usługa DNS - konfiguracja serwera ‘bind’ (1) Budowa stref (plik: ‘named.conf.local’): //strefa zwykła zone „kowalski" { type master; file "/etc/bind/db.kowalski"; }; //strefa odwrotna zone „0.1.10.10.in.addr-arpa" { type master; file "/etc/bind/db.10101"; }; ‘type master’ – określa charakter serwera DNS. Master oznacza serwer nadrzędny, W strefach deklarujemy ścieŜkę do plików bazodanowych do których serwer DNS będzie odwoływał się. Pliki te tworzymy sami, Dyrektywa ‘zone’ określa nazwę domeny np.: zone ”kowalski”. Zarządzanie Serwerami Sieciowymi Usługa DNS - konfiguracja serwera ‘bind’ (2) Opis plików bazodanowych - plik dla strefy zwykłej (‘db.kowalski’): $TTL 604800 // określa czas odświeŜania pliku w sekundach Po SOA wpisujemy nazwę hosta, na którym jest zainstalowany serwer DNS, po kropce nazwę naszej domeny, którą tworzymy (w tym przypadku: kislab.kowalski). Charakterystyczna jest kropka po nazwie Zarządzanie Serwerami Sieciowymi Usługa DNS - konfiguracja serwera ‘bind’ (3) Definicja serwerów nazw - NS (‘NameServer’): @ IN NS Definicja hostów w strefie - wpisujemy nazwy, które przypisujemy adresowi IP: localhost kis-lab kis-lab.kowalski. IN IN A A 127.0.0.1 10.10.0.x CNAME oznacza alias do hosta, np. www to alias do hosta ‘kis-lab’, który jest przypisany do domeny ‘kowalski’ Jego końcowa nazwa, to: kis-lab.kowalski == //www.kowalski): ftp www IN IN CNAME CNAME kis-lab kis-lab Zarządzanie Serwerami Sieciowymi Usługa DNS - konfiguracja serwera ‘bind’ (4) Opis plików bazodanowych - plik dla strefy odwrotnej (‘db.10101’): Zasada budowy jest analogiczna jak pliku dla strefy zwykłej Występuje wpis PTR (pointer) zamiast NS Ten plik „odwraca” (zamienia) nazwy hosta na adresy IP. $TTL 604800 @ IN SOA kis-lab.kowalski. admin.kowalski. ( 2009021001 ; Serial# - przy kaŜdej edycji trzeba inkrementować 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL @ IN NS kis-lab.kowalski. x.0.10 IN PTR kis-lab //dopisujemy wszystkie hosty w sieci, // x to końcówka adresu IP Zarządzanie Serwerami Sieciowymi Usługa DNS - konfiguracja serwera ‘bind’ (5) Przechodzimy do pliku ‘named.conf.options’ Wpisujemy adresy sieci, które mogą korzystać z serwera DNS (skąd mogą być zadawane zapytania): allow-query { 127.0.0.1; 10.10.0.0/24; }; Wpisujemy serwery pomocnicze, do których będzie odnosił się DNS: forwarders { 10.10.0.1; // adres NS, który jest przechowywany na lokalnym serwerze 194.204.152.34; // adresy innych znanych serwerów DNS 194.204.159.1; }; DHCP Zarządzanie Serwerami Sieciowymi Usługa DNS - konfiguracja serwera ‘bind’ (6) Modyfikujemy plik ‘/etc/resolv.conf’, wpisując w nim w kolejności: Search kowalski nameserver 127.0.0.1 Spowoduje to nakierowanie resolver’a na odpytywanie lokalnego serwera DNS pod wskazany adres. Uwaga: ‘resolver’ jest usługą odpytującą serwery DNS o zadany adres. W obecnych czasach jest to narzędzie wbudowane w kaŜdą aplikację uŜywającą adresów URL i dlatego nie wymaga instalacji dedykowanego klienta. Po konfiguracji restartujemy skrypt: /etc/init.d/bind9 restart Uwaga: ‘bind9’ uruchamia się takŜe wraz z ponownym startem systemu (tworzony jest skrypt startujący w katalogu: ‘/etc/init.d/’): Działanie domeny sprawdzamy poleceniem: dig kis-lab.kowalski lub: nslookup ‘nazwa_domeny’ Warto teŜ sprawdzić wynik działania dla innych nazw domen ☺. Usługa serwera HTTP (WWW). Konfiguracja serwera ‘apache’ WWW, HTTP, ‘apache’ – co to takiego? Instalacja serwera ‘apache’ Konfiguracja serwera ‘apache’ Zarządzanie Serwerami Sieciowymi WWW – co to takiego? World Wide Web (w skrócie: WWW lub Web) – hipertekstowy, multimedialny, sieciowy (TCP/IP) system informacyjny oparty na publicznie dostępnych, otwartych standardach IETF i W3C. Podstawowym zadaniem WWW jest publikowanie informacji w przystępnej formie. WWW jest często błędnie utoŜsamiane z całym Internetem lecz stanowi jego najpopularniejszą usługę. Dostęp do WWW uzyskujemy za pomocą tzw. przeglądarki internetowej, która łączy się z serwerem internetowym i pobiera z niego zbiór informacji zwany „stroną internetową”. Strona internetowa moŜe zostać wyświetlona, zapisana w lokalnym systemie plików lub wydrukowana. Zawartość strony internetowej jest tzw. hipertekstem (skrypty HTML/XHTML), oferującym moŜliwość podąŜania za tzw. hiperłączami, przenoszącymi do innych stron internetowych w ramach tego samego lub innych serwerów internetowych. WWW został zapoczątkowany we wczesnych latach dziewięćdziesiątych w CERN (Szwajcaria) jako system dostępu do informacji (w tym graficznych) w duŜej organizacji naukowej. Prototyp systemu WWW został zbudowany przez Tima Berners-Lee. WWW szybko przekroczył (podobnie jak cała sieć Internet) granice środowiska naukowego, a po kilku latach został zaakceptowany i zaadaptowany na całym świecie. Na zwiększenie popularności WWW miało znaczny wpływ ogłoszenie w lutym 1993 r. przez Uniwersytet w Minnesocie zamiaru pobierania opłat licencyjnych za korzystanie z ich implementacji serwera usługi ‘Gopher’. Zarządzanie Serwerami Sieciowymi HTTP – co to takiego? HTTP (Hypertext Transfer Protocol), to protokół przesyłania dokumentów hipertekstowych na potrzeby realizacji usługi WWW. Aktualna definicja HTTP jest zawarta w dokumencie RFC 2616. HTTP jest protokołem typu „klient-serwer” - połączenie zawsze inicjowane jest przez tzw. klienta (zwykle przeglądarka WWW) i ma na celu pobranie lub wysłanie informacji z/do serwera. Za pomocą protokołu HTTP przesyła się m.in.: HTTP zapewnia znormalizowany sposób komunikowania się komputerów poprzez określenie formy Ŝądań danych (klient) oraz formę odpowiedzi (serwer). HTTP jest protokołem bezstanowym (‘stateless’), gdyŜ nie zachowuje informacji o poprzednich transakcjach, co pozwala zmniejszyć obciąŜenie serwera. Bezstanowość HTTP moŜe być kłopotliwa, gdy potrzeba zapamiętać stan uŜytkownika, który wcześniej łączył się juŜ z serwerem. Popularne rozwiązania tego problemu, to: Ŝądania udostępnienia dokumentów WWW, informacje o „kliknięciu odnośnika”, informacje z wypełnionych formularzy. Zadaniem stron WWW jest publikowanie informacji – natomiast protokół HTTP właśnie to umoŜliwia. mechanizm tzw. ciasteczek (‘cookies’), sesje realizowane po stronie serwera (wyjątek od zasady działania w architekturze „klientserwer”), ukryte parametry, przesyłane np. przez stronę z formularzem, parametry umieszczone w ciągu URL (np. /index.php?newuserid=55). HTTP standardowo korzysta z portu (TCP) nr 80 (lub 8080 w przypadku stosowania w sieci mechanizmów NAT/PAT w sieci lokalnej). Więcej informacji na temat HTTP: http://pl.wikipedia.org/wiki/HTTP. Zarządzanie Serwerami Sieciowymi ‘apache’ – co to takiego? ‘apache’ to otwarty serwer HTTP, dostępny dla wielu systemów operacyjnych (m.in. UNIX, GNU/Linux, BSD, MS Windows). Jest najszerzej stosowanym serwerem HTTP w Internecie (niezmiennie od kilku lat ponad 50% udziału wśród serwerów WWW). ‘apache’ w połączeniu z interpreterem PHP i bazą MySQL, to jedno z najczęściej spotykanych środowisk w firmach oferujących hosting WWW. Cechy serwera i obsługiwane moduły: wielowątkowość, skalowalność, bezpieczeństwo, Kontrola dostępu/uwierzytelnianie: ‘mod_access’, CGI, Proxy typu HTTP, FTP, CONNECT: ‘mod_proxy’, SSI: ‘mod_include’, Content-Negotation: ‘mod_negotation’, Moduł URL-Rewriting: ‘mod_rewrite’, SSL: ‘mod_ssl’, moŜliwość osadzania interpreterów języków skryptowych, np. ‘mod_perl’, ‘mod_php’, ‘mod_python’. Więcej informacji: http://pl.wikipedia.org/wiki/Apache_(serwer). Zarządzanie Serwerami Sieciowymi Instalacja serwera ‘apache’ • Instalacja pakietu ‘apache’: aptitude install apache2 • Alternatywne (i zalecane) rozwiązanie, to uŜycie „MenedŜera instalacji i aktualizacji aplikacji” czyli ‘Synaptic’ -> • PołoŜenie katalogu z zainstalowanym serwerem ‘apache2’: /etc/apache2 Zarządzanie Serwerami Sieciowymi Konfiguracja serwera ‘apache’ (1) Plik konfiguracyjny: /etc/apache2/apache2.conf W pliku konfiguracyjnym znajdziemy odwołania do innych plików i folderów z katalogu ‘/etc/apache2/’: ‘port.conf’ – deklaracja portu na którym działa apache2 (jeśli nie zmieniane, to 80), ‘sites-enabled’ – katalog z plikami konfiguracyjnymi VirtualHost'ów, ‘mods-enabled’ – katalog z plikami konfiguracyjnymi modułów. Za pomocą uŜytkowników wirtualnych (virtualhosts) moŜna tworzyć wiele stron i serwisów - korzystając z tego samego adresu IP (rózne serwisy WWW w jednej domenie i na tym samym realnym serwerze) !!! Zarządzanie Serwerami Sieciowymi Konfiguracja serwera ‘apache’ (2) Konfiguracja ‘virtualhost’'a jako strony informacyjnej. Edytujemy plik konfiguracyjny: /etc/apache2/sites-enabled/000-default Plik ten powiązany jest symbolicznie z odpowiednim pliku w katalogu: /etc/apache2/sites-available/default. Z kolei w/w katalog nie ma odwołań w pliku konfiguracyjnym ‘apache2.conf’ więc nie wpływa dalej na konfigurację serwera. Przykładowa zawartość tego pliku (konfiguracja okrojona do niezbędnego minimum): <VirtualHost 127.0.0.1:80> ServerAdmin [email protected] ServerName localhost DocumentRoot /var/www/ <Directory /> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/error.log </VirtualHost> Zarządzanie Serwerami Sieciowymi Konfiguracja serwera ‘apache’ (3) <VirtualHost 127.0.0.1:80> - deklaracja adresu IP oraz portu (moŜna równieŜ wpisać nazwę hosta 127.0.0.1 – w tym przypadku ‘localhost’), na którym działa virtualhost. Tą dyrektywą rozpoczyna się kaŜdy plik konfiguracyjny virtualhost'a ServerAdmin [email protected] DocumentRoot /var/www/ - deklaracja katalogu ze stroną informacyjną <Directory /></Directory> - dyrektywy zamykające grupy innych dyrektyw Options - dyrektywa stwierdzająca które cechy serwera są dostępne Indexes - dyrektywa ta pokazuje wylistowane pliki z katalogu jeśli nie ma pliku index.html FollowSymLinks - cecha serwera zezwalająca na powiązania symboliczne w zadeklarowanym katalogu /var/www MultiViews - cecha serwera zezwalająca na negocjowanie zawartości katalogu ‘/var/www’ chodzi o moŜliwość wyświetlania języków skryptowych, plików graficznych itp. Jeśli ustawiona, w pierwszej kolejności wyświetla pliki ‘.html’ AllowOverride None - zabrania nadpisywania pliku konfiguracyjnego virtualhost'a przez pliki ‘.htaccess’, mogące zawierać predefiniowane opcje. W naszym przypadku plik ten nie występuje ale gdyby pojawił się, zostanie pominięty Order allow,deny - kontroluje dostęp. Najpierw są sprawdzane wszystkie dyrektywy określone parametrem ‘allow’ (przynajmniej jedna musi pasować - inaczej Ŝądanie dostępu zostanie odrzucone). Następnie wszystkie dyrektywy ‘deny’ są sprawdzane – jeśli jakaś pasuje, dostęp zostanie odrzucony. W ostateczności, gdy Ŝadna z dwóch dyrektyw nie pasuje, domyślnie dostęp jest odrzucany. allow from all - dyrektywa stwierdzająca domyślne zezwolenie na wyświetlanie wszystkich plików w katalogu. - deklaracja adresu email administratora Zarządzanie Serwerami Sieciowymi Konfiguracja serwera ‘apache’ (4) Po kaŜdej zmianie w plikach konfiguracyjnych naleŜy zrestartować serwer ‘apache’: /etc/init.d/apache2 restart Dla sprawdzenia poprawności konfiguracji moŜemy dokonać zmian w pliku: /var/www/index.html i po wpisaniu w przeglądarce adresu ‘127.0.0.1’ lub ‘localhost’ zaobserwować zmiany. Aktywujemy moduł ‘userdir’, który zezwala kaŜdemu uŜytkownikowi na ekspozycję zawartości katalogu o ustalonej nazwie poprzez serwer ‘apache’: a2enmod userdir ‘a2enmod’ - komenda aktywująca moduły dla serwera apache ‘a2dismod’ – komenda dezaktywująca moduły dla serwera apache Moduły raz aktywowane są uruchamiane wraz ze startem serwera. MoŜliwe do aktywowania moduły znajdują się w katalogu: /etc/apache2/mods-enabled/ Zarządzanie Serwerami Sieciowymi Konfiguracja serwera ‘apache’ (5) Plik konfiguracyjny modułu znajduje się w katalogu: /etc/apache2/mods-enabled/userdir.conf <IfModule mod_userdir.c> UserDir public_html UserDir disabled root <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Indexes Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> </IfModule> Zarządzanie Serwerami Sieciowymi Konfiguracja serwera ‘apache’ (6) Składnia pliku konfiguracyjnego modułu jest podobna do składni pliku konfiguracyjnego virtualhost'a. <Directory /home/*/public_html> - dyrektywa wskazująca katalog, który ma być wyeksponowany przez serwer ‘apache’ po wpisaniu w przeglądarce: http://127.0.0.1/~* gdzie: ‘*’ określa dowolnego uŜytkownika. Tego parametru nie zmieniamy. MoŜna za to zmienić nazwę katalogu ‘public_html’ na bardziej czytelną. Aby katalog podany w pliku konfiguracyjnym modułu czyli ‘public_html’ był tworzony wraz z tworzeniem konta uŜytkownika, musimy go zdefiniować w katalogu: ‘/etc/skel/public_html’ Wszystkie katalogi i pliki zawarte w katalogu ‘/etc/skel/’ bedą dodawane do kaŜdego nowo-utworzonego katalogu uŜytkownika !!! Dla sprawdzenia działania modułu moŜna zmianić nazwę katalogu ‘public_html’ na ‘www’. Po kaŜdej zmianie w plikach konfiguracyjnych ‘apache2’, ‘virtualhost‘ów’ oraz modułów restartujemy serwer ‘apache’ komendą: /etc/init.d/apache2 restart Zarządzanie Serwerami Sieciowymi Konfiguracja serwera ‘apache’ (7) Skrypt inicjacyjny uruchamiający serwer ‘apache’ znajduje się w pliku ‘/etc/init.d/apache2’. Wywołujemy go instrukcją: /etc/init.d/apache2 PowyŜsza instrukcja występuje z parametrami start, stop, restart, forcereload. Uwaga: W przypadku kiedy nastąpi błąd przy wywołaniu powyŜszych instrukcji dokonujemy „zabicia” procesu instrukcją: killall apache2 a następnie ponownie uruchamiamy usługę za pomocą: /etc/init.d/apache2 start Uwaga: Aby dodać (lub usunąć) aplikację, aby uruchamiała się podczas startu uŜywamy polecenia: update-rc.d ‘nazwa_skryptu’ default update-rc.d ‘nazwa_skryptu’ remove ‘nazwa_skryptu’ – nazwa skryptu taka, jak w ‘init.d’ czyli ‘apache2’ default/remove –domyślne wartości procesu uruchamiania/usuwanie. Uwaga: ‘apache’ po instalacji uruchamia się domyślnie podczas startu wraz ze wszystkimi dodanymi modułami. Zarządzanie Serwerami Sieciowymi Konfiguracja serwera ‘apache’ (8) Dodanie uŜytkownika serwera ‘apache’ następuje po dodaniu go w systemie. Robimy to wpisując komendę: useradd -m -s /bin/false nazwa_usera -m – określa parametry domyślne. Katalog domyślny to ‘/home/nazwa_/user’ -s - określa powłokę. Jeśli /bin/false to uŜytkownik nie będzie mógł zalogować się do systemu poniewaŜ taka powłoka nie istnieje. Pozostałe parametry uruchomieniowe komendy ‘useradd’: - g – zdefiniowanie grupy - G – zdefiniowanie wielu grup - d – określa katalog uŜytkownika - c – ustawia komentarz - e – ustawia datę wygaśnięcia konta w formacie: rok/miesiąc/dzień Komenda ‘useradd – D’ pokaŜe wartości domyślne. Konta zostały stworzone bez haseł. NaleŜy je dodać komendą ‘paswwd’: passwd nazwa_usera Alternatywnie moŜna skorzystać z graficznego trybu i programu ‘users-admin’ (uruchomienie z poziomu konsoli). Uwaga: Wszystkie powyŜsze polecenia wykonujemy jako ‘root’ lub uŜywając komendy ‘sudo’.