Wprowadzenie do VPS

1. Co to jest server VPS? (Virtual Private Server)

Wirtualny serwer prywatny (VPS) to idealne rozwiązanie dla tych, którzy potrzebują większej kontroli i elastyczności niż w przypadku tradycyjnego hostingu. VPS zapewnia dedykowane zasoby, większe bezpieczeństwo(poprawnie skonfigurowany) i wydajność. To doskonały wybór dla rozwijających się firm, programistów i stron o dużym ruchu. Dzięki VPS możesz łatwo skalować swoje zasoby, zarządzać aplikacjami i cieszyć się niezależnością serwera dedykowanego w przystępnej cenie.

2. Dlaczego wybrać VPS zamiast Hostingu Współdzielonego?

Wybór VPS zamiast hostingu współdzielonego zapewnia większą wydajność, bezpieczeństwo i elastyczność. VPS daje dedykowane zasoby, co eliminuje ryzyko spadku wydajności przez innych użytkowników. Oferuje także pełną kontrolę nad konfiguracją serwera i możliwość dostosowania zasobów do indywidualnych potrzeb. Idealny dla stron o większym ruchu i firm, które potrzebują stabilności oraz lepszej ochrony danych.

Ponad to kiedy korzystamy z usług Hostingu Współdzielonego jestesmy w stanie uruchomić tylko jedną aplikację, przypisaną do danego hostingu. Jesteśmy w ten sposób ograniczeni technologicznie oraz kosztowo. Aktualnie ceny Hostingów Współdzielonych zaczynają się zazwyczaj od 100 zł za rok, natomiast taniego VPS będziemy w stanie dostać już nawet od 260 zł za rok.

Spytacie się, gdzie pojawia się ta oszczędność VPS nad Hostingiem Współdzielonym?Otóż, tak jak wspominałem wcześniej, na Hostingu Współdzielonym jesteśmy w stanie odpalić tylko jedną stronę internetową, natomiast VPS umożliwia nam hostowanie nieograniczonej ilości stron, którą ograniczają tylko nasze zasoby systemowe.

Warto również na sam konieć wspomnieć o bardzo ważnym aspekcie jakimi są ograniczenia technologiczne Hostingów Współdzielonych. Ponad 90% providerów Hostingów Współdzielonych w głównej mierze nastawiona jest na obsługę aplikacji typy Wordpress, przez co może się okazać niemożliwe uruchomienie na takie usłudze aplikacji opartych o technologie typu React, Laravel, Django czy .NET

3. Gdzie zakupić serwer VPS?

Zakup serwera VPS warto rozważyć u renomowanych dostawców, takich jak OVH, Hetzner, Hostinger, Google czy DigitalOcean. Kluczowe kryteria to niezawodność, wydajność oraz wsparcie techniczne. Koniecznie zwróć uwagę na lokalizację serwerów, opcje skalowalności i dostępność dodatkowych usług, takich jak backupy, zewnętrzny firewall i ochrona DDoS. Porównaj oferty i zdecyduj się na rozwiązanie adekwatne do Twoich potrzeb.

Osobiście obsługuję swoich klientów za pomocą rozwiązań firmy Hostinger (artykuł niesponsorowany, niestety...).

Firma ta oferuje oferuje nam VPS w bardzo przystępnych cenach. Do wyboru mamy lokacje serwerów na całym świecie. Dodatkowo mamy dostęp do takich funkcjonalności jak Zewnętrzny Firewall, Tygodniowe Backupy(w cenie), Podstawowy monitoring serwera, czy podstawowego antywirusa.

Kup serwer VPS

Logowanie i aktualizacja Linuxa

Zanim zaczniesz działania z VPS

Zanim rozpoczniemy bezpieczną konfigurację naszego serwera VPS musisz mieć z tyłu głowy jedną bardzo ważną kwestię, mianowicie fakt, że Linux jako system oepracyny posiada bardzo wiele różnych dystrybucji, które różnią się nie tylko zastosowaniami, ale również i architekturą. Oznacza to, że w zależności od wybranej dystrybucji może okazać się konieczne wykorzystywanie innych komend w celu wykonania danych operacji.

Osobiście używam systemu Ubuntu i niniejszy tutorial został napisany z myślą o użytkownikach tego systemu. Jeśli kożystasz z innej dystrybucji Linuxa nic jeszcze nie zostało stracone.

W dalszym ciągu możesz wykrozystać niniejszy materiał jednakże samodzielnie będziesz musiał znaleźć w kilku miejscach adekwatne komendy dla twojej dystrybucji systemu operacyjnego.

Ponadto niniejszy artykuł zakłada, że posiadasz już dokonany deployment swojego Linuxa i jesteś w stanie zalogować się do niego za pomocą SSH.

