1.17k likes | 1.39k Views
1. Wprowadzenie. Lata 92 i 93 – Linux wzbogacił się o protokół TCP/IP i środowisko graficzne (X Window), mógł zastąpić w stacjach roboczych Unixa. Wiele małych firm zajęło się rozwojem i dystrybucją Linuxa, pojawiły się grupy użytkowników
E N D
1 Wprowadzenie • Lata 92 i 93 – Linux wzbogacił się o protokół TCP/IP i środowisko graficzne (X Window), mógł zastąpić w stacjach roboczych Unixa. Wiele małych firm zajęło się rozwojem i dystrybucją Linuxa, pojawiły się grupy użytkowników • Pierwsze poważne zastosowania – jako serwery plików, poczty, baz danych ...
2 Wprowadzenie • Sprawdzone wielokrotnie w rzeczywistych warunkach, stabilne i wydajne usługi sieciowe: • telnet, ftp, tftp, ssh, http, w3cache, sql, DNS, dhcp, smtp, pop, imap, drukarek, faksów, plików, kerberos, radius, tacacs, ldap .... • kontroler domeny NT, Active Directory • routing, pasywna lub dynamiczna tablica routingu,
3 Inetd, xinetd • Każdy komputer działający w sieci TCP posiada własny, unikalny adres (adresy IP). • Program realizujący usługę sieciową po uruchomieniu staje się procesem. Aby z jego usług skorzystać, zaadresować trzeba komputer i proces w nim. • Do zaadresowania komputera służy adres IP • Do zaadresowania procesu służy numer portu
4 Inetd, xinetd • Numery portów 0 – 65535 • Porty < 1024 zarezerwowane dla uprzywilejowanych procesów • Porty > 5000 zarezerwowane dla serwerów bez przywilejów • Definicje tych zakresów w /usr/include/netinet/in.h
5 Inetd, xinetd • Aby połączyć się z usługą trzeba znać adres IP hosta i port procesu. • Standaryzacją numerów portów zajmuje się IANA (Internet Assigned Numbers Authority) • http://www.iana.org/assignments/port-numbers • Porty według IANA: • Well Known Ports 0 – 1023 • Registered Ports 1024 – 49151 • Dynamic and/or Private Ports 49152 - 65535
6 Inetd, xinetd • Dla Well Known Ports i Registered Ports IANA przydzieliła usługom standardowe porty, na przykład: • telnet 23/tcp Telnet • telnet 23/udp Telnet • sscan 3853/tcp SONY scanning protocol • sscan 3853/udp SONY scanning protocol
7 Inetd, xinetd • Zbiór /etc/servicessłuży do translacji numerów portów na nazwy i odwrotnie, jest odpowiednikiem dla portów zbioru /etc/hosts • Przykładowy fragment:ftp-data 20/tcp • ftp 21/tcp • domain 53/tcp nameserver • domain 53/udp nameserver
8 Inetd, xinetd • Proces oferujący usługi musi cały czas oczekiwać na żądanie od klienta • Jeśli żądania realizacji usługi zdarzają się rzadko, niepotrzebnie marnowane są zasoby serwera • Superdaemon inetd (xinetd) oczekuje na żądania klientów i po ich nadejściu uruchamia właściwy proces do jego obsłużenia • Użycie xinetd zmniejsza użycie zasobów serwera, ale wydłuża czas obsługi żądania • Niektóre serwery, na przykład vsftpd, mogą działać jako samodzielny daemon lub przez xinetd
9 Inetd, xinetd • Procesy nasłuchujące na portach wyświetlić możemy poleceniem:netstat -alpn • Z opcją 'n' numery portów zostaną przed wyświetleniem zamienione na odpowiadające im nazwy (ze zbioru /etc/services): • tcp 0 0 *:ssh *:* LISTEN 635/sshd • tcp 0 0 *:telnet *:* LISTEN 647/xinetd
10 Inetd, xinetd • Inetd jest starszą, prostszą wersją xinetd. • Xinetd oferuje większe bezpieczeństwo systemu • Konfiguracja xinetd w pliku /etc/xinetd.conf: • defaults • { • instances = 60 • log_type = SYSLOG authpriv • log_on_success = HOST PID • log_on_failure = HOST • cps = 25 30 • } • includedir /etc/xinetd.d • cps – connections per second (max/timeout)
11 Inetd, xinetd • Kartoteka /etc/xinetd.d zawiera zbiory konfiguracyjne poszczególnych programów, np. /etc/xinetd.d/telnet: • service telnet • { • disable = no • flags = REUSE • socket_type = stream • wait = no • user = root • server = /usr/sbin/in.telnetd • log_on_failure += USERID • }
12 Inetd, xinetd Format wpisów w zbiorach konfiguracyjnych: atrybut operator_przypisania wartosc, wartosc .. Operatory = zwykłe przypisanie += dodaj wartość do istniejącej -= usuń wartość z listy istniejących
13 Inetd, xinetd Ważniejsze atrybuty: disable - “yes” lub “no” czy usługa ma być aktywna user (group) – z jakim UID (GID) uruchomić proces instances – liczba równocześnie aktywnych serwerów server – jaki program uruchomić do obsługi server_args – parametry przekazywane do serwera no_access – z jakich adresów IP usługa niedostępna bind lub interface – na jakich interfejsach usługa ma być dostępna access_times hh:mm-hh:mm – w jakich godzinach usługa dostępna
14 Inetd, xinetd • Instalacja xinetd – pakiet rpm xinetd • uruchamianie/zatrzymywanie: • /etc/initd.d/xinetd start (stop) • sygnały: • SIGHUP – odczytuje konfigurację, zatrzymuje/uruchamia zgodnie z nią serwery • SIGQUIT – zatrzymuje xinetd • SIGTERM – zatrzymuje serwery i kończy działanie • SIGUSR1 – dump wewnętrznego stanu do /var/run/xinetd.dump
15 Serwer DNS • Komputery używają adresów IP • Ludziom łatwiej zapamiętać nazwy, niż adresy • Konieczna zamiana adresów IP na nazwy i odwrotnie • Dawniej, kiedy sieci były małe, wystarczył prosty zbiór zawierający pary adres – nazwa (/etc/hosts) • Wraz ze wzrostem sieci konieczne stało się zbudowanie rozproszonego systemu zamiany nazw, powstał DNS (Domain Name System) • Pierwotnie dość prosty, obecnie opisywany przez 114 RFC, umożliwia szyfrowanie, dynamiczną rejestrację, delegację części opisu domeny odwrotnej, znaki narodowe w nazwach ...
16 Serwer DNS
17 Serwer DNS Rejestr domen narodowych prowadzi IANA ... .es – Spain .et – Ethiopia .eu – European Union .fi – Finland .fj – Fiji .... .to – Tonga .tp – East Timor .tr – Turkey .tt – Trinidad and Tobago .tv – Tuvalu .tw – Taiwan ....
18 Serwer DNS Rejestr domen Top-level prowadzi IANA (obecnie 20 domen): # The .aero domain is reserved for members of the air-transport industry and is sponsored by Société Internationale de Télécommunications Aéronautiques (SITA). # The .asia domain is restricted to the Pan-Asia and Asia Pacific community and is operated by DotAsia Organisation. # The .biz domain is restricted to businesses and is operated by NeuLevel, Inc. # The .cat domain is reserved for the Catalan linguistic and cultural community and is sponsored by Fundació puntCat # The .com domain is operated by VeriSign Global Registry Services. ........
19 Serwer DNS
20 Serwer DNS
21 Serwer DNS • Każda domena musi mieć jeden (tylko jeden) nameserwer główny (primary) i co najmniej jeden zapasowy (secondary) • Oryginalny opis domeny jest w bazie primary dns • Secondary dns pobierają kopie opisu strefy z primary dns • Forwarding dns – o strefy, których nie zna pyta inny nameserwer (bo np. nie ma połączenia z internetem) • Caching dns – nie jest primary ani secondary dla żadnej strefy, odpowiada tym, co ma w cache
22 Serwer DNS • Najpopularniejszy, nie tylko w Linuxie, Berkeley Internet Name Domain BIND. • Powstał w University of California at Berkeley, do wersji 4.8.3 rozwijany w tym uniwersytecie, następnie przejęta przez DEC • Obecnie rozwijany przez ISC (Internet Systems Consortium), niekomercyjną organizację • Wersja 4 nie jest obecnie rozwijana ani zalecana, została zastąpiona wersją 8 (najnowsza – 8.4.7. EOL 27.08.2007) • Równolegle rozwijana jest wersja 9 (najnowsza - 9.5.0)
23 Serwer DNS • BIND to: • Serwer DNS – named • Biblioteka DNS Resolver • Narzędzia do zarządzania i testowania DNS • bind-chroot
24 Serwer DNS Konfiguracja bind w /etc/named.conf Opisuje strefy, które obsługuje, reguły logowania, serwery dns z którymi wymienia dane o strefach, reguły dostępu, klucze, lokalizację zbiorów z danymi itp.: options { listen-on port 53 { 127.0.0.1; }; listen-on port 53 { 192.168.0.100; }; directory "/var/named"; notify no; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; // allow-query { localhost; }; }; logging {};
25 Serwer DNS key "rndc-key" { algorithm hmac-md5; secret "qQDqBoBMX94AjIdCo/B5iA=="; }; controls { inet 127.0.0.1 port 953 allow { 172.24.1.40; } keys { "rndc-key"; }; allow { 127.0.0.1; } keys { "rndc-key"; }; };
26 Serwer DNS zone "." { type hint; file "named.ca"; }; zone "0.0.127.in-addr.arpa"{ type master; file "named.local"; };
27 Serwer DNS zone "0.168.192.in-addr.arpa"{ type master; file "P/168.192.rev"; }; zone "24.172.in-addr.arpa"{ type master; file "P/24.172.rev"; }; zone "huta.com.pl"{ type slave; file "S/huta"; masters{ 194.204.159.1; }; };
28 Serwer DNS Zbiory z opisem stref zawierają rekordy RR (resource record) w postaci: <name> [<ttl>] [<class>] <type> <data> Poszczególne pola oddzielone przez spacje lub <tab> name – nazwa domeny. Jeśli pusta, to taka, jak w poprzednim rekordzie ttl – Time To Live. Jak długo inne serwery mogą odpowiadać rekordem z cache. Jeśli puste, to ttl z SOA class – IN – internet (DNS był projektowany jako niezależny od protokołu) type – typ rekordu RR data – dane zależne od typu RR
29 Serwer DNS Linie dłuższe niż jeden wiersz umieszczamy w () * - wildcard character ; - początek komentarza @- domyślna domena
30 Serwer DNS SOA (Start Of Authority) <name> [<ttl>] [<class>] SOA <origin> <person> ( <serial> <refresh> <retry> <expire> <minimum> ) @ IN SOA dns.pl. hostmaster.dns.pl.( 2005022502 ; serial 10800 ; refresh 3600 ; retry 3600000 ; expire 1800 ; default_ttl )
31 Serwer DNS class – IN- internet (HS -hesiod, CH – Chaos – historyczne protokoły MIT) origin - Primary nameserver domeny. Zakończony kropką. person – Adres e-mail administratora, znak @ zastąpiony przez kropkę serial – numer generacji zbioru refresh – czas po jakim secondary sprawdzi aktualność baz retry – czas co jaki secondary ponawia próby połączenia z primary expire - czas ważności danych w cache secondary minimum -domyślne TTL dla BIND 4 i 8, czas przechowywania w pamięci negatywnej odpowiedziNAME ERROR = NXDOMAIN dla BIND 9
32 Serwer DNS NS (Name Server) <domain> [<ttl>] [<class>] NS <server> COM. NS SRI-NIC.ARPA. NS C.ISI.EDU. Kolejność wpisania rekordów NS nie ma znaczenia. RFC1033 mówi, że nie ma gwarancji zachowania kolejności RR. Serwery primary i secondary będą równoprawne.
33 Serwer DNS A (Address) <host> [<ttl>] [<class>] A <address> SRI-NIC.ARPA. A 10.0.0.51 Dla każdego adresu powinien istnieć jeden adres A
34 Serwer DNS CNAME ( Canonical Name) <nickname> [<ttl>] [<class>] CNAME <host> NIC.ARPA. CNAME SRI-NIC.ARPA.
35 Serwer DNS HINFO (Host Info) <host> [<ttl>] [<class>] HINFO <hardw> <softw> SRI-NIC.ARPA. HINFO DEC-2060 TOPS20 UCBARPA.Berkeley.EDU. HINFO VAX-11/780 UNIX
36 Serwer DNS MX (Mail Exchanger) <name> [<ttl>] [<class>] MX <preference> <host> Preference to priorytet MX, 0 – najwyższy BAZ.FOO.COM. MX 10 PO1.FOO.COM. MX 20 PO2.FOO.COM. MX 30 PO3.FOO.COM.
37 Serwer DNS PTR <special-name> [<ttl>] [<class>] PTR <name> Używane głównie w bazach opisujących domenę in-addr.arpa. Powinny wskazywać oficjalne nazwy, a nie aliasy 51.0.0.10.IN-ADDR.ARPA. PTR SRI-NIC.ARPA. 73.0.0.26.IN-ADDR.ARPA. PTR SRI-NIC.ARPA.
38 Serwer DNS rndc – program do zarządzania serwerem Komunikuje się przez tcp, wysyłając polecenia podpisane elektronicznie (HMAC-MD5) Klucz generowany programem rndc-confgen (dawniej rndc-conf): rndc-confgen -a tworzy zbiór /etc/rndc.key. Klucz można przepisać do /etc/named/conf i /etc/rndc.conf
39 Serwer DNS Polecenia rndc: reload – przeładuj zbiory konfiguracyjne i strefy reload strefa – przeładuj strefę stats – zapisz statystyki do zbioru querylog – włącz/wyłącz logowanie pytań dumpdb – zapisz zawartość cache do zbioru named_dump.db trace – podnieś o jeden poziom debugging notrace – wyłącz debugging flush – wyczyść cache status – wyświetl status serwera
40 Serwer DNS Instalacja bind – pakiety rpm: bind – serwer bind-libs – biblioteki bind-utils – narzędzia: host, nslookup, dig – do odpytywania dns nsupdate – do dynamicznego dopisywania RR bind-chroot – chroot dla bind bind-sdb – zewnętrzna baza danych (LDAP, PostgreSQL itp.) Uruchamianie - /etc/rc.d/init.d/named start
41 Serwer DHCP • DHCP - (Dynamic Host Configuration Protocol) – protokół dostarczania parametrów konfiguracyjnych komputerom w sieci IP • Trzy sposoby przydzielania adresów: • automatyczny – przydziela stały adres IP • dynamiczny – przydziela adres na skończony okres czasu • ręczny – przydziela adres zdefiniowany przez administratora • Przed przydzieleniem adresu serwer sprawdza, czy nie jest użyty, wysyła ping
42 Serwer DHCP DHCPDISCOVER – broadcast (MAC) klienta, wyszukanie serwerów DHCPOFFER – odpowiedź serwera z propozycją adresu – unicast, jeśli to możliwe, albo broadcast (adres broadcast klienta lub 255.255.255.255) DHCPREQUEST – broadcast klienta (zawiera adres serwera, którego oferta została wybrana) DHCPACK (DHCPNAK) – potwierdzenie (brak potwierdzenia) przez serwer przydzielenia adresu. DHCPRELEASE – zwolnienie adresu przez klienta
43 Serwer DHCP Typowa wymiana ramek: DHCPDISCOVER from 00:0b:6a:1d:bc:0b via eth0 DHCPOFFER on 172.24.3.213 to 00:0b:6a:1d:bc:0b via eth0 DHCPREQUEST for 172.24.3.213 (192.168.0.40) from 00:0b:6a:1d:bc:0b via eth0 DHCPACK on 172.24.3.213 to 00:0b:6a:1d:bc:0b via eth0
44 Serwer DHCP • ISP DHCPD • Konfiguracja w /etc/dhcpd.conf • Zmiany w zbiorze konfiguracyjnym wymagają zatrzymania i uruchomienia serwera • Przydzielone adresy w /var/lib/dhcp/dhcpd.leases • Nowe przydziały dopisywane są na końcu dhcpd.leases • Okresowo dhcpd tworzy nowy zbiór dhcpd.leases z zawartości cache, zmieniając nazwę starego na dhcpd.leases~
45 Serwer DHCP authoritative; ddns-update-style none; shared-network akuku { subnet 172.24.0.0 netmask 255.255.0.0 { default-lease-time 72000; max-lease-time 144000; option subnet-mask 255.255.0.0; option domain-name-servers 172.30.0.200; option domain-name-servers 172.24.1.40; option routers 172.24.1.250; option broadcast-address 172.24.255.255; range 172.24.2.1 172.24.2.254; option domain-name "akuku.org"; } }
46 Serwer DHCP group { use-host-decl-names on; host pc001 { hardware ethernet 0:b:6a:35:6f:79; fixed-address 172.24.3.1; } host pc002 { hardware ethernet 0:b:6a:4b:a8:98; fixed-address 172.24.3.2; option routers 172.24.1.249; } } use-host-decl-names on – przypisz użytkownikowi nazwę hosta, równoważne: option host-name "pc002";
47 Serwer DHCP W dhcpd.leases zapisywane są informacje w formie: lease 172.24.2.250 { starts 3 2004/06/30 11:24:39; ends 4 2004/07/01 07:24:39; tstp 4 2004/07/01 07:24:39; binding state free; hardware ethernet 00:04:e2:23:7b:8d; uid "\001\000\004\342#{\215"; client-hostname "kadry"; } tstp – czas wygaśnięcia dzierżawy wysłany do klienta uid – opcjonalny identyfikator wysłany przez klienta – 001 to ethernet, dalej adres MAC
48 Serwer Telnet • Implementuje protokół TELNET opisany w 30 RFC, podstawowe - RFC854 • Korzysta z protokołu TCP, domyślny port 23 • Architektura klient-serwer • Klient i serwer mogą negocjować opcje połączenia • Dla serwera klient jest wirtualnym terminalem sieciowym (Network Virtual Terminal, NVT) posiadającym klawiaturę i ekran. Rodzaj terminala jest nieistotny • Serwer telnet każdemu połączeniu przydziela pseudoterminal /dev/pts/n (urządzenia te są dynamicznie tworzone i usuwane) i uruchamia proces login, przekazując mu komunikację z NVT
49 Serwer Telnet • W Linuxie serwer telnet uruchamiany jest przez xinetd, /usr/sbin/in.telnetd • Komunikat powitalny w /etc/issue.net • Kontrola dostępu poprzez tcpd z konfiguracją w /etc/hosts.allow,/etc/hosts.deny i xinetd z konfiguracją w /etc/xinetd.d/telnet • Może obsługiwać autentyfikację, choć jest to rzadko używane
50 Serwer FTP • Obsługuje protokół FTP (File Transport Protocol) opisany w RFC959 i siedmiu innych • Przeznaczony do przesyłania plików pomiędzy komputerami • Połączenie sterujące (control connection) i połączenie do przesyłania danych (data connection) • Control connection służy do przesyłania poleceń, wykorzystuje telnet • Korzysta z protokołu TCP, control connection z portu 21, data connection z portu 20 • Data connection otwierane jest przez serwer do portu 20 klienta.