Moja witryna codziennie otrzymuje tysiące odwiedzin z różnych adresów IP próbujących uzyskać dostęp:
/php-myadmin/
/myadmin/
/mysql/
... i tysiące innych odmian. Żaden z tych katalogów nie istnieje, nawet nie mam phpmyadmin na moim serwerze.
Nie sądzę, aby któraś z tych prób zakończyła się sukcesem, jednak muszą one odbijać się na zasobach serwera i marnować przepustowość, więc chciałbym je zatrzymać, jeśli to możliwe. Zablokowałem garść tych adresów IP, ale one wciąż wracają z nowymi adresami IP, czy jest jakiś sposób, aby temu zapobiec na stałe?
web-server
hacking
amba88
źródło
źródło
mod_security
tym w tym temacie, więc sprawdź to . Zwróć uwagę na komentarz pod uwagą, że to faktycznie spowodowałoby więcej pracy serwera. Może więc dobrzemod_evasive
byłoby też wdrożyć .fail2ban
, ale to jest wymienione poniżej.Odpowiedzi:
Nie martw się o to. Podanie 404 to niewielka, niewielka ilość pracy dla serwera WWW. Prawdopodobnie mógłbyś podać dziesięć 404 na sekundę, używając 486. Przepustowość na 404 jest znikoma; małe żądanie GET i mała odpowiedź 404.
Poważnie; nie martw się o to. To tylko część działania serwera w Internecie.
źródło
Niestety dla Ciebie tak działa Internet. Po prostu to zignoruj. Tysiące botów / trojanów skanuje Internet. Źródłowy adres IP będzie zawsze losowy. Nie ma lekarstwa.
Jedyne 100% rozwiązanie dla wyeliminowania tego ruchu pokazano poniżej:
Alternatywą jest:
- przejście z https / http z portu 80/443 na coś innego. Boty zwykle nie szukają serwera HTTP na wszystkich innych portach 65k.
- użyj VPN, aby połączyć się z serwerem (myślę, że nie jest to możliwe, jeśli prowadzisz publiczną stronę internetową).
źródło
To, czego chcesz, to Fail2ban (zakładając, że to maszyna z systemem Linux, nie powiedziałeś ...)
Co to jest Fail2ban?
Fail2ban przeanalizuje dzienniki systemowe, szukając określonych wyrażeń regularnych do zablokowania. Kiedy znajdzie dopasowanie (lub kilka dopasowań z tego samego adresu IP, w zależności od tego, jak je skonfigurujesz), zostanie zablokowane, zwykle za pośrednictwem IPTables. Zwykle służy to do blokowania nieudanych prób uwierzytelnienia przeciwko SSH lub serwerom internetowym.
Skonfigurujesz go tak, aby banował przez określony czas (może to być minut, może być dni ... zależy od tego, jak są trwałe), po czym ban wygaśnie, chyba że spróbuje ponownie.
W jaki sposób pomaga to blokować boty skanujące phpmyadmin?
Równie łatwo można go użyć do dopasowania typowych oznak ataku, takich jak próba uzyskania dostępu do nieistniejących folderów phpmyadmin. Musisz znaleźć prawidłowe wyrażenie regularne, aby dopasować je do takich prób i upewnić się, że nie blokujesz legalnych użytkowników.
Konfiguracja podana w tym poście na blogu może działać dosłownie lub wymagać drobnych poprawek w konfiguracji.
Dlaczego mam je blokować? Błędy 404 nie kosztują dużo
Zablokowanie ich w iptables ma pewne zastosowanie - istnieje prawdopodobieństwo, że sprawdzą podatność na phpmyadmin, mogą wypróbować również inne usługi pod kątem luk, dopóki nie trafią na coś, co działa. Zakazanie ich spowoduje, że większość botów / skryptów zrezygnuje po pewnym czasie i przejdą do lepszych celów.
Nawet podczas skanowania nie kosztują dużo (chyba że faktycznie znajdują lukę), zalewają twoje logi, co utrudnia dostrzeżenie udanych ataków i problemów z twoim serwerem internetowym.
Jak mówi poniższy komentarz, Fail2ban wymaga pewnych zasobów systemowych. Ale nie za dużo. Przynajmniej mogę powiedzieć, że nigdy nie miałem problemu z wydajnością, który mógłbym przypisać do Fail2ban. Miałem jednak problemy z wydajnością od bardzo agresywnych skryptów próbujących brutalnie wymuszać hasła lub rzucających tysiące prób iniekcji SQL i innych exploitów na sekundę na moim serwerze. Blokowanie ich na poziomie zapory zabiera o FAR mniej zasobów niż blokowanie ich na poziomie serwera / aplikacji. Można go także rozszerzyć, aby uruchamiał niestandardowe skrypty blokujące adresy IP - więc zamiast banować je w tabelach IP, możesz mieć możliwość zablokowania ich w zaporze sprzętowej lub wysłać e-mail do kogoś, jeśli ta sama osoba próbuje cię zaatakować, abyś mógł złożyć skargę do swojego dostawcy usług internetowych lub niech twoje centrum danych zablokuje je w swoich zaporach ogniowych.
Jakieś inne wskazówki?
WYSOCE ZALECANE jest, aby umieścić na białej liście kilka adresów IP, które kontrolujesz, aby nie przypadkowo się zablokować.
źródło
To, co robię, to umieszczenie małego skryptu w odpowiednim katalogu, aby działał, jeśli ktoś uzyska dostęp do / phpmyadmin /. Ten skrypt nie robi nic poza wywoływaniem iptables (pod Linuksem), który blokuje adres IP uzyskujący dostęp do skryptu na 30 minut (po czym zadanie cron opróżnia łańcuch iptables, do którego adres IP zostaje dodany).
Przewagą nad fail2ban jest to, że nie używasz żadnych zasobów do analizowania syslog / logu dostępu. Wadą jest oczywiście to, że nie sprawdzasz niczego innego, oprócz dostępu do tego bardzo konkretnego adresu.
Dlaczego to robię? Jasne, serwowanie 404 byłoby łatwe dla serwera, ale nie chcę, żeby się grzebały, takie proste. Chcę zmarnować czas narzędzia, czekając na odpowiedź serwera i ponawiając próbę, aż w końcu się podda. Ponadto, jeśli ich nie zablokujesz, wypróbują wiele różnych adresów URL, zanim w końcu przejdą dalej - czasem ponad tysiąc. W zależności od narzędzia może to być „miłe” i rozłożyć je w ciągu kilku godzin lub po prostu nie dbać o nie i wbić serwer we wszystkie w ciągu kilku minut.
Dlaczego nie wyświetlam prawidłowej strony? Ich narzędzie może przestać Cię skanować i ostrzec skiddiego, który je uruchamia - który następnie musi sprawdzić ręcznie. Wadą tego jest to, że dadzą Twojemu serwerowi znacznie bliższe spojrzenie, niż gdyby, gdyby ich skanowanie nie spowodowało pojawienia się w wynikach. Może jeszcze trochę pogrzebią, może kilka skanów portów, może ich zdenerwujesz i uruchomią DoS, aby sprawdzić, czy mogą coś zrobić. Po prostu ich zablokowanie - co z ich punktu widzenia powoduje, że serwer przestaje działać w momencie, gdy uzyskują dostęp do skryptu phpmyadmin - skutecznie marnuje czas narzędzia, unikając przy tym niepożądanej uwagi.
Jeśli masz phpMyAdmina na serwerze, skutecznym rozwiązaniem może być umieszczenie go w osobnym katalogu i użycie kontroli hasła serwera WWW (.htpasswd dla Apache), aby zablokować dostęp, zanim cokolwiek do niego dotrze.
źródło
FWIW ograniczamy dostęp do / phpmyadmin / tylko do adresów IP z białej listy.
Używamy również mod_evasive (na apache2), aby powstrzymać DOS / źle zachowane ataki skryptowe.
źródło
powiąż narzędzie administracyjne mysql z adresem sprzężenia zwrotnego maszyny 127.0.0.1
następnie użyj ssh z przekierowaniem portów, aby uzyskać dostęp do zaplecza administratora.
dodaj dodatkową warstwę bezpieczeństwa, która może być dość przezroczysta.
źródło
Najlepszym sposobem, jaki znaleźliśmy, jest ochrona hasłem folderu, w którym znajduje się phpmyadmin. Nie używaj też niczego, co dotyczy phpmyadmin jako nazwy folderu: pma, phpmy itp.
źródło
None of these directories exist, I don't even have phpmyadmin on my server.
- Nie pyta, jak zahartować swoje instalacje ... pyta, co zrobić z rzeczami, które nie istnieją. Nie możesz zmienić nazwyPMA
ani tego, co masz, jeśli nie istnieje.