Jeśli nie wiesz jak samodzielnie dokonać takiej czynności zapraszam Cię do niniejszego artykułu w którym razem, krok po kroku instalujemy naszego Linuxa na serwerach zewnętrznego Dystrybutora Serwerów VPS

1. Jak zalogować się do Linuxa? (SSH)

SSH (Secure Shell) to protokół sieciowy zapewniający bezpieczną komunikację między komputerami. Umożliwia zdalne logowanie, zarządzanie serwerami i przesyłanie plików, chroniąc dane dzięki szyfrowaniu. SSH jest niezastąpiony dla administratorów systemów i programistów, gwarantując prywatność i integralność informacji. Jest standardowym narzędziem w zarządzaniu serwerami, stosowanym w różnych środowiskach IT.

W celu pierwszego zalogowania się do swojej maszyny wykonaj komendę (Użyj terminala np. Powershell lub Terminus)

ssh -p 22 root@ip-naszego-vps

W trakcie pierwszego logowania zostaniesz poproszony o potwierdzenie utworzenia kluczy. Po akceptacji zostaniesz połączony ze swoim serwerem.

Logowanie jako Root

Aktualnie dokonałeś logowania do swojego serwera VPS jako Root (Super User). Praktyka taka nie jest nigdy zalecana, póki nie jesteś zaawansowanym użytkownikiem. Mimowszystko jest ona wymagana przy pierwszej konfiguracji naszego serwera.

W późniejszym etapie zaimplementujemy podstawowe zasady bezpieczeństwa, całkowicie blokując możliwość zalogowania się zdalnie do systemu jako Root.

2. Jak zaktualizować system Linux? (Ubuntu)

Pierwszym krokiem po zalogowaniu do nowej maszyny powinna być jej aktualizacja. Jeśli poznałeś już podstawy Linuxa poniższe komendy nie powinny być Ci obce.

sudo apt update && sudo apt upgrade -y

Nie znasz jeszcze komend Linuxa?

Na początku Twojej przygody z Administracją Linuxem wiele komend może być Ci obcych i niezrozumiałych.
Nie obawiaj się tego, samemu jak zaczynałem również wielu rzeczy nie znałem. Na szczęście zyjemy w czasach z dostepem do internetu :)
W internecie dostpenych jest wiele aplikacji typu Shell Explain!

Przejdź do serwisu shell.how →

Konfiguracja Zapory Sieciowej Linux (Firewall)

Zanim zaczniesz działania konfigurację Firewall'a

Zapora sieciowa jest podstawowym narzędziem do kontrolowania ruchu przychodzącego i wychodzącego z Twojego serwera. Jest ona pierwszym elementem całego systemu do którego docierają wszelkie zapytania kierowane na Twój serwer VPS. Poprawnie skonfigurowana zapora sieciowa jest w stanie niemalże całkowicie zabezpieczyć nasz system, ale i również w przypadku zbyt agresywnego jej zaprogramowania możemy zablokować dostęp do naszych aplikacji sieciowych.

Zanim przejdziemy do sedna sprawy, warto abyś wiedział, że wyróżniamy 2 typy firewall-ów:

  • Firewall Zewnętrzny (np. ten od dostawcy VPS)
  • Firewall Wewnętrzny (aktywny bezpośrednio na naszym Linuxie)
Konfiguracja Firewalla Zewnętrznego + Wewnętrzengo

Zapora sieciowa działa jako swego rodzaju filtr przez który przechodzą wszystkie zapytania kierowane na nasz serwer. To od nas zalezy na jaki ruch zezwolimy. Konfiguracja zapory w głównej mierze opiera się na dostepie do poszczególnych Portów naszego systemu.

Gdybyś miał problemy z uruchomieniem jakieś aplikacji na serwerze produkcyjnym upewni się w pierwszej kolejności, że port na któym nadaje dana aplikacja nie jest zablokowany przez jeden z wyżej wymionych Firewall’i

1. Jak skonfigurować zewnętrzny firewall?

Jeśli Twój provider serwera VPS nie posiada w swojej ofercie Zewnętrznego Firewalla możesz bez żadnych przeszkód pominąć ten etap.
Nie jest on konieczny, z uwagi na fakt, że wewnętrzna Linuxowa implementacja Firewall’a powinna być w 100% wystarczalna.

Zewnętrzny Firewall pełni funkcję dodatkowego zabezpieczenia, które ułatwia pracę w głównej mierze za pomocą GUI.

