W poprzednich artykułach, zaprezentowane zostały metody skanowania systemów oraz usług hostowanych na nich, które atakujący wykorzystują, aby zdobyć interesujące dla nich informacje o potencjalnym celu.
Jakie zatem mechanizmy obronne mogą zastosować administratorzy czy właściciele serwerów, aby utrudnić zdobywanie tych cennych informacji?
Poniżej znajduje się parę przykładów takich mechanizmów.
Utwardzanie (ang. Hardening) serwera
W skrócie, metoda ta polega na takiej konfiguracji systemu, aby dostępne publicznie zostały jedynie te usługi, które zostały zaimplementowane w celu biznesowej realizacji serwera. Dostęp do wszystkich innych usług powinien podlegać restrykcjom, aby możliwie obniżyć poziom ryzyka włamania przy jednoczesnym umożliwieniu działania systemu zgodnie z jego przeznaczeniem.
Bardzo istotnym elementem wykonywania utwardzenia serwera jest filtrowanie portów, które hostuje.
Polega to na pozostawieniu jedynie tych portów jako publicznie dostępne, które muszą znajdować się w takim stanie, aby realizować cel biznesowy rozwiązania. Pozostałe porty, zwłaszcza te które są krytyczne z punktu widzenia systemu (np. panele administracyjne do zarządzania systemem) powinny być zamknięte (o ile to możliwe) lub filtrowanie jedynie do dedykowanych adresów IP (np. administratorów) czy podsieci wewnętrznej.
Oczywiście należy mieć na uwadze, że tego typu zabiegi nie eliminują ryzyka włamania się przez atakującego do systemu, a jedynie obniżają ryzyko. Wartym rozważenia jest również scenariusz w którym atakujący jest tzw. insiderem, czyli użytkownikiem (np. pracownikiem), który ma dostęp do systemu z dedykowanego adresu IP.
Przykładem takiego działania, może być np. wyfiltrowanie dostępu do aplikacji www, która jest serwowana na serwerze webowym apache.
Aby taką filtrację skonfigurować, należy w pliku .htaccess dodać odpowiednie instrukcje:
W tym przypadku, ruch został ograniczony do adresu IP 127.0.0.1.
Próbując połączyć się z serwerem webowym z innego adresu IP, niż ten zdefiniowany w pliku .htaccess, użytkownik dostaje następujący komunikat.
Co wskazuje na brak uprawnień.
Chowanie banerów usług
Metoda ta polega na takiej konfiguracji usług, aby nie zdradzały one informacji o niej lub też możliwie ograniczyły, bądź utrudniły zdobywanie informacji o niej dla atakującego.
Dobrym przykładem wydaje się być serwer webowy apache, który jest powszechnie znany oraz wykorzystywany do hostowania aplikacji www.
W domyślnej konfiguracji proste skanowanie narzędziem nmap, daje następujące wyniki:
Jak widać, atakujący mając dostęp do serwera, może bezproblemowo sprawdzić wersję hostowanego serwera apache.
Dodając w pliku konfiguracyjnych serwera apache (domyślna lokalizacja tych plików to :/etc/apache2/apache2.conf lub /etc/httpd2/conf/httpd.conf) dwie poniższe instrukcje, w efekcie wersja apache nie powinna być już eksponowana.
Aby zweryfikować skuteczność metody, należy wykonać ponownie skanowanie usług w trybie wydobywania hostowanych wersji
Jak widać, serwer webowy apache, nie pokazuje już w jakiej wersji występuje na serwerze.
Weryfikacja ręczna, również daje ten sam wynik.
Podsumowanie
Powyższe metody są jedynie przykładami, które są mniej lub bardziej skuteczne i nie wyczerpują możliwości, które stoją przed administratorami systemów czy sieci. Każda konfiguracja mająca wpływ na ekspozycję, konfigurację czy ogólnie bezpieczeństwo systemu powinna być poprzedzona rzetelną analizą ryzyka.
Należy mieć także świadomość, że w wyścigu, w którym uczestniczą hakerzy oraz osoby zajmujące się zabezpieczaniem swoich informacji, dwa kroki bliżej do mety mają niestety jednak hakerzy. To oni, determinując metody ataków, wyznaczają niejako metody potrzebne do zabezpieczenia swoich systemów. Poprawki bezpieczeństwa (tzw. patche) dla danego systemu pojawiają się najczęściej w odpowiedzi na informację o znalezionej dziurze oraz metodzie ataku na ten system.
Fajny artykuł, szkoda, ze krótki i tylko liznął temat. Warto by było trochę się rozpisać, a nie tylko skupić się na Apache temat jest na tyle szeroki, że warto było by go rozwinąć i zrobić z tego fajny przewodnik dla mniej zaawansowanych administratorów.
Jest pomysł aby autor tego tekstu wypuścił serię odnośnie kompleksowego podejścia do obrony systemów 😉
Przydatny artykuł, szkoda że taki krótki 🙂
Jeśli chodzi o hardening, pociągnąłbym temat dalej (na przyszłe artykuły) popularnych usług (np. SSH, nginx, czy wdrożenie Fail2Ban).
temat który warto kontynuować cyklem kolejnych tekstów.