Domowy serwer do wielu zastosowań

Od wielu lat na rynku istnieją dedykowane rozwiązania serwerowe (NAS) do zastosowań domowych. Koszt takich urządzeń zaczyna się od 400 zł, dodatkowo należy dokupić odpowiedni dysk twardy, na którym będziemy przechowywać dane. Dla domowego budżetu to nie jest mała kwota, czy zatem istnieją tańsze rozwiązania, przeznaczone tylko dla kilku użytkowników? Wydaje się, że tak.

Właściwie funkcję domowego serwera może pełnić nawet zwykły komputer stacjonarny, bądź laptop. Zakładając, że nasze urządzenie będzie pracować przez 24 godziny na dobę – nie jest to optymalne rozwiązanie, gdyż koszt prądu będzie stosunkowo wysoki. Wśród użytkowników DIY (do it yourself, tłum. „zrób to sam”) dużą popularnością cieszy się platforma Raspberry Pi. Dużą zaletą tego urządzenia jest niski pobór prądu, jednak specyfikacja sprzętowa (do wersji 3B+) jest zbyt uboga do spełnienia naszych celów. Tylko nowszy model 4B spełnia wszystkie oczekiwania, lecz jego cena wynosi około 200 zł. Wobec tego, jakiego urządzenia szukać?

Przede wszystkim urządzenia, które będzie charakteryzowało się:

  • niskim poborem prądu (średnio do 10-25 W),
  • standardem transmisji Gigabit Ethernet,
  • magistralą SATA,
  • niewielkim kosztem zakupu.

Zwykły, niskiej klasy stacjonarny komputer zużyje średnio około 110W.
W przypadku bezustannego działania, koszty miesięczne przy aktualnej cenie prądu wyniosą wówczas w przybliżeniu 45 zł, dlatego warto szukać urządzenia o małym poborze energii. Urządzanie, którego średnia moc będzie wynosić 20W będzie kosztować nas dodatkowo 9.90 zł miesięcznie w rachunku za prąd.

Do gospodarstw domowych, budynków mieszkalnych, co raz częściej doprowadzony jest już światłowód, który zapewnia szybki, szerokopasmowy dostęp do Internetu, nierzadko z prędkością rzędu do 600 Mb/s. Wobec tego użytkowanie w domowym serwerze gniazda Fast Ethernet (100 Mb/s) jest znacznym ograniczaniem komfortu pracy, także w domowej sieci lokalnej. Gniazdo Gigabit Ethernet (1000 Mb/s) wydaje się być konieczne. Na szczęście jest już standardem i występuje nawet w kilkuletnich, używanych urządzeniach.

Domowy serwer musi spełniać swoją najważniejszą funkcję – przechowywać dane, wobec tego do urządzenia należy podłączyć dysk twardy. Można to zrobić na wiele sposobów, pożądanym wydaje się obecność gniazda SATA, bądź pokrewnych. W zależności od generacji zapewni to przepustowość do 3,0 Gb/s (SATA II). W budżetowych urządzeniach nie zawsze ten interfejs występuje, wówczas pozostaje nam na przykład gniazdo USB. W przypadku podłączenia zewnętrznego dysku wersja 2.0 zapewni przepustowość do 480 Mb/s. To znaczna różnica w stosunku do SATA. Niestety, aktualnie trudno o interfejs USB 3.0 (5 Gb/s) w tanich, używanych sprzętach.

Powyższe warunki spełniają niektóre urządzenia sklasyfikowane przez producentów jako terminale – na przykład Dell OptiPlex FX160, HP Thin Client t5570e, HP Thin Client t5740e. Charakteryzują się niskim poborem energii i małym rozmiarem. Poszczególne urządzenia mogą się różnić, warto sprawdzić dokładnie specyfikację danego terminala. W popularnym serwisie aukcyjnym często pojawiają się w sprzedaży sprowadzane z Niemiec, tanie, używane terminale firmy HP, Dell oraz Fujitsu. Nierzadko ich cena zaczyna się już od 1 zł.

W celu stworzenia domowego serwera zostanie wykorzystany model HP Thin Client t5570e, wylicytowany za kwotę 20 zł, który posiada:

  • procesor VIA Nano U3500 1 GHz (pobór energii do 5 W),
  • pamięć 1 GB DDR3 SDRAM PC3-6400 800 MHz
    (jedno gniazdo, rozszerzalne do 2 GB),
  • dysk 4 GB flash,
  • Gigabit Ethernet,
  • gniazdo SATA II na płycie głównej,
  • wymiary około 22 cm x 21 cm x 6 cm,
  • zasilacz 65W 19V 3.43A z wtyczką 4.8 mm x 1.7 mm.
