Bezpieczeństwo aplikacji webowych na serwerze Linux: Praktyczne porady
Linux

Bezpieczeństwo aplikacji webowych na serwerze Linux: Praktyczne porady

🔐 Bezpieczeństwo aplikacji webowych na serwerze Linux: Praktyczne porady


🧭 Wprowadzenie

Linux to dominująca platforma serwerowa dla aplikacji webowych. Jego bezpieczeństwo to nie tylko kwestia systemu, ale także sposobu uruchamiania i konfiguracji serwera WWW, aplikacji, uprawnień i zabezpieczeń sieciowych.

Artykuł ten przedstawia praktyczne podejście do hardeningu serwera, czyli maksymalnego ograniczenia wektorów ataku – od konfiguracji systemu po zasady DevSecOps.

Bezpieczeństwo aplikacji webowych na serwerze Linux: Praktyczne porady
Bezpieczeństwo aplikacji webowych na serwerze Linux: Praktyczne porady

🛡️ Podstawy bezpieczeństwa serwera webowego

🔒 Fundamentalne zasady:

  • Zasada najmniejszych uprawnień (PoLP)
  • Izolacja usług i użytkowników
  • Systematyczne aktualizacje
  • Monitoring logów i usług

📁 Kluczowe elementy do kontroli:

  • /etc/ssh/sshd_config
  • /var/log/
  • /etc/passwd, /etc/shadow

🌐 Bezpieczna konfiguracja serwerów HTTP

📘 Apache

  • Wyłącz niepotrzebne moduły (a2dismod)
  • Ukryj wersję serwera:
    ServerSignature Off  
    ServerTokens Prod
    
  • Ustaw ModSecurity + OWASP Core Rule Set
  • Ogranicz dostęp przez .htaccess i Require all denied

📘 Nginx

  • Ogranicz metody HTTP:
    if ($request_method !~ ^(GET|POST)$ ) {
        return 444;
    }
    
  • Ukryj wersję:
    server_tokens off;
    
  • Konfiguruj nagłówki bezpieczeństwa:
    add_header X-Frame-Options "DENY";
    add_header X-Content-Type-Options "nosniff";
    add_header Content-Security-Policy "default-src 'self'";
    

👤 Zarządzanie użytkownikami i uprawnieniami

👨‍💻 Praktyki:

  • Aplikacje działają z własnym użytkownikiem (np. www-data, nginx)
  • Ograniczenie katalogów przez chroot lub systemd ProtectSystem=full
  • Brak dostępu roota przez SSH:
    PermitRootLogin no

🔍 Sprawdzenie uprawnień:

find /var/www -type f -exec chmod 640 {} \;
find /var/www -type d -exec chmod 750 {} \;

🧑‍💻 Zabezpieczanie aplikacji webowych

PHP

  • Wyłącz allow_url_fopen, register_globals
  • Włącz open_basedir:
    open_basedir = /var/www/html/
    

Python (Flask/Django)

  • Włącz SECURE_SSL_REDIRECT = True
  • Stosuj django.middleware.security.SecurityMiddleware
  • Oddziel środowisko w venv

Node.js

  • Ogranicz uprawnienia procesu przez pm2 lub systemd
  • Waliduj dane wejściowe (express-validator)
  • Unikaj dynamicznych eval i require

🔐 Wdrożenie HTTPS i HSTS

📜 Certyfikaty TLS:

  • Let’s Encrypt z automatyzacją (certbot)
  • Wymuś przekierowanie HTTP → HTTPS
Czytaj  Luki typu RCE – Zdalne Wykonywanie Kodów jako Krytyczne Zagrożenie Cyberbezpieczeństwa

HSTS:

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

🛡️ Ochrona przed XSS, SQLi i CSRF

XSS

  • Filtrowanie i escapowanie danych (htmlspecialchars, DOMPurify)
  • Włączenie CSP

SQL Injection

  • Używaj ORM (np. Django ORM, SQLAlchemy)
  • Stosuj zapytania przygotowane (prepared statements)

CSRF

  • Tokeny CSRF (@csrf_protect, express-csrf)
  • Weryfikacja nagłówków żądań

📊 Monitorowanie, logowanie i wykrywanie incydentów

Narzędzia:

  • Fail2ban – blokuje brute-force
  • Auditd – śledzi operacje na plikach
  • Logwatch, Logrotate – analizy i rotacja logów
  • Wazuh lub OSSEC – SIEM i alerty

⚙️ Automatyzacja hardeningu

Narzędzia:

  • Ansible z playbookami bezpieczeństwa
  • Lynis – audyt systemu Linux
  • OpenSCAP – zgodność z politykami bezpieczeństwa

Przykład Ansible:

- name: Wyłącz SSH root
  lineinfile:
    path: /etc/ssh/sshd_config
    regexp: '^PermitRootLogin'
    line: 'PermitRootLogin no'

🧰 Zalecane narzędzia i frameworki bezpieczeństwa

Narzędzie Opis
ModSecurity WAF dla Apache i Nginx
Fail2ban Ochrona przed brute-force
Lynis Audyt bezpieczeństwa systemu
Wazuh SIEM z funkcją HIDS
AppArmor/SELinux Kontrola dostępu na poziomie jądra
OpenVAS/Nessus Skanowanie podatności

✅ Podsumowanie

Zabezpieczenie aplikacji webowej na serwerze Linux wymaga podejścia warstwowego – od systemu, przez serwer HTTP, aż po kod aplikacji. Regularne aktualizacje, poprawna konfiguracja usług, monitoring oraz automatyzacja zabezpieczeń to filary, które powinien stosować każdy administrator i deweloper.

Polecane wpisy
Konfiguracja domen, kont pocztowych i certyfikatów SSL w systemie Linux
Konfiguracja domen, kont pocztowych i certyfikatów SSL w systemie Linux

Konfiguracja domen, kont pocztowych i certyfikatów SSL w systemie Linux Konfiguracja serwera pocztowego w systemie Linux obejmuje szereg istotnych czynności, Czytaj dalej

Jak sprawdzić dostępność pakietu w repozytoriach Debiana i Ubuntu
Jak sprawdzić dostępność pakietu w repozytoriach Debiana i Ubuntu

Jak sprawdzić dostępność pakietu w repozytoriach Debiana i Ubuntu Istnieje kilka sposobów sprawdzenia, czy pakiet jest dostępny w repozytoriach Debiana Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.