Własny Serwer

Własny serwer cz.20 – Zabezpieczenie serwera

Ostatnia aktualizacja: 15 września 2023, 20:07



 
Podsumowując cały dotychczasowy cykl wpisów z serii Własny Serwer, postanowiłem zakończyć go poradami, które mogą zwiększyć bezpieczeństwo infrastruktury serwera oraz poszczególnych aplikacji. Bezpieczeństwo systemu, bazy danych i działających aplikacji webowych jest rzeczą podstawową, mającą zasadniczy wpływ na dostępność Twoich serwisów. Kilka dodatkowych rad, które tu zamieściłem mogą się Tobie przydać, jeśli myślisz o bezawaryjnym i bezpiecznym użytkowaniu swojej maszyny serwerowej.

Miej na względzie, iż poniższe porady mają charakter czysto edukacyjny/poglądowy.

1. Zapora ogniowa

Temat zapory ogniowej przedstawiłem w pierwszej części cyklu Własny Serwer pkt.6, więc ta część jest tylko przypomnieniem.

W opisanym rozdziale użyłem aplikacji UFW (Uncomplicated FireWall), która jest nakładką na iptables do łatwiejszego zarządzania ścianą ogniową NetFilter.

Instalacja i aktywacja UFW na Debianie:
apt install ufw
systemctl status ufw
systemctl enable ufw
systemctl start ufw

Otworzenie portów dla serwera www Apache2:
ufw allow 'WWW Full'

Otworzenie portów dla serwera www Nginx (jeśli go używasz zamiast Apache2):
ufw allow 'Nginx Full'

Otworzenie portów dla połączenia ssh:
ufw allow ssh
ufw allow 20:21/tcp

Otworzenie portów dla połączeń FTP (opcjonalnie) dla programu vsftpd:
ufw allow 20:21/tcp
ufw allow 30000:31000/tcp

Otworzenie portów dla serwera poczty SMTP (opcjonalnie):
ufw allow 25/tcp

Otworzenie portów dla poczty IMAP:
ufw allow 80,443,587,465,143,993/tcp

Nie zapomnij o restarcie UFW.

2. Instalacja certyfikatu TSL/SSL

W rozdziale trzecim Własny Serwer zainstalowaliśmy bezpłatny certyfikat TSL, dzięki któremu połączenie do i z Twojej strony internetowej jest szyfrowane i obsługiwane przez protokół HTTPS. Jest to na tyle ważne, iż połączenie za pośrednictwem HTTP odbywa się przesyłając dane w formie tekstowej, łatwe do przeczytania przez nieodpowiedni element. Połączenie HTTPS wyklucza możliwość podejrzenia przesyłanych danych, szczególnie podczas logowania, pobierania i wysyłania poczty, jak również zawartości przeglądanych stron w internecie.

3. Ograniczenie dostępu do serwera FTP

Jeśli zainstalowałeś serwer FTP, w moim przypadku był to vsftpd, dobrym pomysłem jest skonfigurowanie nowego użytkownika, którego nazwa nie związania jest z 'root’, 'admin’ ani z Twoim imieniem, nazwiskiem oraz powszechnie używanym nickiem. Plik konfiguracyjny vsftpd pozwala na ograniczenie dostępu dla wybranego użytkownika lub użytkowników. Można również użyć niestandardowych portów do połączeń z serwerem FTP.

4. Ochrona poczty

Rozdział 5 i 6 poświęcony był instalacji i konfiguracji serwera poczty SMTP oraz IMAP, a rozdział 7 jej zabezpieczeniu, poprzez instalację programu anywirusowego i antyspamowego.

Program antywirusowy i antyspamowy będzie chronił naszą skrzynkę pocztową przed wirusami i innymi śmieciami dostarczanymi wraz z pocztą.
Do tego celu posłużyły nam aplikacje: Amavis, ClamAV i SpamAssassin.

5. Zwiększenie bezpieczeństwa aplikacji internetowych dla Apache

W przypadku serwera Apache, można zwiększyć jego bezpieczeństwo poprzez instalację modułu Modsecurity.

apt install libapache2-mod-security2
a2enmod security2
systemctl restart apache2

Następnie:
nano /etc/apache2/mods-enabled/security2.conf
dodając pliki konfiguracyjne:
IncludeOptional /etc/modsecurity/(gwizdka).conf
– zmień frazę (gwiazdka) na: *

W przypadku Debiana 11, można zainstalować nowszą wersję modułu z zewnętrznego źródła:
github.com/SpiderLabs/ModSecurity/tree/v2/master

Po zainstalowaniu modułu należy zrobić kopię zapasową pliku konfiguracyjnego:
mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
oraz aktywować moduł
nano /etc/modsecurity/modsecurity.conf
zmieniając linię:
SecRuleEngine DetectionOnly
na:
SecRuleEngine On
Zobacz również: modsecurity.digitalwave.hu

Zainstaluj również OWASP Core Rule Set (CRS) (najnowszą wersję)
wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.4.tar.gz
tar xvf v3.3.4.tar.gz
mkdir /etc/apache2/modsecurity-crs/
mv coreruleset-3.3.4/ /etc/apache2/modsecurity-crs/
cd /etc/apache2/modsecurity-crs/coreruleset-3.3.4/
mv crs-setup.conf.example crs-setup.conf
nano /etc/apache2/mods-enabled/security2.conf