HP Thin Client t5570e – zdjęcie poglądowe

Powyższa maszyna będzie domowym serwerem NAS, lokalną biblioteką zasobów multimedialnych dla programów Kodi oraz Jellyfin, klientem OpenVPN, serwerem monitoringu, a w przyszłości domową stacją pogodową. Możliwości jest bardzo wiele.

Na urządzeniu domyślnie zainstalowany jest system Microsoft Windows Embedded Standard 7 w niemieckiej wersji językowej, na obudowie znajduje się nawet oryginalna nalepka wraz z kluczem licencyjnym. Ze względu na zapotrzebowanie konieczna jest instalacja systemu Ubuntu Server. W dokumentacji systemu nie ma informacji o oficjalnym wsparciu dla procesorów z serii 3000 – VIA Nano. Producent procesorów twierdzi, że oparte są one 64-bitowej architekturze.

Instalacja Ubuntu Server 18.04

Najnowszą wersję systemu Ubuntu Server można pobrać z oficjalnej strony internetowej.

https://ubuntu.com/download/server

Należy pamiętać, aby była to wersja z odpowiednio długim czasem wsparcia technicznego, oznaczona jako LTS (long-term support). Aktualnie jest to wersja o numerze 18.04.3, przeznaczona tylko dla urządzeń z procesorami w architekturze 64-bit.

Po odpowiedniej konfiguracji, na urządzeniu HP Thin Client t5570e instalacja systemu możliwa jest bezpośrednio z nośnika USB. Do utworzenia „bootowalnego” pendrive zaleca się użycie programu Rufus, którego można ściągnąć z poniższej strony internetowej.

https://rufus.ie/

Przed instalacją systemu, należy w BIOS urządzenia – ustawić odpowiednią hierarchię kolejności odczytywania dysków. Na pierwszym miejscu, tylko na potrzeby instalacji powinien znajdować się „USB Flash Disk”.

Wgrywanie systemu Ubuntu Server zazwyczaj przebiega bezproblemowo, jednak czasami podczas procesu instalacji systemu może pojawić się problem z formatowaniem partycji wbudowanego w urządzeniu dysku „flash„. Jeżeli wcześniej znajdował się na nim system Windows Embedded 7, to istnieje wysokie prawdopodobieństwo, że aktualny system plików to exFAT, z którym instalator Ubuntu ma problem. Wobec czego przed uruchomieniem instalatora należy usunąć wszystkie stare partycje. Można to zrobić z konsoli, uruchamiając wcześniej system w trybie „live„.

Aby zobaczyć listę dysków oraz partycje należy w konsoli użyć poniższej komendy.

sudo fdisk -l 

Następnie, polecenie uruchomić program do zarządzania partycjami.

sudo parted

Wybór odpowiedniego dysku.

select /dev/sda 

Zamiast „/dev/sda” może być to inna nazwa, w zależności od liczby dysków w komputerze. Dalej, aby zobaczyć listę partycji oraz ich numery, używamy poniższej komendy.

p

Usunięcie dwóch lub więcej partycji.

rm 1
rm 2

Wyjście z programu.

q

W celu weryfikacji poprawności usunięcia partycji, można jeszcze raz zweryfikować listę.

sudo fdisk -l

Po wykonaniu powyższych czynności można przystąpić do instalacji systemu Ubuntu Server.

W trakcie instalacji, przy wyborze oprogramowania warto zaznaczyć dwie opcje:

  • OpenSSH server
  • Samba file server

Oba pakiety programów będą potrzebne do dalszej konfiguracji maszyny, jednakże można doinstalować je później. W trakcie instalacji systemu warto podłączyć urządzenie do Internetu, aby instalator w trakcie wgrywania pobrał wszystkie najnowsze pakiety. Należy zawsze używać mocnych haseł. Proces instalacji jest bardzo prosty i odbywa się w języku polskim.

W razie kłopotów, pomocą służy Google. „Jak zainstalować Ubuntu Server 18.04?”

Ważne czynności po instalacji systemu

Po instalacji Ubuntu Server, aby w pełni zabezpieczyć serwer należy przeprowadzić kilka niezbędnych czynności.

  1. aktualizację oprogramowania
  2. zmianę portu protokołu SSH
  3. ustawienie zapory sieciowej
  4. instalację programu fail2ban
  5. sprawdzić ustawienia lokalizacyjne
  6. instalację opcjonalnych programów
1. Aktualizacja oprogramowania

Niezwłocznie po instalacji systemu należy zaktualizować wszelkie pakiety. W tym celu w konsoli należy skorzystać z opcji:

