W poprzednim wpisie przedstawiłem podstawowe zabezpieczenia stron internetowych przy wykorzystaniu plików .htaccess, .htpasswd, php.ini. W tym wpisie pokażę jak stosować zaawansowane zabezpieczenia serwisów internetowych przy wykorzystaniu odpowiednich reguł w pliku .htaccess. Należy wziąć pod uwagę, że plik .htaccess może być stosowany na serwerach korzystających z webserwera Apache.
Dostęp do panelu administracyjnego strony internetowej
Dostęp do adresu panelu administracyjnego strony internetowej potencjalny napastnik może wykorzystać do przeprowadzenia ataku typu brute force przy wykorzystaniu bazy haseł ze słownika. Zabezpieczenie panelu logowania do zaplecza administracyjnego można zrealizować na kilka sposobów:
1.Pozostawić adres logowania bez zmian, dodając zabezpieczenie w postaci reCaptcha.
2.Pozostawić adres logowania bez zmian, dodając zabezpieczenie w 2FA, czyli 2-składnikowego uwierzytelnienia przy wykorzystaniu np. Google Authenticator czy Yubikey.
3.Zmienić adres logowania z domyślnego na inny, nietypowy dla danego CMSa, można dodatkowo stosować 2-składnikowe uwierzytelnienie.
4.Zablokować dostęp do adresu logowania do zaplecza administracyjnego za pomocą poniższego wpisu w pliku .htaccess, w efekcie można uzyskać dostęp do tego katalogu jedynie z wybranego adresu IP. Plik .htaccess musisz umieścić w katalogu który chcesz chronić. Tą metodę ochrony dostępu do katalogu administratora możesz połączyć z innymi (np. hasło, uwierzytelnienie 2FA):
#Access protection to specific directory limited to specified IP
Order Deny,Allow
Deny from all
#Whitelist includes following IP address
Allow from xxx.xxx.xxx.xxx
5.Zablokować dostęp do adresu logowania do zaplecza dla administracyjnego za pomocą użytkownika i hasła. Można do tego celu wykorzystać plik .htaccess do którego dodajemy wpis odwołujący się do pliku .htpasswd w którym znajduje się nazwa użytkownika i hasło wygenerowane wygenerowane wcześniej za pomocą serwisu http://www.kxs.net/support/htaccess_pw.html. Pełną ścieżkę dostępu do plików CMSa można podejrzeć w panelu klienta w firmie hostingowej na swoim koncie klienta i wykorzystać ją w poniższych wpisach.
W przypadku CMS Joomla do pliku .htaccess trzeba dodać poniższe reguły a plik .htaccess skopiować do katalogu administrator, podobnie jak plik .htpasswd.
#Protection in case of 404 Error or a several redirects errors
ErrorDocument 401 default
#Administrator area protection for Joomla /administrator
AuthUserFile /home/username/domains/example.com/public_html/administrator/.htpasswd AuthName "Don’t hack me! Wpisz nazwe uzytkownika i haslo :-)"
AuthType Basic
Require valid-user
W przypadku CMS WordPress do pliku .htaccess w głównym katalogu WP (root) trzeba dodać poniższe reguły. Dodatkowo do głównego katalogu WP należy skopiować wcześniej przygotowany plik .htpasswd.
#Protection in case of 404 Error or a several redirects errors
ErrorDocument 401 default
#Administrator area protection for WordPress
<Files wp-login.php>
AuthUserFile /home/username/ domains/example.com/public_html/.htpasswd
AuthName Don’t hack me! Wpisz nazwe uzytkownika i haslo :-)"
AuthType Basic
require valid-user
</Files>
Do innych CMSów możesz wykorzystać powyższy schemat zmieniając nazwę katalogu administratora względnie pliku wykorzystywanego do logowania do zaplecza administracyjnego.
Zalecenia OWASP
W celu lepszego zabezpieczenia serwisu internetowego warto skorzystać z zaleceń OWASP:
https://www.owasp.org/index.php/PHP_Configuration_Cheat_Sheet
https://www.owasp.org/index.php/OWASP_Wordpress_Security_Implementation_Guideline
Blokada botów i exploitów
W celu blokady złośliwych botów i ich ataków możesz podpiąć swój serwis internetowy do CDN Cloudflare. Boty możesz blokować również za pomocą reguł w pliku .htaccess. Złośliwe boty wykorzystują Twoje zasoby na serwerze firmy hostingowej, często są wykorzystywane do rekonesansu i zbadania podatności serwisu internetowego. To dobry powód aby je blokować. Inspiracje i wzorce reguł do pliku .htaccess możesz znaleźć w poniższych serwisach:
https://perishablepress.com/block-bad-bots/
http://www.htaccess-guide.com/blocking-offline-browsers-and-bad-bots/
https://pastebin.com/BPRv4TDd
https://www.askapache.com/htaccess/blocking-bad-bots-and-scrapers-with-htaccess/
https://gist.github.com/iAugur/35345f738baa7f8699b7
https://www.askapache.com/htaccess/
Zaawansowane reguły blokowania napastników próbujących wstrzyknąć złośliwy kod do serwisu internetowego (hackowania) znajdziesz pod poniższymi adresami:
6G Firewall 2017,
Wzór htaccess blokującego exploity dla WordPressa,
HackRepair.com’s blacklist.
Wzorce pliku .htaccess dla CMSów
Poniżej umieszczam linki do wzorców pliku .htaccess dla różnych CMSów przygotowanych pod kątem poprawy bezpieczeństwa stron internetowych. Wystarczy je dopasować do swoich potrzeb przy uwzględnieniu uwarunkowań serwera w firmie hostingowej.
Plik .htaccess dla WordPress
Wzór pliku .htaccess dla CMS WordPress zawierający reguły w pliku .htaccess podnoszące poziom bezpieczeństwa WordPress na wyższy poziom znajdziesz na:
https://github.com/JayHoltslander/jays-wp-htaccess/blob/master/.htaccess
Plik .htaccess dla Joomla
Wzór pliku .htaccess dla CMS Joomla! zawierający reguły w pliku .htaccess podnoszące poziom bezpieczeństwa Joomla na wyższy poziom znajdziesz na:
https://docs.joomla.org/Htaccess_examples_(security)
Plik .htaccess dla Drupal
Wzór pliku .htaccess dla CMS Drupal zawierający reguły w pliku .htaccess podnoszące poziom bezpieczeństwa Drupal na wyższy poziom znajdziesz na:
https://www.drupal.org/project/htaccess
Plik .htaccess dla Prestashop
Wzór pliku .htaccess dla Prestashop zawierający reguły w pliku .htaccess podnoszące poziom bezpieczeństwa Prestashop na wyższy poziom znajdziesz na:
https://www.prestashop.com/forums/topic/192913-optimized-htaccess-file-fix-for-ssl-insecure-page-issues-and-fix-for-payment-gateway-errors/
Plik .htaccess dla Magento
Wzór pliku .htaccess dla Magento zawierający reguły w pliku .htaccess podnoszące poziom bezpieczeństwa Magento na wyższy poziom znajdziesz na:
https://github.com/Creare/magento-htaccess/blob/master/.htaccess
Korzystając z powyższych zasobów możesz całkiem nieźle zabezpieczyć serwis internetowy którym administrujesz (w porównaniu do sytuacji w której stosujesz domyślny dla danego CMSa plik .htaccess). Większość reguł w pliku .htaccess ma uniwersalny charakter, nie związany z żadnym konkretnym CMSem. W przypadku konkretnych CMSów warto się przyjrzeć dedykowanym dla nich regułom. Należy pamiętać, że bezpieczeństwo serwisu www jest zależne od bezpiecznej konfiguracji serwerów w firmie hostingowej. W przypadku serwerów współdzielonych zależy równieæ od innych użytkowników serwera, którzy mogą mieć inną świadomość bezpieczeństwa.
Podsumowanie
Dla jasności – dopisanie reguł w pliku .htaccess podnosi bezpieczeństwo serwisu internetowego ale nie gwarantuje całkowitego bezpieczeństwa serwisu. Bezpieczeństwo to proces, dlatego należy ciągle śledzić zmiany i nowe techniki stosowane przez cyberprzestępców aby móc na nie reagować. Warto korzystać z dedykowanych dla poszczególnych CMSów zapór ogniowych (WAF) i stosować dodatkowe metody minimalizacji ryzyka włamania. A jakie metody zabezpieczenia serwisów internetowych Ty polecasz?
0 komentarzy