Poniżej znajduje się przykładowa konfiguracja mojego zewnętrznego firewalla u providera Hostinger.

  • Blokuje ona dostępy do wszystkich dostępnych portów TCP oraz UDP
  • Otwiera porty 80 i 443 (Aplikacje Webowe)
  • Otwiera port 22 dla wskazanego adresu IP (SSH z filtrem IP)
Konfiguracja Firewalla Wewnętrznego

2. Jak skonfigurować firewall Linux? (UFW)

Przyszła pora na to co tygrysy lubią najbardziej, czyli powrót do starego i sprawdzonego Command Line’a.
Poniżej zaimplementujemy dokładnie to samo rozwiązanie co w Zewnętrznym Firewall’u.

W tym celu wykorzystamy uproszczony interfejs zarządzania Firewall’em Linuxa zwany UFW (Uncomplicated Firewall)
Dokonamy następujących czynności:

  • Zablokujemy wszystkie połączenia przychodzące
  • Odblokujemy wsyzstkie połączenia wychodzące
  • Zezwolimy na dostęp do SSH (Port 22)
  • Zezwolimy na dostep do portów 80 i 443

Instalacja Uncomplicated Firewall

sudo apt install ufw

Konfiguracja podstawowych reguł UFW

sudo ufw default deny incomingsudo ufw default allow outgoingsudo ufw allow sshsudo ufw allow 80/tcpsudo ufw allow 443/tcp

Włączenie UFW

sudo ufw enablesudo ufw status

Tym sposobem udało nam się skonfigurować nasz wewnętrzny Firewall w bezpieczny sposób. Zablokowalismy dostęp do wszystkich portów i zezwoliliśmy tylko na dostep do SSH (Port 22) oraz portów 80, 443 na których w przyszłości będzie nasłuchiwało nasze Reverse-Proxy w celu Hostowania naszych aplikacji webowych.

Filtracja IP dla Portu SSH(22)

Jeśli zdecydujesz się na implementację dostępu do portu 22 tylko za pomocą wybranych IP za pomocą UFW możesz stracić dostęp do swojego serwera

Stać się może tak w przypadku kiedy dostawca Twójego internetu rotuje adresami IP. Zanim zdecydujesz się na taki zabieg, upewni się w 100%, że Twój adres IP jest statycznie zdefiniowany.

W przypadku gdyby okazało się, że Twój adres IP jestdynamiczny, zawsze możesz zaimplementować filtrację IP dla Portu SSH(22) za pomocą Zewnętrzengo Firewall'a.

Nowy Użytkownik z uprawnieniami sudo + SSH Key

1. Jak utworzyć nowego użytkownika sudo Linux?

Użytkownik z uprawnieniami sudo inaczej nazywany jest Superuserem, ze względu na fakt posiadania możliwości wykonywania akcji zarezerwowanych tylko dla Roota. Konto które posiada takie uprawnienia można nazwać mianem konta administracyjnego.

Utwórz nowego użytkownika

sudo adduser nazwa-użytkownika

Nadaj uprawnienia do komendy sudo nowemu użytkownikowi

sudo usermod -aG sudo nazwa-użytkownika

2. Jak utworzyć klucze SSH dla nowego użytkownika Linux?

W następnej sekcji zwiększymy bezpieczeństwo naszego serwera zezwalając na logowanie do niego tylko za pomocą Kluczy SSH.
Na poczatku tego tutoriala wykorzystałeś do zalogowania się do serwera po SSH swojego hasła dla danego użytkownika.

Podejście takie jest o tyle niebezpieczne, że w skrajnych przypadkach, kiedy Twoje hasło zostanie skompromitowane, nieuprawniona osoba otrzyma dostęp do Twojego serwera VPS, dzięki czemu będzie z nim mogła zrobić co tylko jej się spodoba.

Rozwiązaniem tego problemu jest ograniczenie logowania SSH tylko do wykorzystania Kluczy SSH.
W takim przypadku, tak długo jak Twój plik z kluczem będzie bezpiecznie u Ciebie składowany, tak długo nikt nie będzie w stanie zalogować się do Twojego serwera za pomocą SSH.

Niniejszy tutorial zakłada, że nie posiadasz na swoim Lokalnym Komputerze jeszcze żadnych kluczy SSH

Na swoim lokalnym komputerze wykonaj następującą komendę w celu wygenerowania pary kluczy SSH (np. Windows, Mac)

ssh-keygen -t rsa -b 4096

Wykorzystanie tej komendy spowoduje utworzenie dwóch plików na Twoim Lokalnym komputerze pod następującą ścieżką C:\Users\user-name\.ssh

  • id_rsa - Twój prywatny klucz SSH (Umieść na VPS)
  • id_rsa.pub - Publiczny Klucz SSH (Wykorzystaj w celu zalogowania)

Wykonaj kopię kluczy SSH

