- 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.
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ąć.