System rezerwacji czasu dostępu do zasobów laboratorium sieci

Transkrypt

System rezerwacji czasu dostępu do zasobów laboratorium sieci
Krzysztof Januszewski, Patryk Szelągowski
Akademia Morska w Gdyni
SYSTEM REZERWACJI CZASU DOSTĘPU DO ZASOBÓW
LABORATORIUM SIECI KOMPUTEROWYCH
NA PODSTAWIE PAKIETU LAMP
W artykule opisano koncepcję systemu, umożliwiającego użytkownikom zdalny dostęp do zasobów
laboratorium sieci komputerowych, tj. sprzętu i oprogramowania, wykorzystywanych w ramach zajęć
z przedmiotu „Sieci komputerowe”, a także szkoleń realizowanych w ramach kursów Cisco CCNA.
System opracowano, opierając się na pakiecie LAMP (Linux, Apache, MySQL i PHP), z wykorzystaniem wirtualnej sieci VPN. Cała infrastruktura prezentowanego systemu została zbudowana na
podstawie oprogramowania klasy Open Source, co znalazło swoje odzwierciedlenie w aspektach
ekonomicznych.
Słowa kluczowe: sieci komputerowe, Linux, Apache, PHP, MySQL, VPN, zdalny dostęp.
WSTĘP
Sieci komputerowe są w dzisiejszych czasach nieodzownym elementem
wszelkich funkcjonujących systemów opartych na transmisji danych. Gromadzenie,
przetwarzanie i dystrybucja informacji stanowią aspekty, umożliwiające działanie
wszystkich obecnie funkcjonujących technologii, zarówno prostych systemów
powszechnego użytku, jak i rozwiązań na poziomach militarnych czy też rządowych.
Wiedza nabyta podczas szkoleń przeprowadzanych w ramach kursów Cisco
CCNA (które są realizowane w Akademii Morskiej w Gdyni od 2006 roku, a od roku
2010 rozszerzone o zagadnienia związane z bezpieczeństwem sieciowym [4]),
umożliwia uzyskanie stosownego certyfikatu oraz zdobycie doświadczenia w projektowaniu, wdrażaniu i administrowaniu sieciami komputerowymi.
Opracowany system umożliwia studentom oraz kursantom Cisco CNNA
przeprowadzanie dodatkowych ćwiczeń, poszerzających nabyte umiejętności oraz
utrwalenie wiedzy poprzez pracę na rzeczywistym sprzęcie, znajdującym się
w laboratorium.
Do opracowania systemu wykorzystano oprogramowanie klasy Open Source,
co w konsekwencji okazało się rozwiązaniem o wiele bardziej ekonomicznym,
w porównaniu z rozwiązaniami komercyjnymi funkcjonującymi na rynku. Przykładem systemu udostępniającego możliwość zdalnego dostępu jest NETLAB+ –
rozwiązanie firmy NDG, udostępniającej projekt na warunkach licencyjnych. Jest to
rozwiązanie oferujące usługi na najwyższym poziomie, jednak wykupienie licencji
K. Januszewski, P. Szelągowski, System rezerwacji czasu dostępu do zasobów laboratorium sieci…
149
wymaga znacznych środków finansowych (cena najtańszej, możliwej do wykupienia
licencji, to 2395$) [10]. W skład pakietu NETLAB+ wchodzi przejrzysty interfejs,
dostępny z poziomu przeglądarki internetowej, zawierający wbudowane aplikacje
dla maszyny wirtualnej i zarządzania komponentami laboratorium. Połączenie jest
podzielone pomiędzy administratora i użytkowników, a wbudowany komunikator
pozwala na swobodną rozmowę podczas wirtualnej pracy.
Opracowanie prezentowanego systemu obejmowało kilka kroków, które w konsekwencji spełniają postawione przed nimi zadania.
1. IDEA SYSTEMU REZERWACJI CZASU
Kluczowym elementem prezentowanego systemu są utworzone interfejsy
WWW, przeznaczone zarówno dla użytkowników, jak i administratora. Interfejsy
zostały zaprojektowane z wykorzystaniem języka PHP (skryptowy język programowania, działający po stronie serwera i umożliwiający komunikację z bazą danych
[8]) oraz bazy danych MySQL. Użytkownik, po zarejestrowaniu się, ma możliwość
zarezerwowania poprzez interfejs określonego przedziału czasowego, w którym
będzie mógł przeprowadzić zdalną sesję – połączyć się z zasobami laboratorium.
Rezerwacje użytkowników przechowywane są w utworzonej na potrzeby prezentowanego systemu bazie danych. Pliki wchodzące w skład interfejsów, tj. głównie
skrypty PHP, zostały umieszczone na serwerze znajdującym się w laboratorium.
Rys. 1. Komunikacja odległego użytkownika z laboratorium – architektura klient – serwer
Fig. 1. Communication the remote user's with the laboratory – client – server architecture
Cały ruch pomiędzy zdalnym użytkownikiem a zasobami laboratorium,
realizowany jest z wykorzystaniem wirtualnej sieci prywatnej VPN. Jest to tunel,
przez który płynie ruch prywatny, poprzez infrastrukturę sieci publicznej.
150
ZESZYTY NAUKOWE AKADEMII MORSKIEJ W GDYNI, nr 95, listopad 2016
Do momentu ustanowienia sesji zdalnej ruch ten jest kierowany do serwera znajdującego się w laboratorium. Serwer ten pracuje pod kontrolą systemu operacyjnego
Linux. Proces zadań okresowych cron tego systemu umożliwia odczytanie bazy
danych i modyfikację pliku przechowującego dane autoryzacyjne użytkowników.
Gdy użytkownik uzyska możliwość rozpoczęcia sesji zdalnej w danym
przedziale czasu, nawiązuje połączenie z zasobami laboratorium poprzez program
emulujący terminal, np. PuTTY. Proces nawiązywania połączenia oraz uwierzytelniania użytkownika odbywa się z wykorzystaniem protokołu TACACS+.
W momencie, gdy upłynie czas wcześniej zarezerwowany przez użytkownika,
następuje zakończenie zdalnej sesji.
Interfejs WWW przeznaczony dla administratora, umożliwia zarządzanie użytkownikami, przedziałami czasu przeznaczonymi do rezerwacji, samymi rezerwacjami, jak i parametrami systemu – przykładowo maksymalną, możliwą do zarezerwowania przez użytkowników, liczbą sesji.
2. BAZA DANYCH SYSTEMU REZERWACJI CZASU
Struktura bazy danych, na której opiera się funkcjonowanie systemu rezerwacji
sesji, opisuje zależności pomiędzy kolumnami wszystkich tabel oraz znaczenie
poszczególnych kolumn i rekordów. Baza ta składa się z trzech tabel, których
zawartość definiuje elementy wyświetlane zarówno przez interfejs użytkownika, jak
i przez interfejs administratora (rys. 2) .
Rys. 2. Struktura bazy danych systemu rezerwacji czasu
Fig. 2. The structure of the database of the time booking system
K. Januszewski, P. Szelągowski, System rezerwacji czasu dostępu do zasobów laboratorium sieci…
151
Pierwsza tabela, options, zawiera funkcje administracyjne i jest przeznaczona
tylko dla administratora. Składa się ona z trzech kolumn. Pierwsza, ido, zawiera
unikatowe identyfikatory wszystkich rekordów w tej tabeli. Każdy rekord reprezentuje jedną funkcję. Kolumny name oraz VALUE oznaczają, odpowiednio, nazwę
i wartość danej funkcji. Przykładem rekordu tej tabeli jest „Maksymalna liczba
sesji”. Administrator, zmieniając wartość VALUE, wpływa bezpośrednio na liczbę
sesji, jaką użytkownik może maksymalnie zarezerwować.
Druga tabela, users, składa się z sześciu kolumn i przechowuje dane użytkowników. Kolumna id zawiera unikatowe identyfikatory wszystkich użytkowników.
Kolumny login, pass oraz email przechowują kolejno login, hasło i adres e-mail
każdego użytkownika. Kolumna sesje przechowuje liczbę aktualnie zarezerwowanych sesji przez każdego użytkownika, a kolumna ip adresy IPv4 użytkowników.
Trzecia tabela, times, składa się z pięciu kolumn. Kolumna idt zawiera
unikatowe identyfikatory wszystkich czasów przeznaczonych do rezerwacji.
Kolumna date zawiera informacje w postaci dat, czyli czasów, na których opiera swe
działanie proces rezerwacji czasu. Kolumna stat zawiera informację o statusie danej
daty, czyli informuje, czy dany czas jest zarezerwowany czy też nie. Kolumny idu
oraz ip zawierają dane powiązane z tabelą users, czyli – odpowiednio – identyfikator
użytkownika oraz jego adres IPv4. Dane te mają praktyczne znaczenie tylko
wówczas, gdy dany czas jest zarezerwowany.
Podsumowując, tak zdefiniowana struktura bazy danych pozwala na funkcjonowanie systemu rezerwacji czasu zgodnie z wcześniej ustalonym przeznaczeniem.
Warto jednak zwrócić uwagę na pewien aspekt tej struktury: w bazie danych nie
skorzystano z kluczy obcych (klucz obcy stanowi kolumnę lub zbiór kolumn,
będących kluczem głównym w innej tabeli [7, 8]), ze względu na to, iż nie było to
konieczne, a upraszcza to zapytania SQL kierowane do bazy danych w przypadku
niewielkiej liczby tabel. Utworzenie struktury, opartej na mechanizmach związanych z funkcjonowaniem kluczy obcych, jest jak najbardziej możliwe, jednak implementowanie określonych zależności stanowi kwestię wyboru projektanta systemu.
3. SKŁADOWE PROCESU USTANOWIENIA ZDALNEJ SESJI
Ruch pomiędzy użytkownikiem końcowym a zasobami znajdującymi się
w laboratorium, realizowany jest w ramach wirtualnej sieci prywatnej VPN (Virtual
Private Network). Jest to sieć transmitująca prywatne dane poprzez publiczną
infrastrukturę telekomunikacyjną. Transmisja taka jest powszechnie wykorzystywana – przykładowo, gdy dana firma posiada dwa, znacznie od siebie oddalone
oddziały, może zdecydować się na wykonanie między nimi połączenia VPN.
Operator telekomunikacyjny, za dodatkową opłatą, udostępnia klientowi szyfrowane
połączenie ze swojej sieci, którym może on przesyłać dane między oddziałami.
Dzięki temu, pomiędzy routerami granicznymi poszczególnych oddziałów powstaje
połączenie, przenoszące dane w ramach struktury sieci prywatnej. Zastosowana
152
ZESZYTY NAUKOWE AKADEMII MORSKIEJ W GDYNI, nr 95, listopad 2016
technologia zapewnia szyfrowanie i integralność danych oraz uwierzytelnianie obu
stron połączenia, co czyni transmisję bezpieczną [5].
W przypadku infrastruktury wykorzystywanej przez system rezerwacji czasu
wystarczy, że użytkownik końcowy połączy się w dowolny sposób z Internetem, a
następnie zaktywizuje połączenie VPN z siecią lokalną, znajdującą się
w laboratorium sieci komputerowych Akademii Morskiej w Gdyni.
Najpopularniejszym protokołem, wykorzystywanym w sieciach wirtualnych
VPN, jest protokół IPSec (IP Security). Został on opracowany przez IETF (Internet
Engineering Task Force). Protokół ten działa na poziomie protokołu IP i jest
niezależny od protokołów warstw wyższych (w odniesieniu do warstwowej struktury Internetu). Podczas transmisji danych IPSec zapewnia ich integralność
i poufność oraz udostępnia mechanizm uwierzytelniania obu stron połączenia. Dane
IPSec są transmitowane wewnątrz datagramu IP przenoszącego odpowiedni
protokół bezpieczeństwa AH lub ESP, a dopiero w kopercie jednego z tych protokołów są zawarte dane (protokoły warstw wyższych przenoszące dane).
Protokół AH (Authentication Header) zapewnia integralność przenoszonych
danych oraz nagłówka IP, wewnątrz którego jest transmitowany.
Protokół ESP (Encapsulation Security Payload) służy do szyfrowania danych
w warstwie wyższej [6].
Po ustanowieniu połączenia użytkownik może przeprowadzić zdalną sesję
zgodnie z wcześniej zarezerwowanym czasem tej sesji. O tym, czy dany użytkownik
uzyska możliwość połączenia się z zasobami laboratorium, decyduje demon
OS Linux cron.
Program cron jest demonem systemowym, który wykonuje zadane polecenia
w określonym czasie. Demon cron jest zwykle uruchamiany w trakcie ładowania
systemu.
Pliki konfiguracyjne, które sterują działaniem programu cron, noszą nazwę
crontab. Zawierają one informacje na temat czasu, daty oraz polecenia do wykonania. Są to pliki tekstowe, w których każdy wiersz składa się z sześciu pól oddzielonych spacjami. Pierwsze pięć pól określa, kiedy ma być wykonane polecenie,
natomiast szóste pole określa polecenie do wykonania. Zawartość pliku crontab
można wyświetlić za pomocą polecenia crontab -l. Ze względów bezpieczeństwa
pliki crontab, pomimo że są tekstowe, nie powinny być modyfikowane za pomocą
edytora tekstów. Celem edycji tych plików stosuje się polecenie crontab -e [1].
Na serwerze, znajdującym się w laboratorium sieci komputerowych Akademii
Morskiej w Gdyni, program cron jest uruchamiany co godzinę, zgodnie z kwantem
czasu rezerwacji. Jego zadaniem jest przeszukiwanie bazy danych celem określenia,
czy na daną godzinę jest zarezerwowana jakaś sesja. Jeżeli tak, cron modyfikuje plik
/etc/shadow (rys. 3).
K. Januszewski, P. Szelągowski, System rezerwacji czasu dostępu do zasobów laboratorium sieci…
153
Rys. 3. Mechanizm przeprowadzania zdalnej sesji – program cron
Fig. 3. A mechanism for a remote session – cron daemon
Dla każdego użytkownika, funkcjonującego w bazie danych systemu rezerwacji
czasu, znajduje się odpowiedni wpis w pliku haseł (/etc/passwd) w następującej
postaci:
login:hasło:ID_użytkownika:ID_grupy:dane:katalog_home:program
gdzie „dane” oznaczają dane osobiste, wyświetlane w OS Linux poleceniem finger.
Ponieważ pole „hasło” musi być zaszyfrowane, umieszczenie w nim pojedynczego znaku spowoduje, że logowanie na dane konto nie będzie możliwe. Jeżeli
w polu „hasło” znajduje się znak „x”, oznacza to, że używany jest dodatkowy plik
haseł – plik /etc/shadow (rys. 4). Plik ten stanowi element systemu zabezpieczeń,
dzięki któremu zwykli użytkownicy nie mogą odczytać nawet zaszyfrowanych
łańcuchów znaków, jeżeli zostaną one umieszczone w standardowym pliku haseł [3].
Rys. 4. Przykładowa zawartość pliku /etc/shadow, wyświetlona poleceniem cat – linia
reprezentująca pojedynczego użytkownika – „host10111” (login)
Fig. 4. Sample contents of the file /etc/shadow, displayed a command cat – line represents
a single user – „host10111” (login)
154
ZESZYTY NAUKOWE AKADEMII MORSKIEJ W GDYNI, nr 95, listopad 2016
Użytkownicy systemu rezerwacji sesji, których dane zapisane są w pliku
/etc/shadow, domyślnie nie mogą przeprowadzać zdalnej sesji – nie przysługują im
żadne usługi sieciowe umożliwiające zdalny dostęp. Jest to realizowane poprzez
znak „!”, poprzedzający każdy wpis w pliku /etc/shadow.
Jeżeli cron stwierdzi, na podstawie przeszukiwania bazy danych, obecność
zarezerwowanej sesji, modyfikuje plik /etc/shadow, poprzez usunięcie znaku „!”,
przy wpisie reprezentującym użytkownika, który zarezerwował sesję na daną
godzinę.
Użytkownik ma teraz czas, aby połączyć się zdalnie z zasobami laboratorium
sieci komputerowych. Po upłynięciu kwantu czasu rezerwacji (jednej godziny), plik
/etc/shadow modyfikowany jest ponownie przez proces cron.
Użytkownik, aby przeprowadzić zdalną sesję i wykonać odpowiednie operacje
na komponentach laboratorium, musi mieć możliwość emulacji terminalu tekstowego. Programów, które umożliwiają wykonanie wymienionych operacji, jest wiele.
Użytkownik może wybrać stosowny program, zgodnie z osobistymi preferencjami.
Jako przykład można podać program PuTTY, będący klientem m.in. protokołu telnet
(rys. 5).
Rys. 5. Interfejs programu PuTTY
Fig. 5. The interface of the program PuTTY
K. Januszewski, P. Szelągowski, System rezerwacji czasu dostępu do zasobów laboratorium sieci…
155
Jak wspomniano, proces nawiązania połączenia oraz uwierzytelniania użytkownika realizowany jest z wykorzystaniem protokołu TACACS+.
Protokoły RADIUS i TACACS+ są rozwiązaniami wykorzystywanymi
w komunikacji z aplikacjami, odpowiedzialnymi za uwierzytelnianie i autoryzację.
Każdy z nich oprócz weryfikowania tożsamości użytkowników realizuje również
wiele funkcji dodatkowych (rejestrowanie wprowadzanych poleceń, zapisywanie
przebiegu połączenia itp.). Obydwa są bardzo popularne, ale firma Cisco zaleca
stosowanie protokołu TACACS+. Należy jednak pamiętać, iż obydwa umożliwiają
zrealizowanie tego samego zadania. Jedną z wad mechanizmu RADIUS jest to, że
nie pozwala on na ograniczenie zestawu poleceń wykonywanych przez
użytkownika. Jeżeli więc dostępność takiej funkcji jest wymagana, należy zgodnie
z zaleceniami Cisco wybrać TACACS+ [2, 9].
PODSUMOWANIE
Prezentowany system rezerwacji czasu dostępu do zasobów laboratorium sieci
komputerowych to projekt, który zrealizowano na podstawie możliwie najskuteczniejszej funkcjonalności, przy jednoczesnym wykorzystaniu mechanizmów bezpieczeństwa, udostępnionych przez zastosowane technologie. Komunikacja pomiędzy
użytkownikiem końcowym a zasobami laboratorium, będąca przykładem transmisji
danych w architekturze klient – serwer, wymaga szczegółowej analizy każdego
etapu zestawienia takiego połączenia.
System rezerwacji czasu korzysta z wolnego oprogramowania. Serwer Apache,
serwer bazy danych MySQL, system operacyjny Linux, czy też protokoły i usługi
sieciowe, tworzą razem strukturę, której mechanizmy bardzo dobrze spełniają
zadania, postawione przed zaprojektowanym systemem na etapie planowania.
Zaprojektowany system jest także otwarty na późniejszą, ewentualną modyfikację, której fundamenty być może stworzą użytkownicy, po określonym czasie jego
funkcjonowania.
Reasumując, powstały system rezerwacji sesji spełnia wymagania, które postawiono przed nim na etapie planowania. Zbudowany na bazie infrastruktury laboratorium sieci komputerowych Akademii Morskiej w Gdyni, jest nowym elementem,
umożliwiającym użytkownikom zdobycie doświadczenia poprzez pracę zdalną.
LITERATURA
1. Camou M., Goerzen J., Van Couwenberghe A., Debian Linux. Księga eksperta, Helion, Gliwice
2001.
2. Donahue G., Wojownik sieci, wydanie II, Helion, Gliwice 2012.
3. Glass G., Ables K., Linux dla programistów i użytkowników, Helion, Gliwice 2007.
4. Januszewski K., Zdalny dostęp do zasobów laboratorium sieci komputerowych, Zeszyty Naukowe
Akademii Morskiej w Gdyni, 2015, nr 90.
156
ZESZYTY NAUKOWE AKADEMII MORSKIEJ W GDYNI, nr 95, listopad 2016
5. Karbowski M., Podstawy kryptografii, wydanie III, Helion, Gliwice 2014.
6. Krysiak K., Sieci komputerowe – kompendium, wydanie II, Helion, Gliwice 2005.
7. Welling L., Thomson L., PHP i MySQL – tworzenie stron WWW. Vademecum profesjonalisty,
wydanie IV, Helion, Gliwice 2009.
8. Zandstra M., PHP: Obiekty, wzorce, narzędzia, wydanie IV, Helion, Gliwice 2014.
Źródła internetowe
9. https://www.gnu.org/software/radius/manual/radius.html.
10. https://www.netdevgroup.com/products/.
TIME BOOKING SYSTEM OF ACCESS
TO NETWORK LAB RESOURCES
BASED ON LAMP PACKAGE
Summary
In the paper is described the infrastructure of system, which allows the users to remotely access the
network hardware and software. System is used in the teaching process while teaching the subject
"Computer Networks" and Cisco CCNA course. This system is realized on the basis for VPN and LAMP
package - is based on Open Source Software.
Keywords: computer networks, Linux, Apache, PHP, MySQL, VPN, remote access.