Bardzo ważne jest aby swój lokalny plik id_rsa zapisać na jakimś przenośnym dysku, gdyż w przypadku jego usunięcia lub malformacji, nie będziesz w stanie zalogować się do swojego serwera VPS!!!.

3. Jak dodać klucze SSH do nowego użytkownika Linux na VPS?

Kolejnym krokiem jest odpowiednie przygotowanie konta użytkownika Linux, które stworzyłeś w pierwszym podpunkcie ninijeszego etapu.

Do wykonania mamy następujące kroki:

  1. Skopiowanie Klucza Publicznego z komputera Lokalnego na nasz Server VPS
  2. Dodanie Klucza Publicznego do konta naszego nowego Użytkownika Linux
  3. Przetestowanie konfiguracji (Koniecznie)

Na serwerze VPS musisz wykonać nastepujące komendy w celu utworzenia katalogu SSH dla nowego Uzytkownika

mkdir /home/nazwa-nowego-użytkownika/.ssh

Zmień przynależność nowego katalogu z Roota na Nowego Uzytkownika

sudo chown -R n-n-użytkownika:n-n-użytkownika /home/n-n-użytkownika/.ssh

Na swoim lokalnym komputerze wykonaj następującą komendę w celu skopiowania Klucza Publicznego na Serwer VPS

scp C:/Users/nazwa-użytkonika/.ssh/id_rsa.pub nazwa-nowego-użytkownika@ip-servera-vps:~/.ssh

Zostaniesz poproszony o wprowadzenie hasła dla stworzonego przez Ciebie nowego użytkownika.
Kiedy wszystko przejdzie pomyślnie, powinineś posiadać plik id_rsa.pub w folderze .ssh swojego nowego użytkownika Linux.

Ostatnim krokiem jest dodanie Klucza SSH do Autoryzowanych Kluczy na Serwerze VPS

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keysrm ~/.ssh/id_rsa.pub

Tym sposobem poprawnie dodałeś swój Klucz SSH do Autoryzowanych kluczy na serwerze.
W kolejnych etapach poradnika dowiesz się jak aktywować możliwość logowania za pomocą Kluczy SSH

Bezpieczna Konfiguracja SSH (Secure Shell)

1. Jak zmienić domyślny port SSH?

SSH (Secure Shell) to protokół używany do zdalnego zarządzania serwerem. Domyślne ustawienia SSH mogą być potencjalnie niebezpieczne, dlatego warto je odpowiednio skonfigurować.

Domyślny port SSH (22) jest często celem ataków. Zmiana portu na inny może utrudnić potencjalnym hakerom dostęp do serwera.

Podpowiedź !

Pamiętaj że nie jest to krok konieczny, możesz również dokonać fitlracji akceptowalnych IP na port 22 za pomocą Firewall’a
Jeśli jesteś bardziej zaawansowanym użytkownikiem możesz również rozważyć zastosowanie metody Port Knock.
Pamiętaj że ilość możliwych rozwiązań jest niegoraniczona a jedynymi ograniczeniami mogą być te związane z brakiem doświadczenia.

Wykonaj kopię zapasową pliku sshd_config (na wszelki wypadek)

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

Otwórz dokument sshd_config za pomocą wybranego edytora tekstu Linux (np. nano)

sudo nano /etc/ssh/sshd_config

Odnajdź linijkę zawierającą tekst #Port 22

port 2200 <-- Usuń znak # i wprowadź nowy port SSH (np. 2200)

Podpowiedź !

Jeśli tak jak ja używasz edytora tekstu nano możesz użyć następujących skrótów:

CTRL + W <-- Wyszukaj
CTRL + S <-- Zapisz Plik
CTRL + X <-- Wyjdz z edytora

Większość przydatnych skrótów powinna być widoczna na dole ekranu po otworzeniu edytora.

Zapisz zmiany

Ostrzeżenie !

Pamiętaj aby przed dokonaniem zmian wprowadzić odpowiednie poprawki do swojego Zewnętrznego i Wewnętrznego Firewalla tak aby zezwalał na połączenia do nowego portu SSH. W innym wypadku zostaniesz bez dostępu do serwera...

Pamiętaj aby po wprowadzeniu nowych regół zrestartować UFW w celu implementacji nowej konfiguracji !!! (Komenda w kolejnym kroku)

2. Jak wyłączyć logowanie do root'a Linux?

Logowanie się jako root bezpośrednio przez SSH jest niebezpieczne. Lepszym rozwiązaniem jest użycie konta użytkownika z uprawnieniami sudo.

W celu dokonania blokady ponownie otwórz plik sshd_config i dodaj na końcu pliku następującą informację

