Wprowadzenie

117
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 ...

description

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 - PowerPoint PPT Presentation

Transcript of Wprowadzenie

Page 1: Wprowadzenie

1Wprowadzenie

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 ...

Page 2: Wprowadzenie

2Wprowadzenie

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,

Page 3: Wprowadzenie

3Inetd, 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 IPDo zaadresowania procesu służy numer portu

Page 4: Wprowadzenie

4Inetd, xinetd

Numery portów 0 – 65535Porty < 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

Page 5: Wprowadzenie

5Inetd, xinetdAby 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-numbersPorty według IANA:Well Known Ports 0 – 1023Registered Ports 1024 – 49151Dynamic and/or Private Ports 49152 - 65535

Page 6: Wprowadzenie

6Inetd, 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

Page 7: Wprowadzenie

7Inetd, xinetd

Zbiór /etc/services sł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

Page 8: Wprowadzenie

8Inetd, xinetdProces 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

Page 9: Wprowadzenie

9Inetd, 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/sshdtcp 0 0 *:telnet *:* LISTEN 647/xinetd

Page 10: Wprowadzenie

10Inetd, xinetdInetd jest starszą, prostszą wersją xinetd.Xinetd oferuje większe bezpieczeństwo systemuKonfiguracja 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.dcps – connections per second (max/timeout)

Page 11: Wprowadzenie

11Inetd, xinetdKartoteka /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}

Page 12: Wprowadzenie

12Inetd, xinetdFormat 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

Page 13: Wprowadzenie

13Inetd, xinetd

Ważniejsze atrybuty:disable - “yes” lub “no” czy usługa ma być aktywnauser (group) – z jakim UID (GID) uruchomić procesinstances – liczba równocześnie aktywnych serwerówserver – jaki program uruchomić do obsługiserver_args – parametry przekazywane do serwerano_access – z jakich adresów IP usługa niedostępnabind lub interface – na jakich interfejsach usługa ma być dostępnaaccess_times hh:mm-hh:mm – w jakich godzinach usługa dostępna

Page 14: Wprowadzenie

14Inetd, xinetdInstalacja xinetd – pakiet rpm xinetduruchamianie/zatrzymywanie: /etc/initd.d/xinetd start (stop)sygnały:SIGHUP – odczytuje konfigurację, zatrzymuje/uruchamia zgodnie z nią serwerySIGQUIT – zatrzymuje xinetdSIGTERM – zatrzymuje serwery i kończy działanieSIGUSR1 – dump wewnętrznego stanu do /var/run/xinetd.dump

Page 15: Wprowadzenie

15Serwer DNSKomputery używają adresów IPLudziom łatwiej zapamiętać nazwy, niż adresyKonieczna zamiana adresów IP na nazwy i odwrotnieDawniej, 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 ...

Page 16: Wprowadzenie

16Serwer DNS

Page 17: Wprowadzenie

17Serwer 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....

Page 18: Wprowadzenie

18Serwer 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.........

Page 19: Wprowadzenie

19Serwer DNS

Page 20: Wprowadzenie

20Serwer DNS

Page 21: Wprowadzenie

21Serwer 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 dnsSecondary dns pobierają kopie opisu strefy z primary dnsForwarding 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

Page 22: Wprowadzenie

22Serwer DNSNajpopularniejszy, 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)

Page 23: Wprowadzenie

23Serwer DNS

BIND to:

Serwer DNS – namedBiblioteka DNS ResolverNarzędzia do zarządzania i testowania DNSbind-chroot

Page 24: Wprowadzenie

24Serwer DNS

Konfiguracja bind w /etc/named.confOpisuje 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 {};

Page 25: Wprowadzenie

25Serwer 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"; }; };

Page 26: Wprowadzenie

26Serwer DNS

zone "." { type hint; file "named.ca";};zone "0.0.127.in-addr.arpa"{ type master; file "named.local";};

Page 27: Wprowadzenie

27Serwer DNSzone "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; }; };

Page 28: Wprowadzenie

28Serwer DNSZbiory 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 rekordziettl – Time To Live. Jak długo inne serwery mogą odpowiadać rekordem z cache. Jeśli puste, to ttl z SOAclass – IN – internet (DNS był projektowany jako niezależny od protokołu)type – typ rekordu RRdata – dane zależne od typu RR

Page 29: Wprowadzenie

29Serwer DNS

