1. Zaczynamy od aktualizacji serwera
sudo apt get update
2. Instalujemy dodatek
Wpisujemy w terminalu sudo apt install xtables-addons-common
3. Tworzymy folder xt_geoip
w /usr/share/
sudo mkdir /usr/share/xt_geoip
4. Instalujemy wsparcie dla plików CSV/XS oraz pakiet do rozpakowywania
sudo apt install libtext-csv-xs-perl unzip
5. Uruchamiamy DL
/usr/lib/xtables-addons/xt_geoip_dl
(nie wiem, jak to nazwać, jak ktoś wie, to proszę napisać w poście to poprawię ;) )
6. Budujemy plik .csv
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
Przykładowe użycie IPTables
z GeoIP
:
Blokada jednego kraju
iptables -A INPUT -m geoip --dst-cc CN -j DROP
Po wpisaniu tej komendy, połączenie wchodzące z Chin zostanie zablokowane.
Wiele krajów
iptables -A INPUT -m geoip --src-cc CN,RU -j DROP
Po wpisaniu tej komendy, połączenie wchodzące z Chin i Rosji zostanie zablokowane.
Blokada kraju na dany port
iptables -A INPUT -m geoip --dst-cc CN --dport 443 -j DROP
Po wpisaniu tej komendy, połączenie wchodzące z Chin na porcie 443 (HTTPS) zostanie zablokowane.
Jak uzupełnić?
iptables -A INPUT -m geoip --dst-cc SK -j DROP
W miejscu liter SK wpisujemy kod alfa-2
państwa, czyli dwuliterową nazwę kraju.
Lista krajów https://pl.wikipedia.org/wiki/ISO_3166-1
Wyjaśnienie skrótów
-A
ruch
INPUT
- ruch wchodzącyOUTPUT
- ruch wychodzący
-j
Co ma zrobić?
ACCEPT
- zaakceptować (przyjąć)DROP
- odrzucić (wyciąć)
Pytania i odpowiedzi
[P] Czy da się zrobić wyjątek dla jednego adresu ip wyciętego całego kraju? [O] Nie, nie da się.
[P] Jak zapisać IPTables, żeby zostały załadowane po ponownym uruchomieniu?
[O] Wystarczy wpisać iptables-save
[P] W jaki sposób usunąć wszystkie reguły z IPTables? [O]
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -X
Źródło: https://superuser.com/questions/996526/ubuntu-iptables-allow-only-allow-1-country