PermitRootLogin no <-- Dodaj na końcu pliku lub znajdź w pliku

3. Jak włączyć logowanie za pomocą kluczy SSH w Linuxie?

Dlaczego powinnismy stosować klucze SSH zostało wyjaśnione w poprzednim rozdziale. Jednakże nadal nie wiemy jak pozwolić na ich wykorzystanie.

Ponownie otwórz plik sshd_config i upewni się że podana opcja jest włączona

PubkeyAuthentication yes <-- Nie może być przed nią znaku #

4. Jak zrestartować serwis SSH w Linuxie?

W celu wprowadzenia dokonanych przez nas zmian konieczny będzie restart serwisu SSH

Wykonaj następującą komendę na swoim VPS Linux

sudo systemctl restart ssh

5. Jak wykorzystać klucz SSH do zalogowania się do Linuxa?

Zanim przejdziemy dalej upewnij się, że Twoje klucze SSH zostały pomyślnie skonfigurowane.

Otwórz nowy Terminal na swoim Lokalnym Komputerze i wykonaj następującą komendę

ssh -p nowy-port-ssh n-n-użytkownika@ip-vps -i ścieżka-do-id_rsa

Gdzie znajduje się plik id_rsa ?

Twój plik id_rsa odnajdziesz po wpisaniu w terminal komendy “ ~/.ssh” (Komputer Lokalny)

Czy klucze SSH działają poprawnie?

Jeśli wszystko zostało poprawnie skonfigurowane w trakcie logowania do SSH z Kluczem nie powinieneś zostać poproszony o hasło.
Jeśli mimowszystko zostałeś poproszony o hasło użytkownika, oznacza to, że w któymś miejscu popełniłeś błąd.

Pamiętaj aby nie pomylić prośby o hasło użytkownika z prośbą o hasło do klucza id_rsa
Jeśli tworząc klucze wprowadziłeś “phasphrase” zostaniesz wtedy poproszony o podanie hasłą do swojego Klucza id_rsa, co jest normalnym zachowaniem.

Kiedy jesteś już w 100% pewny że Twoje klucze SSH działają poprawnie możesz przejść do kolejnego podpunktu.

6. Jak zablokować logowanie SSH do Linuxa z wykorzystaniem hasła?

Niniejsza operacja jest opcjonalna, jednakże jej implementacja w znaczny sposób podwyższa bezpieczeństwo Twojego serwera VPS.

Ponownie otwórz plik sshd_config i sprawdź jaki katalog zawiera w pierwszej linijce.
W moim przypadku jest to /etc/ssh/sshd_config.d

Poczatek pliku sshd_config

Przejdz do powyższego katalogu i sprawdź jakie pliki zawiera

Przejdź do katalogu

cd /scieżka/do/twojego/katalogu

Wylistuj katalog

ls -la

W moim przypadku otrzymałem następujące rezulataty

Katalog /etc/ssh/sshd_config.d

Wskazane pliki są dodatkowymi plikami konfiguracyjnymi SSH utworzonymi zazwyczaj przez Twojego dostawcę serwerów VPS.
Sprawdź jakie informacje zawierają Twoje pliki.
W moim przypadku plik który wymaga zmiany wygląda w sposób następujący

Katalog /etc/ssh/sshd_config.d

Edytuj każdy z plików, który zawiera powyższą linijkę tekstu zmieniając opcję “yes” na “no”

Edytuj pliki

sudo nano nazwa-pliku

Podmień opcję “yes” na “no”

PasswordAuthentication no

Zanim zrestartujesz serwis SSH

Przed dokonaniem powyższej operacji upewnij się, że Twoje Klucze SSH działają poprawnie.
W innym wypadku na stałe utracisz dostęp do swojego VPS oraz danych w nim zawartych.

Jeśli jest to serwer testowy nic straconego, wystarczy go ponownie zdeployowa.
Pamiętaj aby nie wykonywać takich działań na serwerze produkcyjnym, jeśli nie czujesz się jeszcze na siłach !!!

Zerstartuj serwis SSH

sudo systemctl restart ssh

W tym momencie powinniśmy wylogować się już z powłoki roota i zacząć korzystać z naszego nowo utworzonego konta Administratora.

Instalacja i Konfiguracja Fail2Ban

1. Co to jest Fail2Ban?

Fail2Ban to narzędzie zabezpieczające serwery przed nieautoryzowanym dostępem. Monitoruje logi systemowe, wykrywając podejrzane aktywności, takie jak wielokrotne nieudane próby logowania. W przypadku wykrycia takiego zachowania, Fail2Ban blokuje adres IP źródła na określony czas, zmniejszając ryzyko ataków brute-force. Działa z różnymi usługami, jak SSH, Apache, czy Postfix, zapewniając elastyczną i skuteczną ochronę.

