Wróć do projektów
  • W użyciu

Własny serwer Linux – web, DNS, poczta i bazy danych

Utrzymanie własnego serwera Debian z kilkoma stronami i usługami, własnymi serwerami nazw (BIND, DNSSEC), serwerem pocztowym (Exim4, Dovecot) z SPF, DKIM, DMARC, MTA-STS i DANE, bazami danych i Dockerem.

  • Linux
  • Debian
  • Apache
  • BIND
  • Exim4
  • Dovecot
  • Docker
  • MariaDB

Opis

Utrzymuję własny VPS z Debianem – działa na nim również ta strona. Od serwera WWW, przez DNS i pocztę, po bazy danych i kontenery – wszystko konfiguruję, zabezpieczam i aktualizuję sam.

Web

  • Apache z wirtualnymi hostami dla kilku stron i usług, HTTPS z Let’s Encrypt (osobny certyfikat dla każdej strony, automatyczne odnawianie)
  • HSTS i nagłówki bezpieczeństwa, rozdzielone uprawnienia (pliki należą do użytkownika, serwer WWW tylko czyta)
  • PHP-FPM oraz Apache jako reverse proxy dla aplikacji – m.in. aplikacji ASP.NET SupplyTracker jako usługi systemd
  • Wdrożenia przez Git i własne skrypty, środowisko testowe chronione hasłem

DNS

  • Własne autorytatywne serwery nazw (BIND) dla kilku domen
  • Strefa juscinski.net podpisana DNSSEC

Poczta

  • Serwer pocztowy: Exim4 (SMTP) i Dovecot (IMAP/POP3 przez TLS)
  • Dostarczalność i ochrona przed podszywaniem: SPF, DKIM, DMARC (tryb ścisły)
  • Wymuszone szyfrowanie między serwerami: MTA-STS (enforce), DANE/TLSA, raporty TLS

Bazy danych i kontenery

  • MariaDB oraz PostgreSQL i Microsoft SQL Server w kontenerach Docker
  • Bazy danych dostępne tylko lokalnie – bez dostępu z internetu

Bezpieczeństwo i utrzymanie

  • Firewall (UFW) z domyślną blokadą – dostępne są tylko usługi, które muszą być publiczne
  • Logowanie SSH tylko kluczem i z uwierzytelnianiem dwuskładnikowym (TOTP)
  • fail2ban z własnymi regułami dla SSH, SMTP (Exim) i IMAP (Dovecot)
  • Automatyczne aktualizacje bezpieczeństwa (unattended-upgrades), rotacja logów, monitoring skryptami
  • Regularne audyty bezpieczeństwa własnym skryptem (tylko odczyt) – znaleziska są dokumentowane i usuwane
  • Status serwera na stronie głównej jest na żywo – skrypt odświeża go co pięć minut

Czego się nauczyłem

Jak łączą się elementy usługi internetowej – DNS, TLS, web, poczta i bazy danych – i że zmiana w jednym miejscu często dotyka trzech innych. Przede wszystkim: każdą zmianę najpierw sprawdzić, potem włączyć, potem skontrolować z zewnątrz – i wszystko dokumentować, żeby dało się to odtworzyć i cofnąć.