Aktualizacja listy pakietów.

sudo apt update

Instalacja aktualizacji.

sudo apt upgrade

Usuwanie niepotrzebnych w systemie pakietów.

sudo apt autoremove

Po wykonaniu powyższych czynności można zresetować serwer.

sudo reboot
2. Zmiana portu protokołu SSH

OpenSSH jest najpopularniejszym narzędziem umożliwiającym zdalne logowanie za pomocą protokołu SSH. Jest to niezbędne narzędzie do dalszej pracy i konfiguracji serwera. Jeżeli narzędzie nie zostało zainstalowane razem z instalacją systemu Ubuntu Server, należy zainstalować je ręcznie.

sudo apt install openssh

Jeżeli serwer nie będzie dostępny publicznie, na tym można zakończyć, w przeciwnym wypadku, zaleca się zmianę portu protokołu SSH.

Dlaczego należy zmieniać port SSH?

Domyślnym portem protokołu SSH jest 22. Przeniesienie portu SSH chroni serwer przed zautomatyzowanymi atakami. W przypadku niezmienionej wartości trzeba liczyć się z tym, że w dzienniku zdarzeń systemowych pojawią się liczne wpisy świadczące o tym, że z różnych nieznanych nam adresów IP – nastąpiła nieudana próba zalogowania się do systemu, głównie z azjatyckich numerów IP. Gdy zmienimy port, zminimalizujemy ilość takich prób.

Na jaki numer portu należy zmienić protokół SSH?

Na port mniejszy niż 1024. Ważne jest przy tym, aby nie powodował konfliktów z innymi protokołami. Cześć portów jest zarezerwowana już na inne usługi systemu.

Listę standardowych usług można podglądnąć na Wikipedii.

https://pl.wikipedia.org/wiki/Port_protoko%C5%82u

Na przykład dla HTTP są to porty o numerach 80, 443. Można również używać portów większych od 1024, należy jednak uważać przy tym na innych, lokalnych użytkownikach serwera. Mogą oni spowodować atak DoS, nasłuchując na tym porcie. Nie stanowi to problemu, gdy dostęp do serwera ma zaufane, małe grono.

Najlepszym wyborem wydaje się port 224.

Aby zmienić port należy edytować plik konfiguracyjny serwera SSH.

sudo nano /etc/ssh/sshd_config

Następnie znaleźć linijkę.

Port 22

Zamienić ją na:

Port 224

Następnie zapisać plik i dokonać restartu usługi SSH poprzez:

sudo systemctl restart ssh

Po zmianie portu usługi, należy pamiętać, aby otworzyć ten port w ustawieniach zapory sieciowej.

3. Ustawienia zapory sieciowej

Domyślnie za ustawienia filtrowania pakietów odpowiada program iptables, jednak dla niektórych użytkowników może wydawać się skomplikowany w obsłudze, wobec tego korzystniejszym rozwiązaniem jest korzystanie z ufw, który domyślnie jest wyłączony.

Włącznie programu.

sudo ufw enable

Sprawdzenie statusu działalności.

sudo ufw status

Włącznie możliwości korzystania z protokołu 224 dla połączeń przychodzących.

sudo ufw allow 224

W ten sposób można włączyć wiele innych portów.

4. Instalacja programu fail2ban

fail2ban – to program, który monitoruje określone pliki dziennika zdarzeń systemowych pod kątem nieudanych prób logowania do systemu, następnie blokuje te adresy IP dodając nowe regułę do iptables.

Instalacja programu.

sudo apt install fail2ban

Uruchomienie usługi.

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

Plik konfiguracyjny programu znajduje się w lokalizacji:

/etc/fail2ban/jail.local

Jeżeli jest pusty, bądź nie istnieje należy go utworzyć z poniższą zawartością.

[sshd]
enabled = true
port = 224
filter = sshd
logpath = /var/log/auth.log
maxretry = 3

Właściwość maxretry = 3, powoduje blokadę adresu IP po trzech nieudanych próbach logowania.

Po zapisaniu pliku, należy zrestartować usługę:

sudo systemctl restart fail2ban

Kolejne kroki już niebawem…

W kolejnych wpisach zamieszczę informację, o tym jak na tym urządzeniu:

  • uruchomić serwer plików SAMBA,
  • skonfigurować urządzenie jako klient OpenVPN,
  • uruchomić serwer monitoringu z wykorzystaniem zwykłej kamerki internetowej na USB,
  • przechowywać lokalną konfigurację programu KODI,
  • uruchomić serwis Jellyfin (własny Netflix),
  • własna stacja pogodowa z wykorzystaniem Arduino.