Serwer Ubuntu – Podstawowa konfiguracja (statyczny adres IP, połączenie SSH)

Zarządzanie serwerem w dowolnej sytuacji i z dowolnego komputera wymaga odrobiny przygotowań. Przede wszystkim należy ustalić pod jakim adresem serwer będzie widoczny w sieci, następnie należy skonfigurować serwer tak, aby faktycznie był widoczny pod wskazanym adresem. Na końcu trzeba przetestować działanie połączenia SSH na innym komputerze. Dopiero wtedy możemy być pewni, że zawsze uzyskamy dostęp do obsługi serwera w sposób zdalny.

Ustawienie statycznego adresu IP

Zmiana adresu IP serwera na statyczny jest bardzo ważna. Najczęściej serwer jest urządzeniem, które zostaje podłączone do sieci bez monitora i klawiatury w miejscu, które nie będzie nikomu przeszkadzało. Zarządzanie systemem w takiej sytuacji wymagałoby każdorazowo podpięcia monitora i klawiatury, co byłoby uciążliwe. Rozwiązaniem jest połączenie zdalne, które można zrealizować z dowolnego komputera podpiętego do tej samej sieci. Jest tylko jeden haczyk – musimy wiedzieć, do jakiego komputera chcemy się podłączyć. W tym celu skorzystamy ze stałego (statycznego) adresu IP. Dzięki takiej konfiguracji serwer będzie zawsze dostępny pod tym samym adresem i nie będzie konieczne poszukiwanie go w sieci.

W celu nadania adresu IP serwerowi należy wykonać kilka kroków:

  • ustalenie, jaki jest zakres adresów sieci lokalnej,
  • przeskanowanie sieci pod kątem aktywnych urządzeń,
  • wybranie wolnego adresu i nadanie go serwerowi.

Sprawdzenie przydzielonego adresu IP

Zacznijmy od sprawdzenia, jaki jest adres IP sieci, w której pracujemy. Mając do dyspozycji jedynie dopiero co zainstalowany system Ubuntu Server należy skorzystać z odpowiednich komend. Sprawdzenie nadanego automatycznie adresu IP wykonujemy poprzez wpisanie komendy:

ip addr show

Komenda ta wyświetli wszystkie dostępne połączenia sieciowe, natomiast przy aktywnym wyświetli informację o przydzielonym automatycznie adresie IP. Za przydzielanie adresów IP odpowiedzialny jest router, do którego podpiąłeś serwer (a dokładniej serwer DHCP). W moim przypadku adres IP, który został przydzielony automatycznie dla karty sieciowej enp11s0 to 192.168.100.19/24.

Oznacza to, że serwer należy do podsieci 192.18.100.XXX z 24 bitową maską (255.255.255.0) i otrzymał adres urządzenia .19. Przydzielanie adresu poprzez DHCP oznacza jednak, że po wyłączeniu serwera i włączeniu np. laptopa otrzyma on pierwszy wolny adres z puli, który może być adresem przydzielonym wcześniej serwerowi i po kolejnym uruchomieniu serwera adres IP zmieni się. Spowoduje to, że nie uzyskamy dostępu zdalnego do konfiguracji serwera czy nie otworzymy udostępnionych katalogów.

Rozwiązaniem jest ustawienie adresu statycznego, który znajdzie się w tej samej podsieci. W moim przypadku będzie to adres z zakresu 192.168.100.1 – 192.168.100.255. Z założenia nie przydzielany urządzeniom pierwszego i ostatniego adresu, gdyż pierwszy (XXX.XXX.XXX.1) to najczęściej adres routera, a ostatni (XXX.XXX.XXX.255) bywa używany jako adres rozgłoszeniowy. Zostaje więc zakres 192.168.100.2 – 192.168.100.254. Należy jednak pamiętać, że dwa urządzenia w sieci nie mogą posiadać takiego samego adresu IP, gdyż nastąpi konflikt sieciowy.

Skanowanie sieci lokalnej

W celu upewnienia się, że nie nadajemy urządzeniom tego samego adresu IP warto jest przeprowadzić skan sieci lokalnej. Pomoże w tym narzędzie nmap. Aby z niego skorzystać zainstaluj narzędzie w systemie:

sudo apt install nmap

