Sieciowe systemy operacyjne usługi sieciowe dr inż. Maciej Piechowiak 1 Wprowadzenie warstwa zapewniająca interfejs pomiędzy aplikacjami używanymi do komunikacji, a siecią poprzez którą komunikaty są transmitowane, protokoły warstwy aplikacji są używane do wymiany danych pomiędzy programami uruchomionymi na hoście źródłowym i hoście docelowym, istnieje wiele protokołów warstwy aplikacji, przy czym ciągle pojawiają się nowe a stare są rozwijane i modyfikowane. większość protokołów warstwy aplikacji modelu TCP/IP zostało stworzonych przed pojawieniem się komputerów osobistych, graficznych interfejsów użytkownika czy obiektów multimedialnych protokoły te realizują niewiele funkcji określonych w warstwach prezentacji i sesji modelu OSI. 2 Wprowadzenie protokoły TCP/IP są z reguły zdefiniowane w dokumentach RFC (ang. Request For Comments), dokumenty RFC opisują standardy techniczne zestawu protokołów TCP/IP, publikacją tych dokumentów zajmuje się organizacja IETF (ang. Internet Engineering Task Force). 3 1
Wprowadzenie 4 Protokoły 5 Nagłówki TCP i UDP 6 2
Adresacja portów 7 Adresacja portów 8 Aplikacje, usługi, polecenia syst. 9 3
Numery portów 10 Numery portów 11 Protokoły warstwy aplikacji 12 4
Model klient-serwer 13 Model klient-serwer 14 Model peer-to-peer 15 5
Protokoły TCP DNS(ang. DomainNameSystem) -port 53 TCP/UDP HTTP(ang. HypertextTransfer Protocol) -port 80 TCP SMTP(ang. Simple Mail Transfer Protocol) -port 25 TCP POP(ang. Post Office Protocol) -port 110 UDP Telnet-port 23 TCP DHCP(ang. DynamicHost ConfigurationProtocol) -port 67 UDP FTP(ang. File Transfer Protocol) -porty: 20 i 21 TCP 16 DNS DNS wykorzystuje zbiór rozproszonych serwerów, które tłumaczą nazwy na związane z nimi numeryczne adresy, protokół DNS definiuje zautomatyzowaną usługę, która dopasowuje nazwy do wymaganych numerycznych adresów sieciowych, opisuje format zapytań i odpowiedzi oraz formaty danych, protokół DNS w procesie komunikacji używa pojedynczej struktury informacji zwanej komunikatem, format ten używany jest do wszelkiego typu zapytań klienta i odpowiedzi serwera, informacji o błędach czy komunikatów RR (ang. Resource Record) przesyłanych pomiędzy serwerami, DNS resolverwspiera rozwiązywanie nazw dla innych aplikacji sieciowych oraz usług, które tego potrzebują. 17 DNS serwer DNS zapewnia odwzorowywanie nazw poprzez demona, który często określany jest mianem named. serwer DNS opisuje domeny za pomocą tzw. rekordów zasobowych (ang. resource record, RR), rekordy te zawierają nazwę, adres oraz typ rekordu. kiedy klient wykonuje zapytanie, proces serwera "named", w celu samodzielnego rozwiązania nazwy, najpierw przegląda własne rekordy, jeżeli operacja ta zakończy się niepowodzeniem, kontaktuje się z innymi serwerami. 18 6
Typy rekordów DNS A-adres urządzenia końcowego, NS -autorytatywny serwer nazw, CNAME-umowne nazwy serwerów wraz z ich pełnymi nazwami domenowymi (ang. canonical name lub Fully QualifiedDomainName); używane w sytuacji, gdy wiele usług ma ten sam adres sieciowy, ale każda usługa ma swój własny wpis w DNS, MX-rekord wymiany poczty; mapuje nazwę domenową do listy serwerów odbierających pocztę. 19 DNS żądanie może być przesyłane dalej do kilku serwerów, co wydłuża czas i zużywa przepustowość, z chwilą gdy dopasowanie zostanie odnalezione, informacja zostaje zwrócona do serwera pytającego na początku, serwer tymczasowo przechowuje adres numeryczny, który został dopasowany do nazwy, w pamięci podręcznej (ang. cache). 20 DNS 21 7
HTTP 22 HTTP 23 Poczta elektroniczna 24 8
Poczta elektroniczna 25 Poczta elektroniczna 26 Poczta elektroniczna (POP3) telnet localhost 110 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. +OK USER st02 +OK PASS st02 +OK STAT +OK 2 979 LIST +OK 1 362 2 617. 27 9
Poczta elektroniczna (POP3) RETR 2 +OK Return-Path: <st01@malena.info.ukw.edu.pl> Delivered-To: st02@malena.info.ukw.edu.pl Received: (qmail 22502 invoked by uid 1024); 26 Sep 2007 17:59:00-0000 Received: from localhost (sendmail-bs@127.0.0.1) by localhost with SMTP; 26 Sep 2007 17:59:00-0000 Date: Wed, 26 Sep 2007 19:59:00 +0200 (CEST) From: st01@malena.info.ukw.edu.pl To: st02@malena.info.ukw.edu.pl Subject: witaj Message-ID: <Pine.LNX.4.63.0709261958460.22500@malena.info.ukw.edu.pl> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=us-ascii; format=flowed Status: O X-Status: X-Keywords: X-UID: 2 czesc. DELE 1 +OK QUIT +OK Connection closed by foreign host. 28 Poczta elektroniczna (SMTP) telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 malena.info.ukw.edu.pl ESMTP MAIL FROM:st01@malena.info.ukw.edu.pl 250 ok RCPT TO:st02@malena.info.ukw.edu.pl 250 ok DATA 354 go ahead Witaj. 250 ok 1190829212 qp 22465 QUIT 221 malena.info.ukw.edu.pl Connection closed by foreign host. 29 FTP 30 10
FTP tryb pasywny tryb aktywny 31 DHCP 32 /etc/dhcpd.conf ddns-update-style ad-hoc subnet 192.168.1.0 netmask 255.255.255.0 { # The range of IP addresses the server # will issue to DHCP enabled PC clients # booting up on the network range 192.168.1.201 192.168.1.220; # Set the amount of time in seconds that # a client may keep the IP address default-lease-time 86400; max-lease-time 86400; # Set the default gateway to be used by # the PC clients option routers 192.168.1.1; # Don't forward DHCP requests from this # NIC interface to any other NIC # interfaces option ip-forwarding off; # Set the broadcast address and subnet mask # to be used by the DHCP clients 33 option broadcast-address 192.168.1.255; option subnet-mask 255.255.255.0; 11
/etc/dhcpd.conf # Set the DNS server to be used by the # DHCP clients option domain-name-servers 192.168.1.100; # Set the NTP server to be used by the # DHCP clients option nntp-server 192.168.1.100; # If you specify a WINS server for your Windows clients, # you need to include the following option in the dhcpd.conf file: option netbios-name-servers 192.168.1.100; # You can also assign specific IP addresses based on the clients' # ethernet MAC address as follows (Host's name is "laser-printer": } host laser-printer { hardware ethernet 08:00:2b:4c:59:23; fixed-address 192.168.1.222; } 34 SMB protokół SMB wykorzystuje do działania dwa protokoły niższych rzędów -protokół warstwy sesji NetBIOS(który sam wykorzystuje jako warstwę transportu TCP/IP albo DECnetalbo IPX/SPX) lub protokół nierutowalnynetbeuibędący protokołem warstw sieci, transportu i sesji, systemy Windows potrafią korzystać z SMB, a co za tym idzie z NetBIOS, zarówno poprzez TCP/IP (obecnie najpopularniejsza metoda), jak i poprzez IPX/SPX/NetBEUI(stosowany tylko w małych sieciach), Samba instalowana na systemach Unix korzysta tylko z SMB poprzez TCP/IP. 35 SMB identyfikacja komputerów w sieciach SMB odbywa się za pomocą ich nazw NetBIOS(nazwą jest ciąg znaków, nie dłuższy niż 15 znaków) lub za pomocą mechanizmów protokołów "podległych" SMB, np. poprzez adres IP czy nazw DNS, gdy SMB wykorzystuje protokół TCP do transportu danych, Pierwotna wersja protokołu umożliwiała: otwieranie i zamykanie plików, otwieranie i zamykanie drukarek, odczyt i zapis z/do plików, tworzenie i kasowanie plików/katalogów, przeszukiwanie katalogów, ustawianie i odczytywanie atrybutów plików, blokowanie i udostępnianie wybranych fragmentów plików. 36 12
SMB/CIFS CIFS (ang. CommonInternet File System) to nowa wersja protokołu SMB opracowywana przez Microsoft i kilka innych firm, szkic protokołu został przesłany do IETF, jednak z powodu wielu niedoskonałości nie został zatwierdzony, CIFS został zaimplementowany m.in. w Windows 2000/XP/2003 oraz Samba 3.0, wykorzystywane porty sieciowe: 137/UDP, 138/UDP, 139/TCP oraz opcjonalnie 445/TCP. 37 WINS WINS (ang. Windows Internet NameService) jest usługą stworzoną przez firmę Microsoft, umożliwiającą tłumaczenie nazw komputerów na adresy internetowe, użytkownik korzystający z usługi WINS może odwoływać się do komputerów w sposób bardziej intuicyjny pisząc po prostu jego nazwę np.: SEKRETARIAT -nazwa ta zostaje następnie zamieniona na adres IP tego komputera, WINS zawiera bazę danych, która odwzorowuje adresy IP na nazwy NetBIOS danego komputera i odwrotnie, 38 NetBIOS NetBIOS(ang. Network Basic Input/OutputSystem) oryginalnie zaprojektowany przez firmę IBM, zapewnia podstawowy interfejs łączenia aplikacji z innymi komputerami oraz współdzielenie danych, NetBIOSdziała w warstwie sesji modelu OSI, NetBIOStransmitowany w TCP/IP (NBT NetBIOSoverTCP/IP) używa portów: 137 -NetBIOSName 138 -NetBIOSDatagram 139 -NetBIOSSession 39 13
NetBIOS NetBIOSspełnia następujące założenia: wszystkie stacje w danej sieci traktowane są jednakowo, aplikacje nie zajmują się szczegółami transportu, usługi nie zależą od tego, jak sieć została zrealizowana sprzętowo, obsługiwane są "przyjazne" nazwy -nie ma potrzeby posługiwania się adresami. Komunikacja w NetBIOSwykorzystuje dwie metody: bezpołączeniowa -w formie datagramówbez potwierdzenia ich dotarcia na miejsce -najczęściej wykorzystywana w trybie rozgłaszania (broadcast), połączeniowa -w formie sesji -transmisja odbywa się niezawodnie (z potwierdzeniami). 40 NetBEUI NetBEUIprzesyła datagramyprotokołu NetBIOSdrugiej warstwy między hostami na podstawie adresów MAC, NetBEUIjest ścisłą implementacją protokołu drugiej warstwy, zaprojektowaną do przesyłania datagramównetbiosw sieci jednolitej nie dysponuje informacjami trzeciej warstwy, NetBEUInie może być trasowany (adresowanie MAC). 41 WINS usługa WINS może działać sama lub we współpracy z serwerem DNS, przeznaczona jest dla małych sieci, składających się z kilkunastu komputerów, działa w architekturze klient-serwer, serwer WINS, który obsługuje zapytania i rejestruje nazwy oraz klienta (NetBiosi TCP/IP), które tworzy zapytania związane z rozpoznawaniem nazw, nazwy NetBIOSbyły wykorzystywane we wcześniejszych wersjach systemów operacyjnych Microsoft Windows do identyfikowania i lokalizowania komputerów i innych współużytkowanych lub zgrupowanych zasobów wymaganych do celów rejestracji lub rozpoznawania nazw w sieci. 42 14
WINS usługa WINS zmniejsza liczbę lokalnych emisji IP mających na celu rozpoznanie nazw NetBIOS oraz ułatwia użytkownikom odnajdowanie komputerów w sieciach zdalnych, baza danych WINS jest aktualizowana automatycznie przy każdej dynamicznej zmianie konfiguracji adresów. NetBEUI NBT 43 Domeny i grupy robocze Grupa robocza: zbiór komputerów zarejestrowanych w tej samej grupie SMB Domena: grupa robocza + serwer uwierzytelniający (kontroler domeny) 44 SAMBA składowe pakietu nmbd demon świadczący usługi Windows Internet Name Service (WINS) i wspomagający przeglądanie zasobów sieci. nmbd demon umożliwiający współdzielenie plików i drukarek w sieci SMB i zapewniający uwierzytelnianie klientów SMB. smbclient program klienta dzięki którym można podłączyć się do zasobów serwera SMB. smbpasswd zarządzanie użytkownikami sieci SMB. nmblookup przeszukiwanie nazw NetBIOSowych w sieci SMB. 45 15
SAMBA /etc/samba/smb.conf parametry: [global] [homes] [printers] 46 ; parametry globalne ustawień serwera ; parametry zasobów użytkowników ; parametry ustawień podsystemu drukowania [udzial_testowy] ; definicja dowolnego udziału zmienne: %m -NetBIOSowa nazwa klienta %u -nazwa użytkownika %S -nazwa bieżącego udziału %v -wersja Samby %T -bieżąca data i czas SAMBA parametry sekcji [global] workgroup = GRUPA_ROBOCZA netbiosname= SERWER_SAMBA serverstring = %h server(samba %v) security= user interfaces= 192.168.0.0/24 os level= 69 domainmaster= no localmaster = yes preferredmaster = yes logon script= %U.bat include= /usr/local/samba/lib/smb.conf.%l hostsallow= 192.168.0. 127.0.0.1 log file = /var/log/samba.log.%m 47 SAMBA parametry sekcji [homes] path = /export/samba/dane comment = Dysk z danymi volume = Stacja-Sieciowa browseable = yes writeable = no ; read only = yes guest ok = yes ; public = yes valid users = @ksiegowosc szef invalid users = gosc root preexec = mount /dev/cdrom root postexec = umount /dev/cdrom 48 16
SAMBA parametry sekcji [printers] printing = bsd path = /tmp printable = yes guest ok = yes print command = /usr/bin/ps2pdf %s 49 Usługa WWW - Apache dwukrotnie większy udział w rynku niż IIS Microsoft, oprogramowanie open sourceo otwartym kodzie źródłowym, prawo dowolnego modyfikowania kodu źródłowego, technologia umożliwiająca pisanie własnych modułów, utrzymanie małych stron oraz dużych serwisów WWW, utrzymanie stron statycznych (HTML) lub integracja z aplikacjami internetowymi (PHP, ASP, JSP, CGI/Perl), licencja freeware pobieranie źródeł serwera oraz wersji skompilowanych, 50 Usługa WWW - Apache Apachewykonywany jest zwykle jako proces drugoplanowy, każdy egzemplarz procesu serwera zajmuje się obsługą witryny WWW utożsamianą z wybranym katalogiem, katalogi serwera: conf pliki konfiguracyjne (httpd.conf), htdocs dokumenty w języku HTML (web space), logs pliki dzienników błędów i dostępu do serwera, cgi-bin skrypty CGI (poza katalogiem htdocs). w stanie spoczynkowym Apacheprowadzi nasłuch na adresie IP i porcie określonych w konfiguracji serwera, po pojawieniu się żądania HTTP, serwer odbiera je, analizuje nagłówek i podejmuje stosowne działania. 51 17
Usługa WWW - Apache serwery wirtualne logowanie pliki własnej konfiguracji.htaccess własne strony błędów strony użytkowników negocjacja zawartości uwierzytelnianie 52 Usługa WWW httpd.conf ServerRoot "/server/apache/apache2" # Określa połoŝenie plików serwera w drzewie katalogów PidFile logs/httpd.pid # Określa połoŝenie pliku zawierającego id procesu serwera Timeout 300 # Określa w sekundach: # czas oczekiwania na odebranie Ŝądania GET # maksymalny czas pomiędzy odebraniem kolejnych pakietów # Ŝądania PUT lub POST KeepAlive On # Określa, czy naleŝy podtrzymać połączenie pomiędzy # Ŝądaniami od klienta. MaxKeepAliveRequests 500 # Określa, ile Ŝądań będzie obsłuŝonych podczas jednego # połączenia z klientem. 53 Usługa WWW httpd.conf Listen 80 Listen 800 Include conf/modules.conf # W pliku modules.conf umieszczone zostały dyrektywy # dołączające dynamicznie moduły serwera. AddType application/x-httpd-php.php # Dyrektywa AddType przypisuje podane rozszerzenie # (tu:.php) do konkretnego typu mime # (tu: Application/x-httpd-php) Action application/x-httpd-php "/php/php.exe" # Dyrektywa Action określa program który zostanie # uruchomiony w przypadku, gdy Ŝądanie będzie dotyczyło # dokumentu CGI 54 18
Usługa WWW httpd.conf User webuser Group webgroup DirectoryIndex index.html index.php index.htm # Dyrektywa ta określa, jaki dokument zostanie przesłany # do klienta, w przypadku, gdy Ŝądanie będzie dotyczyło # katalogu. Podana ścieŝka jest względna wobec Ŝądanego # katalogu AccessFileName.htaccess # Dyrektywa ta określa nazwę pliku konfiguracyjnego # odczytywanego przy kaŝdym Ŝądaniu. Pozwala to na # dynamiczną zmianę konfiguracji serwera przez kaŝdego # uŝytkownika. Zmiana zawartości lokalnego pliku # konfiguracyjnego nie wymaga ponownego uruchomienia # serwera. DefaultType text/plain # Dyrektywa określa, jaki typ mime zostanie przesłany do # klienta, w przypadku, gdy dla danego dokumentu nie # moŝna określić typu (np. plik nie ma rozszerzenia). 55 Usługa WWW httpd.conf <Files ~ "^\.ht"> Order allow,deny Deny from all </Files> # Pliki, których nazwy odpowiadają wyraŝeniu # regularnemu (czyli zaczynają się od.ht) nie będą # udostępniane klientom. ErrorDocument 401 /error/401.php ErrorDocument 403 /error/403.php ErrorDocument 404 /error/404.php ErrorDocument 500 /error/500.php # Dyrektywa pozwala na określenie dokumentów, które # zostaną wysłane do klienta w przypadku wystąpienia # błędu. 56 Usługa WWW httpd.conf NameVirtualHost 127.0.0.1 <VirtualHost 127.0.0.1> ServerName localhost DocumentRoot /var/www/html ServerAdmin webmaster@localhost </VirtualHost> <VirtualHost 127.0.0.1> ServerName ala.example.com DocumentRoot /var/www/ala ServerAdmin webmaster@ala.example.com </VirtualHost> 57 19
Usługa WWW httpd.conf GENEROWANIE PLIKU.htaccess ----------------------------------------------------------------- # htpasswd -c.htpasswd user -----------------------------------------------------------------.htaccess: AuthName "Tajne pliki" AuthType Basic AuthUserFile /var/www/html/.htpasswd Require valid-user ----------------------------------------------------------------- Zmienić w httpd.conf: AllowOverride z None na AuthConfig ----------------------------------------------------------------- Zabronienie dostępu: Order deny,allow Deny from all 58 NAT NAT (skr. od ang. Network Address Translation, tłumaczenie adresów sieciowych; czasem Native Address Translation, tłumaczenie adresów rodzimych), znane również jako maskarada sieci lub maskarada IP (od ang. network/ip masquerading), technika przesyłania ruchu sieciowego poprzez router, polegająca na zmianie źródłowych lub docelowych adresów IP, zwykle również numerów portów TCP/UDP pakietów IP podczas ich przepływu, zmieniane są także sumy kontrolne (IP oraz TCP/UDP), aby potwierdzić wprowadzone zmiany, większość systemów korzystających z NAT ma na celu umożliwienie dostępu wielu hostom w sieci prywatnej do Internetu przy wykorzystaniu pojedynczego publicznego adresu IP. 59 NAT wady: nie można na własnym komputerze uruchomić serwera dostępnego w Internecie bez zmian wymagających interwencji administratora, utrudnione korzystanie z sieci P2P i bezpośrednie wysyłanie plików. zalety: większa anonimowość, gdyż serwery, z którymi nastąpiło połączenie nie mogą zidentyfikować konkretnego hosta po samym adresie IP, możliwość dostępu do Internetu dla większej ilości komputerów niż ilość dostępnych publicznych adresów IP. w przypadku systemu operacyjnego Linux funkcje NAT definiowane są za pomocą programów iptableslub ipchains, a w przypadku FreeBSD ipfw(ip firewall), ipf(ip filter) lub pf (OpenBSD Packet Filter). 60 20
SNAT SNAT (ang. Source Network Address Translation) zmiana adresu źródłowego pakietu IP na inny, stosowana często w przypadku podłączenia sieci dysponującej adresami prywatnymi do sieci Internet router, przez który podłączono sieć, podmienia adres źródłowy prywatny na adres publiczny (najczęściej swój własny), szczególnym przypadkiem SNAT jest maskarada, czyli sytuacja, gdy router ma zmienny adres IP (np. otrzymuje go w przypadku połączenia modemowego dodzwanianego) router zmienia adres źródłowy na taki, jak adres interfejsu, przez który pakiet opuszcza router. 61 DNAT DNAT (ang. Destination Network Address Translation) to technika polegająca na zmianie adresu docelowego pakietu IP na inny, stosowana często w przypadku, gdy serwer, który ma być dostępny z Internetu ma tylko adres prywatny, router dokonuje translacji adresu docelowego pakietów IP z Internetu na adres tego serwera. 62 NAT NAT translacja tylko prywatnego adresu IP hosta, NAPT, PAT translacja prywatnego adresu IP i numeru portu. 63 21
NAT -Linux Czy właściwie zainstalowane karty sieciowe: ls/etc/sysconfig/network-scripts/ifcfg-eth* wc l Konfiguracja interfejsu eth0: cat/etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none BROADCAST=xx.xx.xx.255 # OptionalEntry HWADDR=00:50:BA:88:72:D4 # OptionalEntry IPADDR=xx.xx.xx.xx NETMASK=255.255.255.0 # Provided by the ISP NETWORK=xx.xx.xx.0 # Optional ONBOOT=yes TYPE=Ethernet USERCTL=no IPV6INIT=no PEERDNS=yes GATEWAY=xx.xx.xx.1 # Provided by the ISP 64 NAT -Linux Konfiguracja interfejsu eth1: cat/etc/sysconfig/network-scripts/ifcfg-eth1 /etc/hosts: 127.0.0.1 natlocalhost.localdomain localhost Brama: /etc/sysconfig/network: 65 NETWORKING=yes HOSTNAME=nat GATEWAY=xx.xx.xx.1 Konfiguracja DNS /etc/resolv.conf: nameserver 203.145.184.13 # Primary DNS Server provided by ISP nameserver 202.56.250.5 # Secondary DNS Server provided by ISP iptables, czyszczenie: iptables flush, iptables --tablenat--flush NAT -Linux Włączenie przekazywania pakietów IP w jądrze: echo "1" > /proc/sys/net/ipv4/ip_forward MASQUERADE dla zmiennego adresu IP i SNAT dla stałego: iptables -t nat -A POSTROUTING -s 10.0.0.2 -d 0.0.0.0/0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 10.0.0.2 -d 0.0.0.0/0 -j SNAT --to-source stały_adres_ip Dla całej sieci: iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 0.0.0.0/0 -j MASQUERADE Usługa widoczna na zewnątrz: iptables -t nat -I PREROUTING 1 --protocol tcp --destination-port 16080 -j DNAT --to-destination 10.0.0.38:80 66 22