OpenBSD www.openbsd.org Uniksopodobny system operacyjny Opracowany na Uniwersytecie kalifornijskim w Berkley Bazuje na BSD (Berkley Software Distribution) z lat 80 Wieloplatformowy (PC, Macintosh, Sun Sparc, Compaq Alpha) System dostepny nieodplatnie
System mozna uruchomic na komputerach klasy 386 jak i na nowoczesnych serwerach Przez wielu uznawany za najbezpieczniejszy system operacyjny Twórcy stawiaja na niezawodnosc, stabilnosc, bezpieczenstwo Inne systemy BSD: NetBSD, FreeBSD, Mac OS X, BSD/OX
Literatura: Ksiazka dostepna jest w bibliotece instytutowej (zakup na prosbe naszego Kola)
Zagadnienia: Instalacja Podstawowa konfiguracja Przykladowa siec Firewall konfiguracja, filtrowanie pakietów za pomoca systemu PF Proces kolejkowania
powody stosowanie kilku partycji: Partycja bezpiecznie ogranicza wielkosc plików dziennika Uniemozliwienie zapelnienia calego dysku Zapelnienie jednej partycji umozliwia latwe rozwiazanie problemu Partycje izoluja obszary z uszkodzonym systemem plików
Partycje: / (root) Partycja podstawowa, przechowuje pliki konfiguracyjne Umieszczona jako pierwsza(najszybszy dostep) Nie musi byc bardzo pojemna (np. 500MB)
/swap Partycja wymiany Przestrzen dyskowa traktowana jako pamiec wirtualna Pojemnosc 2 x pojemnosc pamieci fizycznej Przenoszenie bezuzytecznych danych z pamieci na dysk
Pozostale partycje: /temp - systemowa przestrzen na pliki tymczasowe /var zawiera czesto zmieniajace sie dzienniki serwera www, kolejki poczty, tymczasowe pliki uruchamialne, domyslna strone www itd.
Pozostale partycje: /usr przechowywane sa programy systemu operacyjnego, systemowy kod zródlowy, kompilatory, biblioteki /home prywatne pliki uzytkowników
Instalacja Kazdy z wymienionych katalogów tj. /root, /home, /tmp, /var, /usr, /swap zostal zamontowany na odzielnej partycji Caly system zaintalowany na odzielnej rozszerzonej partycji dysku Program GAG umozliwial nam wybór systemu operacyjnego
Konfiguracja interfejsu Ethernet: Z kazda z kart sieciowych zwiazany jest osobny plik konfiguracyjny: /etc/hostname.nazwa_interfejsu Komputer LAB_C z zainstalowanym OpenBSD posiadal 2 karty: xl0 oraz rl0, tak wiec pliki konfiguracyjne: /etc/hostname.xl0 /etc/hostname.rl0
Konfiguracja sieci w pracowni:
Konfiguracja interfejsu Ethernet: Wpis do /etc/hostname.nazwa_interfejsu: inet adres_ip maska_sieci adres_rozgloszeniowy opcje /etc/hostname.rl0: inet 192.168.0.1 255.255.255.0 NONE NONE etc/hostname.xl0: inet 192.168.1.1 255.255.255.0 NONE NONE
Konfiguracja interfejsu Ethernet: Wpisanie NONE w miejsce adresu rozgloszeniowego oznacza, ze system wyznaczy adres rozgloszeniowy na podstawie podanego adresu IP oraz maski Jesli komputer ma dzialac jako klient DHCP to w pliku /etc/hostname.rl0: nalezy wpisac slowo dhcp
Konfiguracja interfejsu Ethernet: Adres bramy domyslnej mozna podac w jednym wierszu w pliku /etc/mygate Konfiguracja DNS: edytujemy plik: etc/resolv.conf wpis: domain nazwa_domeny_do_której_podlaczony_jest_komputer nameserver adres_serwera_nazw
Filtrowanie pakietów firewall: system PF PF uruchamiany po starcie systemu po ustawieniu 2 zmiennych w pliku /etc/rf.conf: pf=yes pf_rules=/etc/pf.conf Wszystkie funkcje PF konfiguruje sie w pliku /etc/pf.conf
Funkcje pojawiajace sie w PF: Makra Tabele Opcje Normalizacja ruchu Sterowanie przepustowoscia Translacja Przekierowania Filtracja pakietów
Firewall format wprowadzanej reguly: pass in on nazwa_interfejsu proto protokól from any to adres port numer_portu keep state pass/block- slowo kluczowe, filtracja pakietów (przepusc, zablokuj) in/out kierunek przeplywu pakietów (in oznacza ruch wchodzacy do chronionej sieci) on nazwa_interfejsu wskazuje interfejs przez który przechodza pakiety (np. rl0, xl0) przyklad dalszej czesci: protokól TCP, UDP from any to 192.168.1.1 port 22 keep state wskazanie iz nalezy przechowywac informacje o stanie tego polaczenia
Konfiguracja firewalla: W pliku /etc/services mamy zawarty spis uslug wraz z numerami portów np.:ssh 22 telnet 23 smtp 25 www 80 pop3 110 Zaladowanie regul z pliku /etc/pf.conf poleceniem: #pfctl f /etc/pf.conf (control the packet filter and network address translation)
Przykladowy wpis do PF: pass in on xl0 proto tcp from 192.168.1.2 to any port 22 Powyzszy zapis oznacza, ze firewall bedzie przepuszczal pakiety do routera (z Lab_D) zwiazane z protokolem ssh, przez interfejs xl0 (192.168.1.1) na porcie 22
PF Operatory logiczne: =,!=, <,<=,>,<=,<>,>< np. pass in proto tcp from any to any port 5000><6000 regula zezwala na przesylanie pakietów TCP do dowolnego portu powyzej 5000, ale ponizej 6000. Nawiasy klamrowe sluza do laczenia wpisów w jeden np. pass in proto {tcp, udp} from any to any port 53
PF makra To zmienne, które mozna definiowac na potrzeby regul Korzystajac z makra ewentualne zmiany wprowadzamy tylko w jednym miejscu Przyklad: External_if= xl0 Internal_ip= rl0 Block in on $External_if from $Internal_ip
PF tabele: Przechowuja dlugie listy adresów sieciowych (np. róznych zródel spamu) Dzialaja szybciej niz wpisy w nawiasach klamrowych Mozna je uruchamiac takze podczas pracy systemu Definicja tabeli: table <nazwa_tabeli> {adresy}
PF tabele: Przyklad: table <spam> {234.32.3.4/16, 243.45.23.2/24} Liste adresów do umieszczenia w tabeli mozna zapisac w pliku zewnetrznym; pobranie listy z pliku: table<spam> file /etc/plik1 (w pliku kazdy adres zapisujemy w oddzielnej linii, znaki # oznaczaja komentarz)
Regulacja przepustowoscia Jedna z funkcji zapór sieciowych Udostepnianie czesc pasma dla okreslonego zadania Rezerwowanie miejsca dla szczególnie waznych funkcji System PF zawiera system zarzadzania przepustowoscia ALTQ
Kolejki ALTQ zarzadza dostepnym pasmem za pomoca kolejek Kolejka jest jakby lista pakietów oczekujacych na przetworzenie Caly ruch sieciowy mozna podzielic na rózne kolejki, które reguluja przepustowosc serwera Korzystaja z algorytmu FIFO Mozliwosc kolejkowania opartego o priorytety (PRIQ) lub kolejkowania opartego o klasy (CBQ) PRIQ i CBQ wzajemnie sie wykluczaja i nie mozna ich jednoczesnie uaktywnic na jednym interfejsie
Kolejkowanie oparte o klasy W przypadkach, kiedy trzeba wplywac na dostepnosc pasma Alokowanie okreslonych przedzialów pasma dla pakietów róznego typu poprzez system hierarchicznych klas Kazda klasa ma swoja wlasna kolejke o niezaleznej charakterystyce Róznego rodzaju ruch sieciowy mozna przypisywac do róznych klas (np. ruch zwiazany z ssh do jednej klasy, z http do innej klasy) Mozliwosc pozyczania pasma od klas znajdujacych sie wyzej w hierarchii (jesli jest dostepne)
Opcje kolejek Default Control RED ECN Borrow Obydwa systemy: PRIQ oraz CBQ wymagaja utworzenia kolejki nadrzednej definiujacej podstawowe parametry regulacji przeplywu danych
Opcje kolejek Default i Control Kolejka nadrzedna moze miec tylko jedna kolejke podrzedna default funkcja domyslnej kolejki, gdy dany pakiet nie jest przydzielony do zadnej innej kolejki Kolejka typu Control uzywana jest przez pakiety kontrolne jak ICMP, IGMP
RED jest mechanizmem wczesnego wykrywania przepelnienia kolejki; gdy kolejka sie zapelni, pakiety zaczna byc pomijane ECN jest uzupelnieniem RED jest mechanizmem jawnego powiadomienia o przeciazeniu; wysylanie do urzadzen znajdujacych sie na drodze pomiedzy serwerem a klientem informacji o przeciazeniach wystepujacych w sieci i koniecznosci zmniejszenia ilosci przesylanych miedzy nimi pakietów Opcje kolejek RED oraz ECN
Opcje kolejek Borrow Tylko w powiazaniu z CBQ, dzieki tej opcji kolejka moze pozyczyc pasmo z kolejki nadrzednej (jesli dostepne) Pozyczona nadwyzka jest zwracana w momencie ponownego zwiekszenia natezenia ruch w kolejce nadrzednej
altq on slowo kluczowe bandwidth calkowita przepustowosc kolejki nadrzednej qlimit liczba pakietów przetrzymywanych w kolejce (domyslnie 50) tbrsize (opcjonalnie) jak szybko pakiety maja byc usuwane z kolejki queue lista kolejek podrzednych Konfiguracja kolejki nadrzednej altq on nazwa_intrerfejsu typ_kolejki bandwidth pasmo qlimit limit tbrsize rozmiar_tbr queue {kolejka2, kolejka3}
Definiowanie kolejek priorytetowych PRIQ Przyklad: Kolejka nadrzedna: altq on rl0 priq bandwidth 100Mb queue {ssh, other} Definicje kolejek podrzednych: queue nazwa_kolejki priority priorytet priq (opcje) priority od 0 do 15 (0-brak priorytetu, 15 max. priorytet) opcje np. RED, default
Definiowanie kolejek opartych na klasach Przyklad: Kolejka nadrzedna: altq on rl0 cbq bandwidth 100Mb queue {kolejka, kolejka2} Definicje kolejek podrzednych: queue nazwa_kolejki bandwidth pasmo priority priorytet cbq (opcje) {kolejka_podrzedna4, kolejka_podrzedna5} queue kolejka_podrzedna_4 bandwidth 5% prioryty 7 cbq(borrow) Priority(opcjonalnie) od 0 do 7 (0-brak priorytetu, 7 max. priorytet) Opcje(opcjonalnie) np. RED, default
Kolejkowanie przyklad w laboratorium Przydzielenie przepustowosci dwu sieciom LAN Kolejkowanie oparte o klasy
Kolejkowanie przyklad w laboratorium zawartosc PF Definicje kolejek: altq on rl0 cbq bandwidth 896Kb queue {lab_b, lab_h} queue lab_b bandwidth 768Kb cbq (red ecn) queue lab_h bandwidth 128Kb cbq (default red ecn)
Kolejkowanie przyklad w laboratorium zawartosc PF Przypisanie ruchu do kolejek: Pass in proto tcp from any to 192.168.0.2 keep state queue lab_b Pass in proto tcp from any to 192.168.0.3 keep state queue lab_h
DZIEKUJE ZA UWAGE Przygotowal: Lukasz Ogrodowczyk