Linie dłuższe niż jeden wiersz umieszczamy w ()* - wildcard character; - początek komentarza@- domyślna domena

Page 30: Wprowadzenie

30Serwer DNSSOA (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 )

Page 31: Wprowadzenie

31Serwer DNSclass – 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 zbiorurefresh – czas po jakim secondary sprawdzi aktualność bazretry – czas co jaki secondary ponawia próby połączenia z

primaryexpire - czas ważności danych w cache secondaryminimum -domyślne TTL dla BIND 4 i 8, czas

przechowywania w pamięci negatywnej odpowiedzi NAME ERROR = NXDOMAIN dla BIND 9

Page 32: Wprowadzenie

32Serwer DNSNS (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.

Page 33: Wprowadzenie

33Serwer DNSA (Address)

<host> [<ttl>] [<class>] A <address>

SRI-NIC.ARPA. A 10.0.0.51

Dla każdego adresu powinien istnieć jeden adres A

Page 34: Wprowadzenie

34Serwer DNS

CNAME ( Canonical Name)

<nickname> [<ttl>] [<class>] CNAME <host>

NIC.ARPA. CNAME SRI-NIC.ARPA.

Page 35: Wprowadzenie

35Serwer DNS

HINFO (Host Info)

<host> [<ttl>] [<class>] HINFO <hardw> <softw>

SRI-NIC.ARPA. HINFO DEC-2060 TOPS20UCBARPA.Berkeley.EDU. HINFO VAX-11/780 UNIX

Page 36: Wprowadzenie

36Serwer 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.

Page 37: Wprowadzenie

37Serwer 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.

Page 38: Wprowadzenie

38Serwer 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

Page 39: Wprowadzenie

39Serwer DNS

Polecenia rndc:reload – przeładuj zbiory konfiguracyjne i strefyreload strefa – przeładuj strefęstats – zapisz statystyki do zbioruquerylog – włącz/wyłącz logowanie pytańdumpdb – zapisz zawartość cache do zbioru named_dump.dbtrace – podnieś o jeden poziom debuggingnotrace – wyłącz debuggingflush – wyczyść cachestatus – wyświetl status serwera

Page 40: Wprowadzenie

40Serwer DNSInstalacja bind – pakiety rpm:

bind – serwerbind-libs – bibliotekibind-utils – narzędzia: host, nslookup, dig – do odpytywania dns nsupdate – do dynamicznego dopisywania RRbind-chroot – chroot dla bindbind-sdb – zewnętrzna baza danych (LDAP, PostgreSQL itp.)Uruchamianie - /etc/rc.d/init.d/named start

Page 41: Wprowadzenie

41Serwer 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 IPdynamiczny – przydziela adres na skończony okres czasuręczny – przydziela adres zdefiniowany przez administratoraPrzed przydzieleniem adresu serwer sprawdza, czy nie jest użyty, wysyła ping

Page 42: Wprowadzenie

42Serwer 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

Page 43: Wprowadzenie

43Serwer 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

Page 44: Wprowadzenie

44Serwer DHCP

ISP DHCPD

Konfiguracja w /etc/dhcpd.confZmiany w zbiorze konfiguracyjnym wymagają zatrzymania i uruchomienia serweraPrzydzielone adresy w /var/lib/dhcp/dhcpd.leasesNowe przydziały dopisywane są na końcu dhcpd.leasesOkresowo dhcpd tworzy nowy zbiór dhcpd.leases z zawartości cache, zmieniając nazwę starego na dhcpd.leases~

Page 45: Wprowadzenie

45Serwer DHCPauthoritative;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"; } }

Page 46: Wprowadzenie

46Serwer DHCPgroup { 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";

Page 47: Wprowadzenie

47Serwer DHCPW 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 klientauid – opcjonalny identyfikator wysłany przez klienta – 001 to ethernet, dalej adres MAC

Page 48: Wprowadzenie

48Serwer 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

Page 49: Wprowadzenie

49Serwer 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

Page 50: Wprowadzenie

50Serwer 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.

Page 51: Wprowadzenie

51Serwer FTP W linuxie serwer ftp to vsftpd Instalowany z pakietu vsftpd Może być uruchamiany jako samodzielny daemon (domyślnie)

albo z xinetd Konfiguracja w zbiorze /etc/vsftpd/vsftpd.conf W zbiorze /etc/vsftpd/ftpusers lista użytkowników,

którym nie wolno korzystać z ftp (używane przez pam) W zbiorze /etc/vsftpd/user_list lista użytkowników,

którym wolno/nie wolno korzystać z ftp, zależnie od ustawienia userlist_deny w vsftpd.conf

Log w /var/log/xferlog lub vsftpd.log (wybór w vsftpd.conf). Można przełączyć na syslog

Page 52: Wprowadzenie

52Serwer FTP Przykładowy vsftpd.conf:anonymous_enable=YESlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YES

pam_service_name=vsftpduserlist_enable=YESlisten=YEStcp_wrappers=YES

Page 53: Wprowadzenie

53Serwer TFTP

TFTP – Trivial File Transfer Protocol, RFC1350 Używany do zdalnego bootowania, zapisywania

konfiguracji Nie wymaga autentyfikacji Korzysta z UDP

Page 54: Wprowadzenie

54Serwer TFTP Instalowany z pakietu rpm tftp-server Uruchamiany z xinetd (/etc/xinetd.d/tftp) lub jako

samodzielny serwer: in.tftpd -l Domyślnie pozwala czytać tylko zbiory z prawem odczytu dla

wszystkich. Opcja -p pozwala na odczyt zbiorów z prawem do odczytu dla UID z jakim działa serwer

Domyślnie pozwala pisać do istniejących zbiorów z prawem zapisu dla wszystkich. Prawo tworzenia nowych zbiorów – opcja -c

Powinien działać z UID użytkownika o niskich przywilejach (domyślnie 'nobody”. UID można zmienić w /etc/xinetd.d/tftp lub opcją -u

Page 55: Wprowadzenie

55Serwer SSH Daemon sshd i klient ssh zapewniają szyfrowane rlogin

i rsh. Uruchamiany z /etc/rc.d/init.d/sshd Może być uruchamiany z xinetd, ale przy każdym

połączeniu będzie opóźnienie spowodowane generowaniem klucza

Dla każdego połączenia uruchamia nowy proces sshd, który obsługuje wymianę kluczy, szyfrowanie, autentyfikację, wymianę danych i wykonywanie poleceń

Obsługuje SSH v1 i SSH v2.

Page 56: Wprowadzenie

56Serwer SSH

Instalowany z pakietów rpm:openssh – protokół sshopenssh-server – serweropenssh-clients – programy klienckie – scp, slogin, ssh,

sftp Konfiguracja – opcje przy uruchamianiu (mają wyższy

priorytet), lub zbiór /etc/ssh/sshd_config Konfiguracja klienta to opcje przy uruchomieniu, zbiór $HOME/ssh/config i /etc/ssh/ssh_config

Domyślnie słucha na porcie 22

Page 57: Wprowadzenie

57Serwer SSH

Ważniejsze opcje przy uruchomieniu-d – włącz debugging (kolejne d – podnieś poziom,

maksymalnie 3)-e – wyświetlaj na ekran zamiast do log-i – uruchamiaj się z xinetd-p – słuchaj na innym porcie niż 22-D – działaj w foreground

Page 58: Wprowadzenie

58Serwer SMTP sendmailSendmail jest serwerem poczty protokołu smtp. Odpowiada za przyjmowanie i wysyłanie poczty (MTA – Mail Transfer Agent)

Pierwsza wersja powstała w 1997 roku (BSD 4.1, program delivermail)

Nie służy do tworzenia wiadomości, służą do tego MUA (Mail User Agent) (mail, pine)

Odebrane przesyłki dostarcza do lokalnych skrzynek pocztowych. Dostarczanie poczty do programów klienckich w innych komputerach zapewniają daemony pop/imap (dovecot)

Page 59: Wprowadzenie

59Serwer SMTP sendmailInstalacja – rpm:sendmailsendmail-cfsendmail-docDodatkowo – m4 (macro preprocesor) Obecnie wersja 8.13.4Zbiory konfiguracyjne, dokumentacja/etc/aliases/etc/mail//usr/share/sendmail-cf/usr/share/doc/sendmail

Page 60: Wprowadzenie

60Serwer SMTP sendmail

Właściwy daemon słucha na porcie 25.Poczta do wysłania umieszczana w kolejce w /var/spool/mqueue

Odbierana poczta dostarczana do zbiorów w /var/spool/mail

Zbiór konfiguracyjny /etc/mail/sendmail.cfZbiór sendmail.cf tworzony ze zbioru sendmail.mc poleceniem make -C /etc/mail

Page 61: Wprowadzenie

61Serwer SMTP sendmail

Program MUA, np. pine aby wysłać pocztę uruchamia /usr/sbin/sendmail

Tak uruchomiony sendmail działa jako użytkownik:grupa smmsp:smmsp

Odbiera pocztę, umieszcza ją w kolejce w kartotece /var/spool/clientmqueue i kontaktuje się z serwerem słuchającym na porcie 25 localhost

Używa konfiguracji w /etc/mail/submit.cf, tworzonej na podstawie /etc/mail/submit.mc

Page 62: Wprowadzenie

62Serwer SMTP sendmail

sendmail.mcKomentarze zaczynające się od # zostaną przeniesione przez m4 do sendmail.cf jako komentarze.

Komentarze które mają pozostać tylko w sendmail.mc:divert(-1) komentarz divert(0) pomija blok tekstu dnl komentarz - pomija tekst do znaku nowej linii włącznie

Page 63: Wprowadzenie

63Serwer SMTP sendmailWzorcowy sendmail.mc w dystrybucjach RedHat daje po

kompilacji typową poprawną konfigurację.Jeśli wymiana poczty z internetem wymaga serwera

pośredniczącego, należy odkomentować i uzupełnić:dnl define(`SMART_HOST',`smtp.your.provider')należy uzupełnić interfejsy, na których sendmail ma słuchać:DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

Zabezpieczenie przed spamem:FEATURE(`dnsbl')dnl – sprawdzaj nadawcę w Realtime

Blackhole Listdnl FEATURE(`accept_unresolvable_domains')dnl

Page 64: Wprowadzenie

64Serwer SMTP sendmailMasquerading:

MASQUERADE_AS(`firma.com.pl')dnl

Nie tylko nagłówek maila, ale też skąd wysłano:FEATURE(masquerade_envelope)dnl

Masquerading domen podrzędnych:FEATURE(masquerade_entire_domain)dnl

Które domeny podlegają masquerading:MASQUERADE_DOMAIN(biuro.lokalnie)dnl

Page 65: Wprowadzenie

65Serwer SMTP sendmail

Relaying:FEATURE(access_db) zezwala lub zabrania dostępu z wybranych domen (hostów) zdefiniowanych w /etc/mail/access:

From:cyberspammer.com ERROR:"550 We don't accept mail from spammers"

From:okay.cyberspammer.com OKConnect:sendmail.org RELAYTo:sendmail.org RELAYConnect:128.32 RELAY

Czytana jest access.db, trzeba ją utworzyć poleceniem make all

Page 66: Wprowadzenie

66procmail

Po nadejściu maila uruchamiany jest procmailCzyta list z stdin aż do EOF, oddziela nagłówek od treści i szuka zbioru $HOME/.procmailrc

Jeśli go nie znajdzie, przesyła list do standardowej skrzynki, jeśli znajdzie, wykonuje reguły w nim zawarte

Przed wykonaniem reguł w $HOME/.procmailrc wykonuje reguły z /etc/procmailrc

/etc/procmailrc jest wykonywane z prawami root!

Page 67: Wprowadzenie

67Procmail - .procmailrc

Dwa rodzaje reguł, wykonywanych sekwencyjnie:reguły dostarczania poczty – po ich napotkaniu wykonywanie .procmailrc się kończy

reguły nie związane z dostarczaniem poczty – są wykonywane i wykonywanie .procmailrc jest kontynuowane

Akceptuje zmienne środowiskowe, można tworzyć własne

Page 68: Wprowadzenie

68Procmail - .procmailrc

Komentarze – linie zaczynające się od #reguły – linie zaczynające się od : , mają format:

:0 [flagi] <zero lub więcej warunków, każdy w osobnej linii><jedna linia polecenia>

Page 69: Wprowadzenie

69Procmail - .procmailrc

Flagi:H – przeszukaj nagłówekB- przeszukaj treśćD – rozróżniaj duże i małe litery (domyślnie nie są rozróżniane)

c – utwórz kopię (carbon copy), w regułach dostarczania poczty

Page 70: Wprowadzenie

70Procmail - .procmailrc

Linia polecenia! forward na wskazany adres| uruchom wskazany programlinie ujęte w { } (po nawiasie co najmniej jedna spacja, tabulacja lub nowa linia) odnoszą się do poprzedniego warunku

Page 71: Wprowadzenie

71Procmail - .procmailrc

Prześlij listy od marka dotyczące kompilatorów do piotra, zachowaj kopię w folderze kompilatory:

:0 * ^From.*piotr * ^Subject:.*kompilatory { :0 c [email protected]

:0 kompilatory }

Page 72: Wprowadzenie

72Procmail - .procmailrc

# wyslij kopie na SMS:0 c* ? test -f ${MYEMAIL} && \ (${FORMAIL} -zxTo: -zxCc: |\ fgrep -i -f ${MYEMAIL})| formail -k -X From: -X Subject: | /home/kempny/sms/mail2s

formail – program do obróbki maili. -k zachowaj treść, -X wytnij wskazane pole

Page 73: Wprowadzenie

73Procmail - .procmailrc#! /bin/shDIR=/home/kempny/sms/cat - >${DIR}"mail.tmp"

if (grep "Lotto" ${DIR}"mail.tmp") then

(sleep 3; cat ${DIR}"mail.tmp" | ${DIR}"lo2sms.duzy") | telnet localhost 25 >/

dev/null 2>&1 elif (grep From: ${DIR}mail.tmp |grep "\.pl") then ${DIR}"mail2sms" fielse if (grep From: ${DIR}mail.tmp |grep "\.se") then ${DIR}"mail2sms" fifirm ${DIR}"mail.tmp"

Page 74: Wprowadzenie

74Procmail - .procmailrc

man procmailman procmailrcman procmailex

Page 75: Wprowadzenie

75Serwer samba

Serwer plików i drukarek w sieciach Microsoft

Instalacja – rpm:samba-common – wspólne plikisamba – serwersamba-client – klient samby

Dokumentacja – man i /usr/share/doc/sambaxxx

Page 76: Wprowadzenie

76Serwer samba

smbd – serwer plików i drukarek, konfiguracja w /etc/samba/smb.conf, TCP, port 139

nmbd – serwer nazw NetBios i browser

testparm i testprns – programy do sprawdzania poprawności smb.conf. Testparm sprawdza poprawność smb.conf, testprns sprawdza w /etc/printcap istnienie drukarki.

Page 77: Wprowadzenie

77Serwer sambasmb.conf3 sekcje, [global], [printers] i [home]workgroup = projekt WSJhosts allow = 172.24.3. 192.168.0. 127.security = user (model workgroup, dla domeny – server)password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name]password level = 8 (Ile ważnych znaków w haśle)username level = 8encrypt passwords = yes (czy negocjować szyfrowane haslo – W98 i WNT SP3 używają tylko szyfrowanego)

Page 78: Wprowadzenie

78Serwer samba

smb.confsmb passwd file = /etc/samba/smbpasswdunix password sync = Yespasswd program = /usr/bin/passwd %upasswd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all*aut hentication*tokens*updated*successfully*

Page 79: Wprowadzenie

79Serwer samba

smb.conf

username map = /etc/samba/smbusers (mapowanie nazw użytkowników samby i unix)interfaces = 192.168.12.2/24 192.168.13.2/24 (jeśli więcej niż jeden interfejs sieciowy)

Page 80: Wprowadzenie

80Serwer samba

smb.confSamba może być master browserem w sieci:; local master = no (w lokalnej sieci); os level = 33 (priorytet w elekcji master browsera); domain master = yes (czy ma być Domain Master Browser, obsługiwać dane z różnych podsieci) ; preferred master = yes (czy przy starcie wymuszać elekcję)

Page 81: Wprowadzenie

81Serwer samba

smb.conf;wins support = yes (czy nmbd ma być serwerem wins);wins server = w.x.y.z (nmbd ma być klientem wins)

Page 82: Wprowadzenie

82Serwer samba

smb.conf[homes] comment = Home Directories browseable = no (niewidoczne w otoczeniu sieciowym) writable = yes valid users = %S create mode = 0664 directory mode = 0775 map to guest = bad user

Page 83: Wprowadzenie

83Serwer samba

smb.conf

create mask = 0644force create mode = 0644directory mask = 0755force directory mode = 0755

create (directory) mask – bitowe AND z prawami z dos, potem bitowe OR z force create (directory) mode

Page 84: Wprowadzenie

84Serwer samba

smb.conf

[WWSJ] comment = Wspolne zbiory projektu WSJ path = /home/wsj browseable = yes public = no (synonim guest ok) writable = yes write list = ania kasia tomek valid users = ania kasia tomek marcin create mask = 0777 directory mask = 0777

Page 85: Wprowadzenie

85Serwer samba

Samba 3.x trzyma dane użytkowników w LDAP lub tdbsam, starsze w /etc/samba/smbpasswd.

Kolejne pola oddzielone znakiem ':' nazwa użytkownikaUIDLANMAN hash NT hashflagi kontadata ostatniej zmiany

Page 86: Wprowadzenie

86Serwer sambaProgram do zarządzania użytkownikami – smbpasswd-a - dodaj użytkownika-x - usuń użytkownika-d - zablokuj (-e – odblokuj użytkownika)-m - dodaj konto maszynyBez opcji – zmienia hasło użytkownika

Użytkownicy w smbpasswd muszą mieć swoich odpowiedników w systemie unix. Mapowanie w zbiorze /etc/samba/smbusers, np:nobody = guest pcguest smbguest

Page 87: Wprowadzenie

87Serwer sambapdbedit – zarządzanie bazą użytkownikówModularna konstrukcja, obsługuje smbpasswd, ldap, nis+ and tdbL – wyświetl użytkownikówv- wyświetl więcej informacjia – dodaj użytkownikax – usuń użytkownika

Page 88: Wprowadzenie

88Serwer samba

/usr/share/doc/samba

Page 89: Wprowadzenie

89Serwer WWW Apache

Apache – od 1996 roku najpopularniejszy serwer HTTP, w lutym 2005 roku 68% serwerów w oparciu o niego

Najnowsza wersja – 2.2.8Ważniejsze cechy:Protokoły wbudowane w serwer, można dodać np. moduły POP3 lub ftp

Filtry – możliwość szyfrowania, kompresji, szukania wirusów itp.

Działa w środowisku Unix i WindowsAutentyfikacja, kontrola dostępu, SSL/TLS

Page 90: Wprowadzenie

90Serwer WWW Apache

Load balancing – obsługa przez kilka fizycznie różnych serwerów

CGI (Common Gateway Interface) – perl, PHP, Python, Tcl

Wirtualne hosty

Page 91: Wprowadzenie

91Serwer WWW Apache

Instalacja – pakiet rpm httpdKonfiguracja w zbiorze /etc/httpd/conf/httpd.confServerRoot "/etc/httpd" miejsce, gdzie znajduje się konfiguracja i logiListen 12.34.56.78:80 Na jakim adresie IP i porcie ma słuchaćUser apacheGroup apacheDocumentRoot "/var/www/html"

Page 92: Wprowadzenie

92Serwer WWW Apache

<IfModule mod_userdir.c> # UserDir disable

# To enable requests to /~user/ to serve the user's public_html # directory, remove the "UserDir disable" line above, and uncomment # the following line instead: UserDir public_html

</IfModule>

Page 93: Wprowadzenie

93Serwer WWW Apache

AddLanguage pl .po (nie pl .pl)

AddDefaultCharset UTF-8

AddCharset ISO-8859-2 .iso8859-2 .latin2 .cenAddCharset UTF-8 .utf8AddCharset WINDOWS-1251 .cp-1251 .win-1251

Page 94: Wprowadzenie

94Serwer WWW Apache

Wirtualne hosty:Oparte o różne adresy IP, serwer wybierany jest po adresie (fizyczny serwer musi mieć kilka adresów IP)

Oparte o nazwę, serwer wybierany jest po nazwie w nagłówku HTTP.

W obu przypadkach DNS wskazuje dla różnych serwerów wirtualnych ten sam serwer fizyczny

Wygodniejsze i prostsze są serwery oparte o nazwę.Serwer musi być w oparciu o IP, jeśli obsługuje stare przeglądarki (HTTP/1.0) lub SSL

Page 95: Wprowadzenie

95Serwer WWW ApacheOparty o nazwęNameVirtualHost *:80

<VirtualHost *:80>ServerName www.kominiarz.plServerAlias www.kominiarz.com.pl *.kominiarz.plDocumentRoot /var/www/kominiarz</VirtualHost>

<VirtualHost *:80>ServerName www.ania.plDocumentRoot /var/www/kartoteka_ani</VirtualHost>

Page 96: Wprowadzenie

96Serwer WWW ApacheOparty o adres IP<VirtualHost www.akuku.com>DocumentRoot /home/akuku/wwwServerName www.akuku.comErrorLog /var/log/akuku/error_logTransferLog /var/log/akuku/access_log</VirtualHost>

<VirtualHost www.mojpies.org>ServerAdmin [email protected] /home/tomek/wwwServerName www.mojpies.orgErrorLog /var/log/tomek/error_logTransferLog /var/log/tomek/access_log</VirtualHost>

Page 97: Wprowadzenie

97Serwer Squid

Squid – wydajny serwer proxy, obsługujący obiekty ftp, gopher, HTTP, DNS

Przechowuje ważniejsze obiekty w buforach w RAM, pozostałe na dyskach

Obsługuje SSL, posiada kontrolę dostępu, logowanie pytań

Umożliwia stworzenie hierarchii serwerówObsługuje pytania jednym procesem

Page 98: Wprowadzenie

98Serwer Squid

Instalacja z pakietu rpm squidZbiór konfiguracyjny /etc/squid/squid.conf

Page 99: Wprowadzenie

99Serwer Squid

http_port 3128icp_port 3130htcp_port 4827

icp i htcp – protokoły używane do komunikacji pomiędzy serwerami cache

Page 100: Wprowadzenie

100Serwer Squid

cache_mem 8 MB – wielkość cache w RAMcache_swap_low 90cache_swap_high 95(0-100%) - jeśli zajętość cache osiągnie low, rozpocznie się usuwanie wpisów. Po osiągnięciu high usuwanie stanie się bardziej agresywnemaximum_object_size 4096 KB - obiekty większe nie będą zapisywane w cachecache_dir ufs /var/spool/squid 1000 16 256Squid utworzy cache w kartotece /var/squid. Będzie zawierała 16 kartotek, z których każda będzie miała 256 podkartotek. Wielkość cache nie przekroczy 1000 MB

Page 101: Wprowadzenie

101Serwer Squidacl localhost src 127.0.0.1/255.255.255.255acl SSL_ports port 443 444 563acl dostep src "/etc/squid/dostep"

http_access allow localhosthttp_access allow dostep

Jeśli żadna linia http_access nie pasuje, domyślną akcją jest przeciwna, niż w ostatniej linii. Np. jeśli ostatnią akcją było allow, przyjęte zostanie deny.

Page 102: Wprowadzenie

102Serwer Squid

Program cachemgr.cgi służy do wyświetlania statystyk serwera. Znajduje się w kartotece /usr/lib/squid.

Należy go skopiować do kartoteki cgi-bin serwera httpd.

Statystyki będą dostępne po wybraniu URL http://serwer_www/cgi-bin/cachemgr.cgii podaniu adresu serwera squid, portu, nazwy użytkownika i hasła.

Aby dostęp był chroniony hasłem, należy go umieścić w squid.conf:cachemgr_passwd my-secret-pass all

Page 103: Wprowadzenie

103Lpd, cups

Lpd (Line Printer Daemon) obsługuje zadania drukowania.Po uruchomieniu czyta zbiór konfiguracyjny /etc/printcap i drukuje zadania które zostały po ewentualnym załamaniu systemu

zadania do drukowania umieszcza w kolejkach, różnych dla różnych drukarek

Akceptuje zadania z komputerów wymienionych w /etc/hosts.equiv lub /etc/hosts.lpd

Jeśli w opisie drukarki w printcap wystąpi opcja 'rs' akceptuje tylko zadania drukowania użytkowników posiadających konta na serwerze z drukarką.

Page 104: Wprowadzenie

104Lpd, cups

Konfiguracja lpd w zbiorze /etc/lpd.conf. Zasady dostępu do usług lpd w zbiorze /etc/lpd.perms

Page 105: Wprowadzenie

105Lpd, cups

Format pliku /etc/printcap jest podobny do /etc/termcap.

Spacje i znaki tabulacji na początku wiersza są ignorowane

Znak # na początku wiersza oznacza komentarzLinie nie zaczynające się od : lub | oznaczają początek definicji drukarki

Znak \ na końcu linii oznacza jej kontynuację (dla kompatybilności ze starszymi wersjami)

Page 106: Wprowadzenie

106Lpd, cups

Definicja drukarki rozpoczyna się od jej nazwy, po której mogą wystąpić jej nazwy alternatywne, następnie słowa kluczowe i wartości oddzielone znakiem ':'dw|:\:lp=/dev/lp0:\:sd=/var/spool/lpd/dw:\:mx#0:

dw1|xerox|Xerox:\:mx#0::lp=:rm=Xerox:rp=xerox:sd=/var/spool/lpd/xerox:

Page 107: Wprowadzenie

107Lpd, cups

lp=/dev/lp0 drukarka lokalnasd=/var/spool/lpd/dw położenie kartoteki spoolingumx#0 maksymalny rozmiar zadania do wydruku, 0 – bez ograniczeńrm=172.24.1.20 adres (nazwa) innego serwera lpdrp=xerox nazwa drukarki na innym serwerze

Page 108: Wprowadzenie

108Lpd, cups

lpq – program do wyświetlania kolejek drukarek.

Bez parametrów – wyświetli kolejkę domyślnej drukarki

lpq -P drukarka (all) wyświetli kolejkę wskazanej drukarki (wszystkich)

Page 109: Wprowadzenie

109Lpd, cupslpc – (Line Printer Control program) program do zarządzania

drukarkami i kolejkami.disable printer[@host] | all zatrzymaj kolejkęenable printer[@host] | all uruchom kolejkęstart printer[@host] | all uruchom drukowaniestop printer[@host] | all zatrzymaj drukowaniedown printer[@host] | all zatrzymaj drukowanie i

kolejkędown printer[@host] | all zatrzymaj drukowanie i

kolejkęstatus printer[@host] | all wyświetl stan drukerek i

kolejek

Page 110: Wprowadzenie

110Lpd, cups

CUPS – Common Unix Printing SystemUżywa IPP (Internet Printing Protocol) do zarządzania zadaniami i kolejkami drukowania

Umożliwia korzystanie z protokołów LPD, SMB (Server Message Block) i AppSocket (JetDirect)

Umożliwia wyszukiwanie drukarek sieciowychUmożliwia drukowanie na drukarkach PostScript i innych

Page 111: Wprowadzenie

111Lpd, cups

Zadania drukowania przyjmuje daemon cupsdKonfiguracja daemona w zbiorze /etc/cupsd/cupsd.conf

Do tworzenia konfiguracji cupsd i drukarek służą wyspecjalizowane narzędzia, w KDE jest to KDEPrint

Konfiguracja i zarządzanie przez WWW:http://host-z-cups.cos.tam.pl:631

Page 112: Wprowadzenie

112Lpd, cups

Przykładowy zbiór konfiguracyjny drukarki <DefaultPrinter lexmark_siec>Info LEXMARK Optra Color 1275LocationDeviceURI smb://kempny:h4321@STANET/KAKTUS/Lexmark_PCLState IdleAccepting YesJobSheets none noneQuotaPeriod 0PageLimit 0KLimit 0</Printer>

Page 113: Wprowadzenie

113MySQL

MYSQL – relacyjna baza danychUdostępniana z licencją Open SourceSzybka, niezawodna i prosta w użyciuArchitektura klient – serwerInterfejs C, C++, Eiffel, Java, Perl, PHP, Python, Tcl Działa na wielu platformachWielowątkowa, pracuje na maszynach wieloprocesorowych

Obecnie wersja 5.0.51

Page 114: Wprowadzenie

114MySQL

Instalacja – pakiety:mysqlmysql-server

Konfiguracja w zbiorze /etc/my.cnfDomyślne położenie baz danych /var/lib/mysqlDostęp do baz danych, tablic, kolumn, listę i uprawnienia użytkowników zawiera baza danych mysql, znajduje się w /var/lib/mysql/mysql

Page 115: Wprowadzenie

115MySQL

mysql – dostęp do bazy z linii komendtypowe użycie:mysql [-h host] -u user -p [password]

Podanie hasła jest opcjonalne, jeśli go nie podamy, mysql zapyta o niego

Umożliwia zarządzanie bazami w języku SQL

Page 116: Wprowadzenie

116MySQL

Przykładowa sesja:mysql> SHOW DATABASES;+----------+| Database |+----------+| mysql |+----------+mysql> CREATE DATABASE test;mysql> USE testDatabase changedmysql> CREATE TABLE osoby (imie VARCHAR(20), nazwisko VARCHAR(20), urodzony DATE);

Page 117: Wprowadzenie

117MySQL

mysql> SHOW TABLES;+---------------------+| Tables in test |+---------------------+|osoby |+---------------------+mysql> QUITBye