W poniższej części tego kursu poznasz podstaswy konfiguracji oraz wykrozystania niniejszego narzędzia.

Jak działa Fail2Ban?

Fail2Ban to narzędzie które w głównej mierze opiera się na zarządzaniu Twoim Wewnętrznym Firewallem. File2Ban stale monitoruje Twoje logi systemowe w celu wykrywania niechcianych zachowań. Kiedy dane zdarzenie z konkretnego adresu IP zostanie wykonane zbyt wiele razy Fail2Ban automatycznie doda nową regułę do Twojego Firewalla blokującą dany adres IP na okresloną ilość czasu. Kiedy okres banowania zostanie zakończony, dana reguła zostanie autoamtycznie usunięta z Wewnętrznego Firewalla.

2. Jak zainstalować Fail2Ban?

W celu instalacji wykonaj komendę (jako Sudoer)

sudo apt install fail2ban

Zweryfikuj poprawność instalacji srpawdzając logi F2B, upewnij się że nie występują żadne błędy

cat /var/log/fail2ban.log

Sprwadź status serwisu F2B

systemctl status fail2bansudo fail2ban-client status

3. Jak skonfigurować Fail2Ban?

Usługa Fail2Ban przechowuje swoje dane konfiguracyjne w pliku jail.conf, który można znaleźć w katalogu /etc/fail2ban.
Zanim przejdziemy dalej sprawdźmy co kryje się w pierwszych 20 linijkach tego pliku.

Sprawdź początek pliku /etc/fail2ban/jail.conf

head -20 /etc/fail2ban/jail.conf
Katalog /etc/ssh/sshd_config.d

Łatwo zauważyć, że na poczatku pliku wszystkie pola oznaczone są jako komentarze, o czym świadczy znak # na początku każdej lini.
Dane te służą jak wstępna instrukcja obsługi narzędzia Fail2Ban.

Najważniejszą informacją jest fakt, aby bezpośrednio NIE zmieniać pliku jail.conf, a wszelkich zmian dokonywać za pomocą pliku jail.local

Porównanie plików - jail.conf vs jail.local

Plik jail.conf należy do pakietu instalacyjnego narzędzia Fail2Ban i jest plikiem który zostaje autoamtycznie nadpisany z każdą aktualizacją narzędzia.
Jesli postanowiłbyś dokonac konfiguracji F2B w pliku jail.conf, z kolejną aktualizacją narzędzia utracił byś swój set up.

Kiedy podstawy mamy już za sobą, pora dowiedzieć się jak skonfigurować fail2ban.

Przejdź do folderu Fail2Ban

cd /etc/fail2ban

Skopiuj plik jail.conf do jail.local

sudo cp jail.conf jail.local

Otwórz plik jail.local i rozpocznij jego lekturę

sudo nano -l jail.local

Przeglądając plik jail.local możemy zauważyć, że w lini 41 znajduje się początek podstawowej konfiguracji Fail2Ban.

Jeśli zejdziemy nieconiżej możemy dowiedzieć się, że:

  • Maksymalna próba niudanych prób logowania może wyniesc max 5 (Linia 108)
  • Okno czasowe wykrywania nieudanych prób logowania wynosi 10m (Linia 105)
  • Czas banowania IP wynosi 10m (Linia 101)

Powyższe parametry mówią nam, że jeżeli klient wykona 5 niepoprawnych prób logowania w przeciągu 10 minut to jego IP zostanie zbanowane na 10 minut. Po tym czasie jego adres IP zostanie ponownie odblokowany.

4. Jak odczytać logi Fail2Ban?

Fail2Ban posiada również własny system logów który jest zkorelowany z innymi najwazniejszymi logami systemowymi.
Za jego pomocą możemy sprawdzić wszystkie najwazniejsze zdzarzenia jakie zostały zarejestrowane przez nasz system.

Jak otworzyć log Fail2Ban ?

sudo cat /var/log/fail2ban.log

Jak otworzyć log SSH ?

sudo cat /var/log/auth.log

Poświęć 15 minut na samodzielną analize powyższych logów aby dogłębnie zrozumieć ich naturę.
Pamiętaj, że nawięcej wiedzy zdobywasz poprzez samodzielną naukę oraz zaparte zgłębianie tematów Twoich zaineresowań.
Najwazniejsze jest umiejętne zadawanie sobie samemu pytań: Jak?, Czemu?, Po Co? Kiedy?

Przykładowe pytania:

  • Jak sprawdzić adres IP osóby która ostatnio podjęła próbę logowania SSH na mój VPS?
  • W jaki sposób dana osoba dokonała autoryzacji z moim Serwerem VPS?
  • Czy dany adres IP został poprawnie zbanowany przez Fail2Ban?

