Ćwiczenie 3
Temat:
Konfiguracja sieci.
Połączenia SSH.
Instalacja pakietów.
Cel ćwiczenia:
Celem ćwiczenia jest poznanie głównych poleceń systemu Linux
umożliwiających konfigurację interfejsów sieciowych komputera, konfigurację
i używanie bezpiecznych połączeń pomiędzy konsolami dwóch systemów Linux
(SSH) z wykorzystaniem kluczy. Student pozna także polecenia odpowiadające
za instalację dodatkowego oprogramowania z internetowych repozytoriów
danej dystrybucji systemu.
W ramach tego ćwiczenia przedstawiony zostanie także jeden
z najpopularniejszych edytorów tekstowych w konsoli systemu Linux – Vi/Vim.
36
Konfiguracja sieci. Połączenia SSH. Instalacja pakietów.
Ważna wskazówka dotycząca realizacji tego ćwiczenia
Uwaga, w zależności od ustawień sieciowych komputera hosta oraz ustawień wirtualnych
kart sieciowych programu VirtualBox przebieg tego ćwiczenia może nieznacznie różnić się od
siebie w różnych pracowniach komputerowych.
Konfiguracja interfejsów sieciowych maszyn wirtualnych
Środowisko wirtualizacji Virtual Box umożliwia podłączenie do każdej maszyny
wirtualnej maksymalnie czterech wirtualnych kart sieciowych. Każda z wirtualnych kart
pracować może w trybie:
• NAT – interfejs maszyny wirtualnej (gościa) tworzy z interfejsem hosta sieć
wewnętrzną. Interfejs hosta udostępnia dostęp do sieci Internet komputerowi
gościa.
• Bridged – tryb mostkowany, interfejs maszyny wirtualnej jest podłączony do
tej samej sieci co interfejs hosta.
• Sieć wewnętrzna - umożliwia komunikację pomiędzy maszynami wirtualnymi.
Nie umożliwia dostępu do sieci Internet.
• Sieć izolowana – umożliwia tylko komunikację w ramach komputera hosta.
Środowisko VirtualBox nie umożliwia takiej konfiguracji jednego interfejsu sieciowego
maszyny wirtualnej, aby posiadała ona jednoczesny dostęp do sieci Internet oraz była w
37
Konfiguracja sieci. Połączenia SSH. Instalacja pakietów.
jednej sieci z innymi maszynami wirtualnymi. Aby zapewnić komunikację maszyny wirtualnej
zarówno z siecią Internet oraz innymi maszynami wirtualnymi wykonaj Zadanie 1.
Zadanie 1 Konfiguracja interfejsów sieciowych maszyn wirtualnych
1. Edytować globalne ustawienia programu VirtualBox (Ctrl+G), zakładka sieć:
1.1. Edytować kartę sieci zamkniętej (klikając ikonę:
) .
1.2. Uzupełnić ustawienia karty oraz serwera DHCP według wzoru:
Zapisać zmiany a następnie uruchomić ponownie komputer hosta (uwaga, zmiany w
konfiguracji sieci muszą zostać wykonane z konta administratora komputera).
38
Konfiguracja sieci. Połączenia SSH. Instalacja pakietów.
2. Edytować ustawienia dwóch wcześniej przygotowanych maszyn wirtualnych:
2.1. Do każdej maszyny dołączyć dwie karty sieciowe.
2.2. Ustawić pierwszy interfejs każdej z maszyn na opcję NAT.
2.3. Ustawić drugi interfejs każdej z maszyn na opcję ‘Karta sieci izolowanej’.
3. Uruchomić obie maszyny wirtualne.
Konfiguracja IP interfejsu sieciowego
Adres IP jest sekwencją liczb przydzielaną karcie sieciowej komputera, która służy do
identyfikacji interfejsu w sieci (tzn. IP wewnętrzne, nierutowalne) lub poza nią – w sieci
Internet (tzw. IP zewnętrzne, adres publiczny). Każdy interfejs sieciowy powinien posiadać
unikalny adres IP w danej sieci.
W systemie Linux numer można wyświetlić aktualne przypisane numery IP
interfejsów sieciowych za pomocą polecenia
ifconfig
Polecenie wyświetla wszystkie aktywne interfejsy. Aby wyświetlić także interfejsy
nieaktywne należy użyć polecenia z flagą –a: ifconfig –a. W system Linux poszczególne
interfejsy sieciowe nazywane są skrótem „eth” oraz kolejną liczbą reprezentującą kolejny
interfejs:
Rysunek 1: Wydruk polecenia ifconfig
39
Włączanie i wyłączanie interfejsów
Symbol „lo” zarezerwowany został dla pętli zwrotnej „loopback”. „Lo” reprezentuje
wirtualne urządzenie sieciowe które umożliwia wymianę informacji „drogą sieciową” w
ramach jednego hosta.
Włączanie i wyłączanie interfejsów
Polecenie ifconfig pozwala na wyłączenie danego interfejsu, w tym wypadku eth1:
ifconfig eth1 up
lub na jego wyłączenie:
ifconfig eth1 down
Wyłączone interfejsy sieciowe widoczne są po wywołaniu polecenia ifconfig –a.
Przypisanie statycznego adresu IP oraz maski sieciowej do interfejsu
Aby przypisać adres IP do interfejsu sieciowego należy wywołać polecenie ifconfig, wskazać
symbol karty sieciowej oraz opcjonalnie zdefiniować odpowiednią maskę sieciową (jeśli ma
być ona inna niż maska domyślna) np.:
ifconfig eth1 172.16.2.34
W powyższym przykładzie przypisana została domyślna maska sieciowa (255.255.0.0). Aby
jawnie zdefiniować maskę, np. inną niż domyślna, użyć należy parametru netmask:
ifconfig eth1 172.16.2.34 netmask 255.0.0.0
Konfiguracja bramki domyślnej
W systemie Linux za konfigurację statycznych tras do określonych sieci i urządzeń odpowiada
polecenie route. Aby dodać informację do tablicy routingu odnośnie domyślnej bramki
łączącej konfigurowany komputer z siecią, użyć należy polecenia route, jak w poniższym
przykładzie:
route add default gw 10.0.0.1
Gdzie adres 10.0.0.1 to przykładowy adres domyślnej bramki w danej siec.
40
Konfiguracja adresów DNS
Konfiguracja adresów DNS
Adresy IP serwerów nazw DNS w systemie Linux znajdują się w pliku konfiguracyjnym
resolv.conf znajdującym się w katalogu /etc/:
/etc/resolv.conf
Wyżej wymieniony plik jest plikiem tekstowym, który może być edytowany za pomocą
dowolnego edytora tekstu (np. VI/VIM, Nano). Zawartość pliku resolv.conf składa się z pary:
słowa kluczowego nameserver oraz adresu IP serwera DNS, np.:
nameserver 8.8.4.4
nameserver 8.8.8.8
W pliku resolv.conf znajdować się może więcej niż jedna definicja serwera DNS.
Dynamiczne przypisanie ustawień sieci
Jeśli w danej sieci funkcjonuje serwer DHCP umożliwiający automatyczne przypisanie
ustawień sieci (IP, maski, bramki domyślnej, serwerów DNS) możliwe jest wywołanie
zapytania do serwera DHCP dla konkretnego interfejsu. Realizowane jest to za pomocą
polecenia:
dhclient eth0
Polecenie to wysyła do sieci podłączonej do interfejsu sieciowego eth0 pakiety
rozgłoszeniowe zaadresowane do wszystkich odbiorców (tzw. broadcast). Jeśli w sieci
znajduje się serwer DHCP w zależności od jego konfiguracji przyznaje lub odrzuca prośbę
klienta o przyznanie adresu IP oraz pozostałych ustawień sieci.
Programy ułatwiające konfigurację ustawień sieci
W różnych dystrybucjach systemu istnieją programy ułatwiające konfigurację ustawień
sieciowych. Programy mogą pracować w trybie graficznym (jeśli zainstalowane jest
środowisko X-Window) ale także w trybie „pseudograficzny”, jak np. program system-config-
network-tui (dostępny np. w systemie Fedora).
41
Programy ułatwiające konfigurację ustawień sieci
Zadanie 2 Konfiguracja interfejsów sieciowych
Po uruchomieniu maszyn wirtualnych (Systemu Fedora oraz Ubuntu) wykonać konfigurację
interfejsów sieciowych:
1. W obu systemach pobrać ustawienia sieciowe z serwera DHCP dla kart sieciowych eth0
2. Dla kart sieciowych eth1 ustawić następujące ustawienia sieci:
2.1. IP maszyny 1 (np. systemu Fedora): 172.16.0.10, maska podsieci 255.255.0.0
2.2. IP maszyny 2 (np. systemu Ubuntu): 172.16.0.11, maska podsieci 255.255.0.0
3. Za pomocą polecenia ifconfig wyświetlić wprowadzone ustawienia interfejsów w celu
sprawdzenia czy żądana konfiguracja została wprowadzona.
4. Za pomocą polecenie route sprawdzić, czy ustawienia domyślnej bramki zostały
poprawnie pobrane z serwera DHCP, jeśli nie ustawić ręcznie bramkę domyślną na
10.0.0.1
5. Za pomocą polecenia cat wyświetlić na ekran ustawienia serwerów DNS.
Polecenie ping
Ping jest programem linii komend pozwalającym na diagnozowanie połączenia sieciowego.
Program wysyła pakiety ICMP do zadanego komputera (tzw. „zapytania echa”) „prosząc”
zdalny komputer o odpowiedź, poprzez wysłanie pakietów „odpowiedzi echa”. Program
prezentuje sekwencje wysyłanych i odbieranych pakietów wraz z czasem jaki upłynął od
momentu wysłania zapytania do czasu odebrania pakietu. Polecenie może zostać wywołane
zarówno z nazwą domenową, jak i z adresem IP, np:
ping google.com
lub np.:
ping 10.0.0.1
42
Programy ułatwiające konfigurację ustawień sieci
Wysyłanie pakietów zostaje przerwane kombinacją klawiszy Ctrl+C. Za pomocą flagi –c
określić można ile pakietów powinno zostać wysłanych do „odpytywanego komputera” .
Zadanie 3 Testowanie połączeń sieciowych.
Za pomocą polecenie ping (używając 5 pakietów) sprawdzić połączenia pomiędzy
wyspecyfikowanymi komputerami, odnotować średni czas odpowiedzi i wartość TTL.
Połączenia sprawdzić pomiędzy:
1. Wirtualną maszyną 1 i wirtualną maszyną 2
2. Wirtualną maszyną 2 i wirtualną maszyną 1
3. Komputerem hostem i maszyną wirtualną (1 i 2)
4. Wirtualną maszyną 1 i 2 a hostem: google.com
SSH
SSH (z ang. secure shell) to protokół umożliwiający nawiązywanie bezpiecznych
(szyfrowanych) połączeń pomiędzy konsolami systemu Linux. Umożliwia zarządzanie za
pomocą konsoli tekstowej drugim systemem, a także bezpiecznie kopiowanie plików. Aby
nawiązać połączenie z drugim systemem Linux za pomocą bezpiecznego połączenia ssh
należy wywołać polecenie:
ssh nazwa_uzytkownia@host
gdzie „nazwa_uzytkownia”, to nazwa użytkownika zdalnego komputera, symbol „@”
oddziela człon nazwy użytkownika od nazwy hosta zdalnego komputera. Zdalny komputer
może zostać wywołany poprzez nazwę domenową np.
ssh jnowaki@linux.org
gdzie użytkownik to „jnowak”, a host: „linux.org”, lub poprzez adres IP, np.:
ssh student@192.168.2.54
43
Polecenie SCP
Jeżeli nazwa użytkownika systemowego jest taka sama jak zdalny użytkownik komputera z
którym chcemy nawiązać połączenie można pominąć nazwę użytkownika zdalnego. Zatem,
jeśli użytkownik „student” chce wywołać zdalne połączenie do konta zdalnego użytkownika
„student”, połączenie może zostać wywołane w następujący sposób:
ssh 192.168.2.54
Po wywołaniu połączenia zdalny komputer zapyta o hasło użytkownika zdalnego, a po
wpisaniu hasła umożliwi wydawanie poleceń systemowych na zdalnym komputerze.
Polecenie SCP
Polecenie scp umożliwia kopiowanie plików za pomocą bezpiecznego połączenia (secure
copy) wykorzystującego protokół ssh. Składnia polecenia kopiującego plik na zdalny system
bardzo przypomina składnię polecenia ssh: zawiera definicję użytkownika oraz nazwę hosta
(lub IP) z tą jednak różnicą, iż konieczne jest wskazanie miejsca na dysku zdalnego
komputera gdzie zostanie zapisany plik, np. chcąc przesłać plik „dane.txt” na konto (do
katalogu domowego) użytkownika „operator” na komputer o IP „10.0.12.104” wydać należy
plecenie:
scp dane.txt operator@10.0.12.104:
Aby powyższe polecenie poprawnie przesłało plik na zdalny komputer wydane musi zostać z
katalogu, w którym znajduje się plik dane.txt, w przeciwnym wypadku należałoby wywołać to
polecenie z pełną ścieżką do kopiowanego pliku. Podobnie jak w przypadku polecenie ssh
określenie nazwy zdalnego użytkownika może zostać pominięte w wypadku, gdy nazwa
użytkownika lokalnego (wywołującego polecenie) jest taka sama jak użytkownika zdalnego
komputera. Najważniejszą różnicą jest konieczność zastosowania symbolu „:” po adresie
komputera zdalnego, informuje to bowiem, gdzie ma zostać skopiowany plik na zdalnym
komputerze. Jeśli w poleceniu po symbolu „:” nie ma nic, oznacza to, że plik zostanie
skopiowany do katalogu domowego użytkownika (w powyższym przykładzie do katalogu
domowego użytkownika operator). Po symboli „:” wskazać można także pełną ścieżkę, gdzie
zapisany powinien zostać plik, np.:
scp dane.txt operator@10.0.12.104:/home/operator/tmp
44
Polecenie SCP
Uwaga, nie można wywołać polecenia scp bez symbolu „:” po nazwie komputera zdalnego,
poniższe polecenie nie przyniesie żądanego efektu:
scp dane.txt operator@10.0.12.104
(!!! BŁĄD !!!)
(!!! BŁĄD !!!)
(!!! BŁĄD !!!)
(!!! BŁĄD !!!)
Zadanie 4 Testowanie połączeń SSH. Program scp, putty i winscp.
Przetestować połączenia ssh oraz kopiowanie plików za pomocą poleceń scp. Sprawdzić
działanie programów putty oraz winscp.
1. Z maszyny wirtualnej 1 zalogować się przez SSH do maszyny wirtualnej 2
1.1. Na zdalnej maszynie sprawdzić nazwę hosta (polecenie hostname)
1.2. Na zdalnej maszynie sprawdzić konfigurację kart sieciowych
1.3. Na zdalnej maszynie wyświetlić informacje o zainstalowanej dystrybucji i jądrze
systemu (polecenie „uname –a”)
2. Za pomocą polecenia scp:
2.1. Skopiować z maszyny wirtualnej nr 1 do katalogu domowego użytkownika root na
maszynie wirtualnej nr 2 plik tekstowy spis.txt zawierający spis wszystkich plików i
katalogów z katalogu /etc/
2.2. Skopiować z maszyny wirtualnej nr 2 plik /etc/group do katalogu /home/ na
maszynie wirtualnej nr 1. Plik na maszynie wirtualnej nr 1 powinien zostać zapisany
od razu pod nazwą „grupy.txt”
Aby wykonać kolejny punkt należy pobrać programy putty oraz winscp. Programy można
pobrać ze strony:
http://kzi.polsl.pl/so
lub bezpośrednio ze strony producentów. W/w
programy to darmowe implementacje dla systemu Windows poleceń systemu Linux: ssh oraz
scp.
3. Za pomocą programu winscp połączyć się z maszyną wirtualną nr 1. Skopiować z
komputera hosta dowolny plik tekstowy do katalogu /root/ na maszynie wirtualnej 1.
Sprawdzić dostępność pliku w konsoli maszyny wirtualnej.
45
Polecenie SCP
4. Za pomocą programu putty połączyć się z maszyną wirtualną nr 2. Sprawdzić nazwę
hosta, uruchomione procesy oraz obciążenie procesora (polecenie top).
Autoryzacja SSH z wykorzystaniem kluczy DSA
Komunikacja pomiędzy konsolami systemu z wykorzystaniem SSH jest szyfrowana, co
zabezpiecza ją przed podsłuchem. Połączenia SSH mogą zostać dodatkowo zabezpieczone za
pomocą wykorzystania kluczy autoryzujących. Dzięki temu dodatkowym zabezpieczeniem
jest fakt, iż tylko osoba posiadająca odpowiedni certyfikat może połączyć się ze zdalnym
komputerem. Aby wygenerować parę kluczy (parę, ponieważ szyfrowanie odbywa się w
sposób asymetryczny, jeden klucz służy do szyfrowania – klucz publiczny, a drugi do
odszyfrowywania – klucz prywatny) wywołać należy polecenie:
ssh-keygen –t dsa
Powyższe polecenie generuję parę kluczy typu DSA, dla użytkownika który wywołał to
polecenie. Generator w pierwszej kolejności pyta o nazwę pod którą zapisane zostaną pliki
kluczy (aby pozostawić domyślną nazwę klucza należy nacisnąć enter). W następnej
kolejności generator prosi o wymyślenie hasła zabezpieczającego klucz. Możliwe jest
zastosowanie pustego hasła zabezpieczającego (naciskając enter), dzięki czemu logowanie do
zdalnej maszyny będzie opierało się tylko na posiadanym certyfikacie bez dodatkowego
odpytywania użytkownika o hasło do klucza.
46
Polecenie SCP
Klucze domyślnie zapisują się w katalogu domowym użytkownika, w katalogu .ssh (kropka
przed nazwą katalogu oznacza iż katalog jest ukryty).
Aby wykorzystać klucze do autoryzacji, należy zawartość klucza publicznego id_dsa.pub
przekopiować do pliku .ssh/authorized_keys na zdalnym komputerze, np. dla użytkownika
root, wykorzystując ścieżki bezwzględne:
scp /root/.ssh/id_dsa.pub 172.16.0.11:/root/.ssh/authorized_keys
Na zdalnym komputerze należy dodatkowo ustawić prawa dostępu do pliku z kluczami za
pomocą polecenia:
chmod 600 /root/.ssh/authorized_keys
Problem praw dostępu do plików nie jest przedmiotem tego ćwiczenia. Z zagadnieniem
tym student zapoznany zostanie w ramach kolejnych ćwiczeń laboratoryjnych.
Po wykonaniu powyższych czynności, autoryzacja połączenia do komputera, na którym w
pliku authorized_keys umieszczony został klucz publiczny, odbywać się będzie za pomocą
certyfikatu. Efektem tego będzie fakt, iż użytkownik pytany będzie tylko o hasło do klucza, a
nie o hasło systemowe użytkownika, a w wypadku, gdy użytkownik podczas generowania
klucza zostawił puste hasło, autoryzacja odbędzie się tylko na podstawie posiadania
odpowiedniego certyfikatu i w efekcie użytkownik po wywołaniu połączenia ssh nie zostanie
poproszony o podanie hasła, lecz zostanie od razu zalogowany.
Zadanie 5 Autoryzacja SSH z wykorzystaniem kluczy DSA.
Postępując zgodnie z powyższym opisem:
1. Na maszynie wirtualnej nr 1 wygenerować parę kluczy ssh (zastosować puste hasło)
2. Na maszynie wirtualnej nr 2 wygenerować parę kluczy ssh (hasło do klucza: „qwerty”)
3. Z maszyny wirtualnej nr 1 wysłać (scp) klucz publiczny (id_dsa.pub) na maszynę wirtualną
nr 2 bezpośrednio zapisując go jako plik authorized_keys
47
Polecenie SCP
4. Z maszyny wirtualnej nr 2 wysłać (scp) klucz publiczny (id_dsa.pub) na maszynę wirtualną
nr 1 bezpośrednio zapisując go jako plik authorized_keys
5. Na obu maszynach wirtualnych ustawić prawa dostępu do pliku authorized_keys
6. Zalogować się z maszyny wirtualnej nr 1 do maszyny wirtualnej nr 2 , a następnie
odwrotnie. Jak przebiega autoryzacja użytkownika ?
Instalacja pakietów
Systemy Linux umożliwiają instalację dodatkowego oprogramowania z tzw. repozytoriów.
Repozytoria to specjalne serwery posiadające pakiety instalacyjne przygotowane specjalnie
dla konkretnej dystrybucji. Adresy repozytoriów znajdują się w plikach konfiguracyjnych w
katalogu /etc. W zależności od dystrybbucji, np.:
• W systemie Ubuntu Server:
/etc/apt/sources.list
• W systemie Fedora Linux:
/etc/yum.repos.d/fedora.repo
W zależności od dystrybucji systemu, istnieją różne programy do zarządzania , instalacji i
usuwania pakietów. W przypadku systemu Fedora Linux jest to program yum, który
wywołuje się według wzoru:
yum opcja nazwa_pakietu
Gdzie opcją może być:
• install – instaluje pakiet
• erase – usuwa pakiet
• info – wyświetla informacje o pakiecie
• list – wyświetla (wyszukuje) pakietów
48
Polecenie SCP
Analogicznym poleceniem w systemie Ubuntu Server jest aptitude:
aptitude opcja nazwa_pakietu
Gdzie opcją może być:
• install – instaluje pakiet
• remove – usuwa pakiet
• show – wyświetla informacje o pakiecie
• search – wyświetla (wyszukuje) pakietów
Zadanie 6 Instalacja pakietów
Przetestować polecenia związane z zarządzaniem pakietami. Zadanie wykonać w systemie
Fedora oraz Ubuntu.
1. Wyświetlić informacje o pakiecie „bash”
2. Wyszukać pakietów o nazwie „php”
3. Zainstalować pakiety:
3.1. mc
3.2. iptraf
3.3. ekg
3.4. lynx
3.5. Sprawdzić działanie zainstalowanych programów
4. Odinstalować pakiet „ekg”
49
Polecenie SCP
Dodatek 1 – Edytor Vi / VIM
Edytor tekstu Vi/Vim jest jednym z najpopularniejszych edytorów działających w konsoli
systemu Linux. Edytor Vim jest ulepszoną wersją edytora Vi, który został stworzony już w
1976 roku. Uruchomienie edytora odbywa się poprzez wywołanie polecenia:
vim nazwa_pliku
Polecenie rozpoczyna edycję wskazanego pliku. Jeśli plik nie istnieje to zostanie stworzony.
Edytor może znajdować się w trzech stanach pracy:
• Stan normalny – aktywowany jednokrotnym lub dwukrotnym naciśnięciem klawisza
„Esc”
• Stan edycji tekstu – aktywowany klawiszem „ i ”
• Stan linii poleceń – aktywowany klawiszem „ : ”
W każdym ze stanów program posiada inną funkcjonalność wywoływaną odpowiednim
klawiszami i poleceniami. Poniżej kilka podstawowych poleceń programu.
Edytor będąc w stanie normalnym w następujący sposób reaguje na klawisze (lub ich
kombinacje):
• k / j – kursor w górę / dół (lub strzałki kierunkowe)
• h / l – kursor w lewo / prawo (lub strzałki kierunkowe)
• gg – kursor do początku pliku
• GG – kursor na koniec pliku
• u – cofnij ostatnią akcję
• dl – wycina literę
50
Polecenie SCP
• dw – wycina wyraz
• dd – wycina linię
• p – wstawia wycięty tekst
Polecenia możliwe do zastosowania, gdy edytor pracuje w stanie „linii poleceń”:
• :set number - numeracja wierszy
• :3,10co20 - skopiowanie linii od 3 do 10 w miejsce linii 20.
• :4,5mo6 – przeniesienie linii 4 i 5 za linię 6
• 4,6 s/nat/net/g – wyszukuje w liniach od 4 do 6 frazy „nat” i zastępuje ją frazą „net”
• :w – zapisuje zmiany w pliku
• :wq – zapisuje zmiany w pliku i zamyka edytor
• :q! – zamyka edytor bez zapisywania zmian