Po zainstalowaniu wpisz komendę (oczywiście w miejsce adresu IP wstaw swój lokalny adres IP podmieniając ostatnią grupę na znak gwiazdki):

sudo nmap -sn ‘192.168.100.*’

Wynik skanowania pokaże listę adresów, które odpowiedziały w danej chwili w sieci lokalnej:

W moim przypadku zajęte są adresy: 192.168.100.1, 192.168.100.2, 192.168.100.3 oraz 192.168.100.12. Dla łatwego zapamiętania adresu serwera w sieci lubię nadawać proste adresy, więc w tym przypadku nadam serwerowi adres 192.168.100.111 – trzy jedynki będzie bardzo łatwo zapamiętać.

Zmiana adresu IP

Gdy wiem już jaki adres IP chciałbym nadać serwerowi mogę przejść do konfiguracji adresu statycznego. Konfiguracja adresu IP w systemie Ubuntu przechowywana jest w pliku konfiguracyjnym zapisanym w katalogu netplan. Aby zmienić adres IP należy skorzystać z edytora tekstu (np. nano) i wyedytować plik konfiguracyjny. Aby to zrobić należy skorzystać z polecenia:

sudo nano /etc/netplan/*.yaml

System otworzy plik konfiguracyjny, w którym zapisana jest konfiguracja każdego interfejsu dostępnego w komputerze (serwerze). Obecnie każdy z portów posiada konfigurację, dzięki której adres IP jest przydzielany automatycznie przez serwer DHCP.

W celu wprowadzenia statycznego adresu IP należy wprowadzić poniższą konfigurację:

enp11s0:

dhcp4: no
addresses: [192.168.100.111/24]
gateway4: 192.168.100.1
nameservers:

addresses: [1.1.1.1, 8.8.8.8]

W  miejscu [192.168.100.111/24] wpisz swój adres IP, natomiast w linii gateway4: wpisz adres bramy domyślnej sieci lokalnej (najczęściej XXX.XXX.XXX.1). Bardzo ważne jest zachowanie stopniowania wprowadzanych danych (niektóre linie są przesunięte o dwie spacje względem linii powyżej). Bez zachowania stopniowania system nie odczyta poprawnie konfiguracji sieciowej.

Po wprowadzeniu zmian wciśnij kombinację klawiszy Ctrl+O, a następnie zatwierdź zmiany klawiszem Enter. Następnie wyjdź z edytora nano kombinacją klawiszy Ctrl+X. Konfiguracja została zapisana, lecz nie jest jeszcze wprowadzona. W tym celu wpisz polecenie:

sudo netplan apply

Dla zweryfikowania poprawności zmiany adresu IP wpisz ponownie polecenie ip addr show, a następnie sudo apt update, aby zobaczyć, czy serwer ma połączenie z siecią. Jeśli wszystko pójdzie w porządku na ekranie powinien pojawić się efekt podobny do poniższego.

Serwer jest gotowy do pracy w sieci z wykorzystaniem stałego adresu IP. Od tej pory zawsze znajdziemy serwer w sieci używając wskazanego, statycznego adresu IP.

Konfiguracja SSH

Pierwszą rzeczą, jaką warto zweryfikować jest konfiguracja połączenia SSH wykorzystującego narzędzie OpenSSH. Narzędzie to było zainstalowane razem z systemem i domyślnie działa od razu po uruchomieniu systemu, lecz drobna konfiguracja pozwoli na dopuszczenie do połączenia jedynie wskazanych użytkowników, rozszerzy zakres pliku LOG oraz pozwoli na stworzenie banneru z wiadomością dla użytkowników łączących się zdalnie.

Backup pliku konfiguracyjnego

W przypadku pracy z konfiguracją OpenSSH warto zrobić kopię zapasową pliku konfiguracyjnego. W razie kłopotów z działaniem usługi wystarczy przywrócić plik z backupu i skonfigurować go na nowo. W tym celu rozpocznij od przejścia do katalogu OpenSSH, następnie utwórz katalog na backup, skopiuj plik konfiguracyjy i na koniec zablokuj jego edycję.Aby to zrobić wpisz kolejno polecenia:

cd /etc/ssh
sudo mkdir sshd_config_backup
sudo cp /etc/ssh/sshd_config /etc/ssh/sshconfig_backup/sshd_config
sudo chmod a-w /etc/ssh/sshd_config_backup/sshd_config

Po przejściu do lokalizacji backupu i wpisaniu polecenia ls -al powinna wyświetlić się lista zawierająca jeden plik tylko z możliwością odczytu.

Dodanie dozwolonych użytkowników

Gdy plik konfiguracyjny jest zabezpieczony możemy przystąpić do jego edycji. W tym celu należy wpisać polecenie:

sudo nano /etc/ssh/sshd_config

Następnie należy przejść na sam koniec dokumenty i dopisać wiersz:

AllowUsers raccoon

W tym przypadku “raccoon” to przykład użytkownika, który u mnie pełni rolę administratora. U siebie wpisz w tym miejscu własną nazwę użytkownika.

Po wprowadzeniu zmian zapisz dokument kombinacją klawiszy Ctrl+O.

Rozszerzenie zakresu LOG

Domyślnie w dzienniku LOG zapisywana jest informacja o tym kto i kiedy się logował, co może dać dość ograniczony podgląd na informacje o historii serwera. Polecam rozszerzenie zakresu pliku LOG o zapisywanie wszystkich sesji wraz z historią wprowadzanych poleceń. W takiej sytuacji po zaobserwowaniu nieprawidłowości w działaniu serwera możliwe jest przejrzenie plików LOG i spojrzenie na niedawne zmiany w systemie, aplikacjach lub konfiguracji. Aby to zrobić należy w pliku sshd_config odnaleźć linię #LogLevel INFO, a następnie usunąć hasztag i zmienić zapis na:

LogLevel VERBOSE

Po wprowadzeniu zmian wystarczy zapisać dokument wciskając kombinację klawiszy Ctrl+O, a następnie wyjść z dokumentu wciskając Ctrl+X.

Baner informacyjny

Ciekawa opcja, jaką daje połączenie zdalne z serwerem poprzez SSH to wyświetlenie baneru informacyjnego. Dzięki bannerowi możemy przekazać najważniejsze informacje, które zabezpieczą dodatkowo maszynę przed niepowołanymi zmianami. Osobiście zawsze umieszczam w bannerze informację o kontroli poprzez zapisywanie adresu IP oraz dokładnego pliku LOG. W ten sposób osoba niepowołana być może zastanowi się przed dokonaniem zmian. Oczywiście jest to sytuacja skrajnie mało prawdopodobna, jeśli stawiasz serwer domowy dostępny w sieci lokalnej, ale warto poznać metodę, dzięki której taki baner zostanie wyświetlony.

W tym celu należy otworzyć ponownie plik konfiguracyjny sshd_config:

sudo nano /etc/ssh/sshd_config

Następnie należy odnaleźć linię opisującą baner i zmienić ją na:

Banner /etc/issue.net

Następnie należy zapisać dokument (Ctrl+O) i wyjść z dokumentu (Ctrl+X). W ten sposób wskazaliśmy w pliku konfiguracyjnym skąd powinien wczytywać tekst baneru. Kolejnym krokiem jest wyedytowanie pliku issue.net i wpisanie w jego treści naszego komunikatu. Zaczynamy od przejścia do katalogu, w którym znajduje się plik.

cd /etc/

Po przejściu do katalogu należy odblokować możliwość edytowania pliku, a następnie otworzyć go do edycji.

sudo chmod a+w issue.net
sudo nano issue.net

Po otworzeniu dokumentu możliwe będzie wpisanie treści baneru. W moim przypadku wygląda to jak poniżej:

Po wpisaniu treści należy zapisać dokument (Ctrl+O), a następnie wyjść z okna edycji (Ctrl+X). Od teraz podczas łączenia się z serwerem poprzez SSH użytkownik zobaczy powyższy komunikat.

Połączenie zdalne

Jedną z podstawowych metod łączenia się z serwerem poprzez SSH dla użytkowników Linuxa jest skorzystanie z terminala i wpisanie polecenia:

ssh -p AA user@XXX.XXX.XXX.XXX

Gdzie AA to port, XXX.XXX.XXX.XXX to adres IP serwera, natomiast user to nazwa użytkownika. Przykładowe polecenie:

ssh -p 22 raccoon@192.168.100.111

Aby polecenie zadziałało poprawnie konieczne jest zainstalowanie w systemie, z którego się łączymy, pakietów ssh i sshpass. Obydwa pakiety można zainstalować wpisując:

sudo apt install ssh -y; sudo apt install sshpass -y

Jeśli pakiety ssh są zainstalowane i podane dane do łączenia są poprawne na ekranie powinien pojawić się komunikat serwera (baner) oraz pytanie o hasło.

Po wpisaniu hasła serwer będzie dostępny do konfiguracji.

Połączenie przez PuTTY

Połączenie z serwerem przez terminal jest najszybsze, ale za każdym razem konieczne jest wpisywanie adresu IP oraz portu serwera. Osobiście dla wygody korzystam z oprogramowania PuTTY, gdzie mogę zapisać najczęściej używane dane do połączenia z serwerem, a następnie szybko je wczytać. Dodatkowa przewaga dla wielu użytkowników interfejs graficzny – wszystko można wyklikać. Aby zainstalować PuTTY na swoim komputerze z systemem Linux należy uruchomić terminal i wpisać polecenia:

sudo apt install putty

sudo apt install putty-tools

Program PuTTY będzie od tej pory dostępny w systemie jako standardowa aplikacja. Po uruchomieniu należy wpisać dane serwera (adres IP oraz port), następnie podać nazwę połączenia, po czym można kliknąć przycisk “Save”, aby zapisać dane sesji.

Po zapisaniu danych możliwe jest kliknięcie przycisku “Open”, który otworzy połączenie z serwerem. Po chwili powinien zostać wyświetlony monit pytający o to, czy chcemy zaakceptować klucz hosta dla tego połączenia. W celu kontynuowania pracy należy kliknąć przycisk “Accept”.

Po zaakceptowaniu należy podać nazwę użytkownika oraz hasło. Połączenie powinno zostać ustanowione a użytkownik powinien uzyskać dostęp do zarządzania serwerem.

Podsumowanie

Przejście przez powyższe instrukcje i wykonanie wszystkiego krok po kroku powinno pozwolić użytkownikowi na skonfigurowanie serwera w taki sposób, aby był zawsze dostępny pod wskazanym adresem IP (nie ważnie do którego gniazda w sieci wewnętrznej zostanie podłączony) oraz aby zawsze  miał do niego pełny dostęp poprzez połączenie SSH. W kolejnym artykule rozpiszę krok po kroku proces instalacji i konfiguracji Samby w taki sposób, aby wyznaczony katalog służył jako dysk sieciowy dla innych urządzeń w sieci.

 

4 Comments

  1. Zauważyłem, że twój blog jest miejscem wielu inspirujących cytatów. Czy korzystasz z nietypowych źródeł, aby znaleźć unikalne sentencje, które dodają głębi twoim wpisom?

    1. To bardzo miłe, dziękuję. Treści na Strefie są tworzone zawsze w stu procentach przeze mnie, bez próby naśladowania żadnego ze stylów widocznych w innych miejscach. Styl wypracowywałem na przestrzeni lat tworząc projekty, które już niestety nie istnieją (pisałem o grach na PS3 i GBA, prowadziłem kilkanaście miesięcy portal informacyjny o CS:GO, napisałem też kilka scenariuszy do filmów na YouTube o tematyce gamingowej). Myślę, że bardzo ważnym czynnikiem jest fakt pisania tylko o tym, co uważam za naprawdę przydatne i w co sam wierzę. Nie próbuję zapełnić strony treścią, lecz przekazać jak najwięcej czystej wiedzy.

  2. Treść jest klarowna, dobrze zorganizowana i pełna przydatnych wskazówek. Autor doskonale wyjaśnia kluczowe zagadnienia. Może warto by dodać więcej przykładów praktycznych. Pomimo tego, tekst jest niezwykle edukacyjny i inspirujący.

    1. Bardzo się cieszę, że poradnik przypadł do gustu. Pracuję już nad przykładem w praktyce – serwer oparty o Ubuntu na Raspberry z dostępem zdalnym po GSM i zasilaniem solarnym. Coś w stylu samowystarczalnego, niezależnego hosta. Zobaczymy co z tego wyjdzie w praktyce 🙂

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *