Właśnie zalogowałem się na serwerze GitLab i zauważyłem, że od czasu ostatniego sprawdzania serwera 18.974 nie udało się zalogować - prawie 5 dni. Sprawdziłem IP i wydaje się, że prawie wszystkie były z Chin i próbowałem uzyskać dostęp za pomocą SSH i Brute Force. Zacząłem blokować niektóre IP, ale potem zdałem sobie sprawę, że to ogromna strata czasu i lepszym pomysłem byłoby zablokowanie całego kraju.
Czy mogę zablokować WSZYSTKIE Chiny lub inny kraj za pomocą iptables?
Znalazłem kilka artykułów w Internecie, ale prawie wszystkie z nich to skrypty bash. Jestem nowicjuszem w Linuksie, więc tak naprawdę nie rozumiem wszystkich tych skryptów. Uważam, że iptables są naprawdę interesujące i chcę dowiedzieć się więcej na ten temat.
Jakieś pomysły ? Dziękuję Ci!
Odpowiedzi:
Używając iptables do automatycznej identyfikacji, a następnie blokowania, złych facetów za ssh można zrobić za pomocą
recent
modułu. Następujący segment musi znajdować się poESTABLISHED,RELATED
linii ogólnej :Teraz ostatnim (ostatnim rokiem lub dwoma) problemem związanym z Chinami jest to, że stały się bardzo sprytne i bardzo często po zablokowaniu jednego adresu IP po prostu przełączają się na inny w tej samej podsieci i kontynuują. Grozi to ryzykiem wyczerpania ostatnich pozycji w tabeli (domyślnie 200). Monitoruję to, a następnie sprawdzam rzeczywisty segment IP i trwale blokuję cały segment. W moim przypadku nie obchodzi mnie uszkodzenie dodatkowe, tj. Zablokowanie kogoś niewinnego:
Gdzie w powyższym:
Możesz uzyskać całą listę adresów IP dla Chin lub dowolnego kraju w formacie iptables lub innym tutaj . Lista jest jednak zaskakująco długa i dość dynamiczna. Sam postanowiłem nie blokować całej listy.
źródło
Blok Chin przy użyciu ipset
Nie możesz ręcznie dodać kilku tysięcy adresów IP do swoich iptables, a nawet robienie tego automatycznie jest złym pomysłem, ponieważ może powodować duże obciążenie procesora (a przynajmniej tak czytałem). Zamiast tego możemy użyć ipset, który jest przeznaczony do tego rodzaju rzeczy. ipset obsługuje duże listy adresów ip; po prostu utwórz listę, a następnie powiedz iptables, aby używała tej listy w regule.
Uwaga; Zakładam, że całość poniższych czynności jest wykonywana jako root. Dostosuj odpowiednio, jeśli twój system jest oparty na sudo.
Następnie napisałem mały skrypt Bash, aby wykonać całą pracę, którą powinieneś być w stanie zrozumieć na podstawie zawartych w nim komentarzy. Utwórz plik:
Oto, co chcesz wkleić w to:
Zapisz plik. Spraw, by był wykonywalny:
To jeszcze nic nie zrobiło, ale za chwilę uruchomimy skrypt. Najpierw musimy dodać regułę do iptables, która odnosi się do tej nowej listy ipset, którą definiuje powyższy skrypt:
Dodaj następujący wiersz:
Zapisz plik. Dla jasności moje pełne iptables.firewall.rules wygląda teraz tak:
W tej chwili nic się nie zmieniło na serwerze, ponieważ nie zastosowano żadnych nowych reguł; w tym celu uruchom skrypt block-china.sh:
Powinno to pokazać dane wyjściowe, ponieważ pobiera świeżą listę adresów IP opartych na Chinach, a następnie po kilku sekundach zakończy się i spowoduje powrót do wiersza polecenia.
Aby sprawdzić, czy zadziałało, uruchom:
Powinieneś zobaczyć nową regułę blokującą Chiny - wynik powinien wyglądać następująco:
Prawie skończone! Działa to i będzie nadal działać przy ponownym rozruchu. Ale adresy IP ulegają zmianie i lista ta z czasem staje się nieaktualna. Jeśli chcesz pobrać i zastosować zaktualizowaną listę adresów IP, możesz ponownie uruchomić skrypt block-china.sh.
Możemy również ustawić maszynę tak, aby robiła to automatycznie za pomocą zadania cron:
Dodaj linię taką jak ta:
Spowoduje to uruchomienie /etc/block-china.sh o 5 rano każdego dnia. Użytkownik uruchamiający skrypt musi być rootem lub mieć uprawnienia roota.
źródło
źródło
wget http://www.ipdeny.com/ipblocks/data/aggregated/cn-aggregated.zone
Możesz zainstalować coś takiego, jak fail2ban, aby blokował ips przy próbie zalogowania się na serwerze i nie powiódł się.
źródło
Możesz użyć modułu geoip dla iptables: https://linoxide.com/linux-how-to/block-ips-countries-geoip-addons/
źródło
Użyć do IP2Location List Firewall wygenerować iptables dla Chin.
Plik ma następujący format. Uruchom go w powłoce i powinieneś blokować wszystkie chińskie adresy IP.
źródło