Ubuntu IPTables zezwala tylko na 1 kraj

10

Rozglądałem się w sieci w poszukiwaniu skryptu, który zrzuci cały ruch na wszystkie porty z wyjątkiem portów http (80) i https (443), a następnie zezwoli tylko na ruch na wszystkich innych portach z kraju x (gdzie w moim przypadek kraju x to USA).

Nie chcę dodawać wszystkich adresów IP z każdego kraju, chcę tylko zezwolić Ips z mojego kraju, a następnie zablokować prawie cały inny ruch ze świata zewnętrznego. Nikt poza moim krajem nie powinien mieć dostępu do ssh, ftp, smtp, ect. inny niż ja. Jeśli to się kiedykolwiek zmieni, dodam specjalny przypadek, gdy się to zbliży.

Dygresja

Muszę zauważyć, że znalazłem pytanie, które zawiera skrypt blokujący ip według kraju za pomocą tabel ip, ale to jest wiele dodatkowych wstawek, które musiałbym zrobić.

Skrypt oznaczony jako najlepsza odpowiedź zablokuje cały ruch z tych adresów IP. Chcę tylko zablokować dostęp do wszystkich portów oprócz 80 i 443.

Aktualizacja

Zgodnie z następującą zasadą

iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

czy mógłbym to zmodyfikować i zrobić coś takiego

iptables -A OUTPUT -m geoip --dst-cc CN --dport 80 -j ACCEPT
iptables -A OUTPUT -m geoip --dst-cc CN --dport 443 -j ACCEPT
iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

Zakładam, że pozwoliłoby to IPS z Chin na dostęp do portu 80 i portu 443, a resztę pozostawiłoby. Czy to założenie byłoby słuszne? Jeśli nie, dlaczego nie?

Aktualizacja 2

Po pewnym zamieszaniu okazało się, że moja wersja Ubuntu nie lubi tego --dportatrybutu. Więc zamiast korzystać z tego, że użytkownicy systemu Ubuntu 14+ (przynajmniej mam tylko Ubuntu 14.04, 14.10 i 15.04 zainstalowane na niektórych komputerach) będą musieli użyć-p PORT_NUMBER_OR_NAME

Tak by to wyglądało

iptables -A OUTPUT -m geoip --dst-cc CN -p 443 -j ACCEPT

lub dla ruchu przychodzącego,

iptables -A INPUT -m geoip --src-cc CN -p 443 -j ACCEPT
Austin Kregel
źródło

Odpowiedzi:

7

Musisz dodać obsługę iptables dla geolokalizacji. Aby to zrobić, musisz wykonać następujące kroki:

# apt-get install xtables-addons-common
# mkdir /usr/share/xt_geoip
# apt-get install libtext-csv-xs-perl unzip
# /usr/lib/xtables-addons/xt_geoip_dl
# /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

To pozwoli ci robić takie rzeczy jak:

iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

To zablokowałoby wszelki ruch wychodzący do Chin (CN). Złożoność reguł zależy od Ciebie, w zasadzie nie potrzebujesz skryptu, po prostu zapisz reguły, które chcesz zastosować, a następnie użyj, iptables-saveaby były ładowane przy każdym ponownym uruchomieniu.

nKn
źródło
Dziękuję Ci! Mam inne pytanie, zaktualizowałem swoje pytanie powyżej, aby je odzwierciedlić. Czy znasz odpowiedź na to pytanie?
Austin Kregel
Reguła zadziałałaby, ale musisz zmienić jej kierunek, teraz jest OUTPUTi musisz ją ustawić INPUTi nie używać, --dst-ccale --src-cczamiast tego. Ale jeśli pytanie brzmi, czy powinno działać w połączeniu z dowolną inną istniejącą iptablesregułą, odpowiedź brzmi tak.
nKn
xt_geoip_dlkomenda nie działa, to wymaga zip, że nie robi już istnieje
Martijn