5. Jak zweryfikować, czy Fail2Ban działa poprawnie?

Do tej pory udało już nam się posiąść naprawdę duzy i wartościowy kawałek wiedzy. Jednakże wiedza teorytyczna a wiedza praktyczna, zwłaszcza w dziedzinach IT bardzo lubi mijać się z prawdą. Po każdym zaimplementowaniu nowego rozwiązania na swoim serwerze powinieneś być w stanie przetestować, czy dane rozwiązanie działa prawidłowo. Sama umiejętność zainstalowania danego serwisu nie jest niczym trudnym. Najważniejsza jest odpowiednia konfiguracja danego rozwiązania oraz jego stałe testowanie i ulepszanie adekwatnie do wykorzystywanych przez nas technologii.

W celu dokonania podstawowych testów Fail2Ban wykonamy kilka prób logowania do naszego Servera VPS za pomocą SSH.
W tym celu otwórz nowy terminal, takbyś jednocześnie miał dostep do terminalu w którym jesteś połączony ze swoim VPS, oraz pustego nowego okna.

Podpowiedź

Jeśli w podrożdziale “Bezpieczna Konfiguracja SSH” zablokowałeś możliwość logowania się za pomocą hasła możesz:

1. Odblokować na czas testów możliwość logowania się hasłem
2. Stworzyć backup swojego klucza id_rsa, a następnie zedytować swój klucz tak aby różnił się od oryginalnego.

Jesli zdecydujesz się na drugą opcję, koniecznie po skaończeniu testów przywróć swój klucz id_rsa do wersji z backupu, inaczej na stałe utracisz możliwość logowania się do swojego serwera

Raz jeszcze przypominam o tym jak ważne jest aby posiadać przynajmniej kilka kopii Twoich kluczy SSH w różnych miejscach.

Wykonaj nowe połączenie SSH (Nowy Terminal)

ssh -p port-ssh n-n-użytkownika@ip-vps

Jeśli wybrałeś drugą metodę zakłądającą malformację klucza id_rsa powinieneś w tym momencie zostać poproszony o hasło.
Wprowadź maksymalnie 3 razy niepoprawne hasło.

Sprawdź logi (Terminal Zalogowany do VPS)

sudo cat /var/log/fail2ban.logsudo cat /var/log/auth.log

W logach powinnia widnieć informacja o Twoim adresie IP oraz nieudanych próbach zalogowania.
Przeczytaj te logi i upewni się, że rozumiesz ich przekaz.

Wykonaj kolejne 2 próby logowania (Nowy Terminal)

ssh -p port-ssh n-n-użytkownika@ip-vps

W tym momencie jeśli wszystko poprawnie działa Twój adres IP powinien zostać zablokowany na 10 minut. Niestety, jeśli nie dysponujesz drugim adresem IP musisz odczekać ten czas, dopiero wtedy będziesz w stanie ponownie zalogować się do swojego serwera VPS. Pamiętaj tylko aby tym razem przywrócić kopię swojego pliku id_rsa.

Jak odblokować IP w Fail2Ban Linux?

Jeśli nie masz ochoty czekać na odblokowanie Twojego IP, zawsze możesz udostępnić sobie swój internete z telefonu, który będzie posiadać inne IP
Wykonaj komendę "sudo fail2ban-client set sshd unbanip "

6. Podsumowanie Fail2Ban

W niniejszym rozdziale nauczyliśmy się minimalnej i podstawowej konfiguracji oraz działania serwisu Fail2Ban. Z faktu iż ten pordanik ma na celu wprowadzenie Ciebie do świata samodzielnej konfiguracji VPS nie jestem w stanie opisać tutaj szczegółów tego narzędzia.

Zachęcam Ciebie do samodzielnej eksploracji. Pamiętaj, że dzięki Google i Chat-GPT będziesz w stanie samodzielnie zgłebić wszelkie tajniki tego narzędzia. Wiedza którą pozyskasz w ten sposób utrwali się w zdecydowanie lepszy sposób, gdyż samemu krok po kroku będziesz musiał poznawać kolejne etapy działania danego rozwiązania.

Nie zapomnij również stale sprawdzać mojej strony, prawdopodobnie w przyszłości pojawi się tutaj bardziej obszerny i kompleksowy artykuł na temat zaawansowanej konfiguracji usługi Fail2Ban

Antywirus ClamAV

1. Co to jest ClamAV?

