Podstawy Linux #8: Sieć i firewall

Serwer VPS to przede wszystkim maszyna podłączona do sieci. Musisz umieć sprawdzić połączenie, otwarte porty, pobrać pliki i zabezpieczyć serwer zaporą ogniową.
Diagnostyka sieci
ping — sprawdź połączenie
ping google.com # ciągły ping (CTRL+C żeby przerwać)
ping -c 4 google.com # 4 próby i koniec
ip — informacje o interfejsach sieciowych
ip a # adresy IP wszystkich interfejsów
ip r # tablica routingu (gateway)
📋 Scenariusz: Jaki jest publiczny IP serwera?
ip a | grep "inet " | grep -v 127.0.0.1
Lub szybciej:
curl -s ifconfig.me
ss — otwarte porty i połączenia
ss -tuln # TCP/UDP, nasłuchujące, numerycznie
ss -tlnp # jak wyżej + nazwa procesu
📋 Scenariusz: Jakie porty są otwarte na serwerze?
sudo ss -tlnp
Zobaczysz listę nasłuchujących portów z nazwami procesów. Typowo: port 22 (SSH), 80 (HTTP), 443 (HTTPS). Jeśli używasz Dockera, pojawią się też porty kontenerów (np. docker-proxy).
curl i wget — pobieranie i testowanie
curl https://example.com # wyświetl zawartość strony
curl -I https://example.com # tylko nagłówki HTTP
curl -o plik.zip https://example.com/a.zip # pobierz i zapisz
wget https://example.com/plik.zip # pobierz plik
wget -q -O - https://example.com # wyświetl zawartość (jak curl)
💡 Podpowiedź
curl jest bardziej uniwersalny (API, nagłówki, POST). wget jest lepszy do prostego pobierania plików.
Transfer plików przez SSH
scp — kopiowanie plików
scp działa przez SSH — jeśli masz skonfigurowany klucz SSH i ~/.ssh/config (lekcja 003), możesz używać nazwy hosta zamiast pełnego adresu:
# Z komputera na serwer:
scp plik.txt moj-serwer:/home/roman/
# Z serwera na komputer:
scp moj-serwer:/var/log/app.log ./
# Cały katalog:
scp -r katalog/ moj-serwer:/opt/
sftp — interaktywny transfer
sftp roman@serwer
sftp> put lokalny-plik.txt # wyślij na serwer
sftp> get zdalny-plik.txt # pobierz z serwera
sftp> ls # lista plików na serwerze
sftp> exit
Kompresja i archiwizacja
tar — archiwum
# Tworzenie archiwum:
tar -czvf backup.tar.gz /opt/app/data/
# c = create, z = gzip, v = verbose, f = file
# Rozpakowywanie:
tar -xzvf backup.tar.gz
# x = extract
# Rozpakuj do konkretnego katalogu:
tar -xzvf backup.tar.gz -C /opt/restore/
# Podgląd zawartości (bez rozpakowywania):
tar -tzvf backup.tar.gz
zip / unzip
zip -r archiwum.zip katalog/ # stwórz ZIP
unzip archiwum.zip # rozpakuj
unzip -l archiwum.zip # podgląd zawartości
📋 Scenariusz: Backup katalogu z datą
tar -czvf /opt/backups/app-data-$(date +%Y%m%d-%H%M).tar.gz /opt/app/data/
Tworzy plik np. app-data-20250115-1430.tar.gz.
Firewall (ufw)
UFW (Uncomplicated Firewall) to prosty frontend do iptables, domyślnie dostępny na Ubuntu/Debian.
Instalacja i status
sudo apt install ufw # instalacja (jeśli brak)
sudo ufw status # sprawdź status
sudo ufw status verbose # szczegółowy status
sudo ufw status numbered # reguły z numerami
Włączanie
sudo ufw default deny incoming # domyślnie blokuj ruch przychodzący
sudo ufw default allow outgoing # domyślnie zezwalaj na ruch wychodzący
sudo ufw allow ssh # NAJPIERW zezwól na SSH!
sudo ufw enable # włącz firewall
⚠️ Uwaga
Zawsze zezwól na SSH (ufw allow ssh lub ufw allow 22) PRZED włączeniem firewalla. Inaczej zablokujesz się na swoim serwerze!
Zarządzanie regułami
sudo ufw allow 80 # HTTP
sudo ufw allow 443 # HTTPS
sudo ufw allow from 1.2.3.4 # zezwól z konkretnego IP
sudo ufw allow from 1.2.3.4 to any port 5432 # PostgreSQL tylko z tego IP
sudo ufw allow 465 # SMTPS (SMTP over SSL)
sudo ufw allow 587 # SMTP z TLS (wysyłanie maili)
sudo ufw allow 993 # IMAP SSL (odbieranie maili)
sudo ufw deny 3306 # zablokuj MySQL z zewnątrz
💡 Porty mailowe a automatyzacje
Jeśli Twoje automatyzacje (np. n8n) wysyłają maile przez zewnętrzny serwer SMTP — potrzebujesz otwartego portu 587 (SMTP z TLS) na ruch wychodzący. Domyślnie ufw default allow outgoing to załatwia, więc nie musisz nic dodawać. Porty przychodzące (25, 587, 993) otwieraj tylko jeśli stawiasz własny serwer pocztowy na VPS.
Usuwanie reguł
sudo ufw status numbered # sprawdź numery reguł
sudo ufw delete 3 # usuń regułę nr 3
sudo ufw delete allow 80 # usuń regułę po opisie
Wyłączanie i reset
sudo ufw disable # wyłącz firewall
sudo ufw reset # usuń wszystkie reguły
ℹ️ Co to jest reverse proxy?
Wyobraź sobie recepcję w hotelu — gość przychodzi i mówi „chcę do pokoju 302”. Recepcjonistka kieruje go we właściwe miejsce. Reverse proxy działa tak samo: przyjmuje ruch z internetu (port 80/443) i kieruje go do właściwej aplikacji działającej na wewnętrznym porcie (np. n8n na 5678, NocoDB na 8080).
Dzięki temu: – Otwierasz tylko porty 80 i 443 zamiast portów każdej aplikacji – Masz automatyczny SSL (HTTPS) dla wszystkich aplikacji – Możesz mieć wiele aplikacji na jednym serwerze, każda pod własną domeną
Popularne reverse proxy: Caddy (automatyczny SSL, prosta konfiguracja), Traefik (integracja z Dockerem), Nginx (klasyczny, największa społeczność).
📋 Scenariusz: Typowa konfiguracja serwera z n8n i reverse proxy
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 465 # SMTPS (SMTP over SSL)
sudo ufw allow 587 # SMTP z TLS (wysyłanie maili)
sudo ufw allow 993 # IMAP SSL (odbieranie maili)
sudo ufw enable
sudo ufw status
Serwer przyjmuje SSH, HTTP, HTTPS i porty mailowe (587/993). Porty aplikacji (np. 5678 dla n8n) są ukryte za reverse proxy — np. Caddy lub Nginx. Reverse proxy przyjmuje ruch z internetu na porcie 80/443 i przekazuje go do aplikacji na wewnętrznym porcie. W tym kursie korzystamy z Caddy (w Dockerze), bo jest prostszy w konfiguracji i automatycznie obsługuje certyfikaty SSL.
Podsumowanie
| Komenda | Co robi |
|---|---|
ping |
Test połączenia |
ip a / ip r |
Adresy IP / routing |
ss -tlnp |
Otwarte porty + procesy |
curl / wget |
Pobieranie / testowanie HTTP |
scp |
Kopiowanie plików przez SSH |
tar -czvf / -xzvf |
Tworzenie / rozpakowywanie archiwum |
ufw allow/deny |
Reguły firewalla |
ufw enable/disable |
Włączanie / wyłączanie firewalla |