Znajdź poniższe linie, które załadują pliki CRS:
IncludeOptional /usr/share/modsecurity-crs/(gwiazdka).load
IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.4/crs-setup.conf
IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.4/rules(gwiazdka).conf

– zmień frazę (gwiazdka) na: *

Zrestartuj Apache:
apache2ctl -t
systemctl restart apache2

6. Zabezpiecz aplikację webową
Jedną z najpopularniejszych aplikacji webowych do tworzenia bloga/strony internetowej jest WordPress, którego instalację opisałem w rozdziale 13.

Dobrą praktyką w przypadku tego typu aplikacji, nie tylko WordPress jest jej wzmocnienie za pomocą dostępnych narzędzi. Popularnym typem ataku na instalację WordPress jest atak typu brutal force na stronę logowania.

Aby zwiększyć bezpieczeństwo w tym konkretnym punkcie, możemy:
a. zainstalować wtyczkę zmieniająca standardową stronę (adres) logowania na własną, np.
– Hide login page, Hide wp admin wordpress.org/plugins/hide-login-page/
– WPS Hide Login pl.wordpress.org/plugins/wps-hide-login/
lub
b. zabezpieczyć stronę logowania z poziomu pliku .htaccess
<Files wp-login.php>
AuthName "User Restricted Area"
AuthType Basic
AuthUserFile /sciezka/do/plik/z/haslem/PLIK
require valid-user
</Files>
ErrorDocument 401 "Denied"
Errordocument 403 "Denied"

W ww pliku „PLIK” należy podać uprawnionego do logowania użytkownika oraz jego hasło:
mojnick:zaszyfrowanehaslo

Nie zapomnij również zainstalować wtyczki Zapory Ogniowej (Firewall) pozwalającej skonfigurować kilka aspektów dostępu do Twojego serwisu.

7. host.deny

Wysoce pomocnym trikiem zabezpieczającym jest użycie systemowego pliku host.deny
nano /etc/hosts.deny
np. ograniczając dostęp wszystkim do ssh i ftp:
sshd : ALL
vsftpd : ALL

ale zostawiając swój adres IP (lub jego zakres) jako dopuszczany do serwera:
nano /etc/hosts.allow
wpisując swój adres IP:
sshd : 11.22.333.*
vsftpd : 11.22.33.*

W przypadku uciążliwych spamów lub naprzykrzających się masowych prób wejścia na serwer, możesz w ten sam sposób zablokować konkretny adres IP:
nano /etc/hosts.deny
ALL : 111.222.33.44

Można to również zrobić wpisując regułę do zapory ogniowej.

8. Reverse proxy
Ostatnim, ale nie najgorszym trikiem jest zainstalowanie serwera Nginx (jeśli domyślnie używasz Apache) jako odwróconego serwera proxy.

Serwer proxy to serwer pośredniczący, który przekazuje żądania dotyczące zawartości od wielu klientów do różnych serwerów w Internecie. Odwrotny serwer proxy to rodzaj serwera proxy, który zwykle znajduje się za zaporą sieciową w sieci prywatnej i kieruje żądania klientów do odpowiedniego serwera. Odwrotne proxy zapewnia dodatkowy poziom abstrakcji i kontroli, aby zapewnić płynny przepływ ruchu sieciowego między klientami a serwerami.

Typowe zastosowania odwrotnego serwera proxy obejmują:
– Równoważenie obciążenia — odwrotny serwer proxy może działać jako „policjant ruchu”, siedząc przed serwerami zaplecza i rozdzielając żądania klientów na grupę serwerów w sposób, który maksymalizuje szybkość i wykorzystanie pojemności, zapewniając jednocześnie, że żaden serwer nie jest przeciążony, co może obniżyć wydajność. Jeśli serwer ulegnie awarii, system równoważenia obciążenia przekierowuje ruch do pozostałych serwerów online.
– Akceleracja sieci — odwrotne serwery proxy mogą kompresować dane przychodzące i wychodzące, a także przechowywać często żądaną zawartość w pamięci podręcznej, co przyspiesza przepływ ruchu między klientami a serwerami. Mogą również wykonywać dodatkowe zadania, takie jak szyfrowanie SSL, aby odciążyć serwery internetowe, zwiększając w ten sposób ich wydajność.
– Bezpieczeństwo i anonimowość — przechwytując żądania kierowane do serwerów zaplecza, odwrotny serwer proxy chroni ich tożsamość i działa jako dodatkowa obrona przed atakami bezpieczeństwa. Zapewnia również dostęp do wielu serwerów z pojedynczego lokalizatora rekordów lub adresu URL, niezależnie od struktury sieci lokalnej.

Instalacji odwrotnego serwera proxy jeszcze nie zaprezentowałem w tym cyklu, lecz możliwe, że nastąpi to niebawem.

Mam nadzieję, że temat zabezpieczenia swojego serwera został przybliżony i pozwoli Ci na dodatkowe wzmocnienie własnej maszyny serwerowej.

Click to rate this post!
[Total: 15 Average: 5]

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna jest chroniona przez reCAPTCHA i Google Politykę Prywatności oraz obowiązują Warunki Korzystania z Usługi.