ClamAV, czyli Clam AntiVirus, to jedno z najpopularniejszych i najbardziej wszechstronnych narzędzi do wykrywania wirusów w systemach Linux. Jego otwartoźródłowy charakter, regularne aktualizacje i możliwość integracji z różnorodnymi systemami sprawiają, że jest on idealnym wyborem dla administratorów dbających o bezpieczeństwo swoich serwerów.

ClamAV zostało pierwotnie zaprojektowane głównie z myślą o systemach Linux, choć dostępne jest również na inne platformy, takie jak Windows i macOS. Oferuje ono szereg funkcji, które pomagają w wykrywaniu i usuwaniu złośliwego oprogramowania, w tym wirusów, trojanów, malware i innych zagrożeń. Składa się z 3 podstawowych elementów:

  • ClamD: Daemon, który odpowiada za skanowanie w tle.
  • ClamScan: Narzędzie wiersza poleceń, które umożliwia ręczne skanowanie plików.
  • FreshClam: Usługa odpowiedzialna za automatyczne aktualizacje bazy danych wirusów.

Jak działa ClamAV?

ClamAV działa na zasadzie porównywania plików z bazą danych sygnatur wirusów. Baza ta jest regularnie aktualizowana przez społeczność oraz deweloperów, co zapewnia ochronę przed najnowszymi zagrożeniami..

2. Jak zainstalować ClamAV?

W celu instalacji wykonaj komendę (jako Sudoer)

sudo apt install clamav clamav-daemon

Zrestartuj swój serwer VPS

sudo reboot

Zaktualizuj bazę wirusów

sudo freshclam

3. Jak skonfigurować ClamAV?

Domyślna konfiguracja ClamAV powinna być odpowiednia dla większości użytkowników.
Mimo wszystko edytować plik konfiguracyjny ClamAV, aby dostosować ustawienia do swoich potrzeb.

Otwórz plik konfiguracyjny i zapoznaj się z jego zawartością

sudo nano /etc/clamav/clamd.confsudo nano /etc/clamav/freshclam.conf

Jeśli dokonałeś jakiś zmian w konfiguracji nie zapomnij zrestartować serwisu ClamAV

sudo systemctl restart clamav-daemonsudo systemctl restart clamav-freshclam

4. Jak przeskanować system Linux za pomocą ClamAV?

Skanowanie Katalogu

sudo clamscan -r /ścieżka/do/katalogu

Skanowanie Całego Systemu

sudo clamscan -r /

Skanowanie Całego Systemu (Pokaż tylko zawirusowane pliki)

sudo clamscan -r --infected /

Skanowanie Całego Systemu (Zapisz wynik skanowania)

sudo clamscan -r --infected / > ~/clamav_output.txt

Skanowanie Całego Systemu (Automatyczne Usuwanie Wirusów)

sudo clamscan -r --infected --remove /

Jak anulować działanie komendy w terminalu?

Jeśli Twój terminal jest zablokowany przez aktualnie działającą komendę możesz ją anulować za pomocą CTRL + C

Podsumowanie

Kilka słów na zakończenie

Na samym poczatku chciałbym podziękować Ci za cierpliwość i pogratulować wytrwałości. Mam nadzięję, że niniejszy artykuł był dla Ciebie zrozumiały. W razie gdybyś miał jakieś problemy zawsze możesz odezwać się do mnie prywatnie w celu otrzymania pomocy.

Jak sam widzisz, bezpieczna konfiguracja Twojego nowego serwera VPS wcale nie jest taka trudna jakby się to wydawało. Działanie to tak na prawdę, w głównej mierze opiera się na pewnych powielanych schamatach, które wraz z upływem czasu są aktualizowane o bezpieczniejsze rozwiązania. Serwer który dzisiaj przygotowaliśmy możesz wykorzystać do hostowania swoich pierwszych aplikacji. Jest on bezpiecznie skonfigurowany i nie powinien pozwolić na włam.

Niniejszy artykuł jest pierwszym z serii kursu "Od zera do DevOps'era". Pamiętaj że jest to dopiero pierwszy etap, w którym wspólnie przygotowaliśmy podłoże pod postawienie naszej aplikacji webowej. Skupiliśmy się przede wszystkich na podstawach, czyli na tym aby nasza infrastruktura serwerowa była bezpieczna już od pierwszego jej uruchomienia.

W kolejnych cześćiach kursu poznamy kolejne kroki mające na celu kompletny deployment aplikacji webowej za pomocą technologii Docker. Poznamy podstawy bezpiecznego Tworzenia obrazów Dockera, poznamy szczegóły komendy Docker Compose oraz finalnie udostepnimy naszą aplikację światu za pomocą narzędzia jakim jest Traefik. Przed nami masa dobrej zabawy. Nie zapomnij obserwować mojej strony aby być na bieżąco z najnowszymi kursami.