S Čínou i Ruskem jsou potíže, jsou veliké.
Nedávno zde proběhl článek Linux firewall: Blokujeme pomocí IPSET jak blokovat rozsáhlá pravidla v linux firewallu bez výkonové penalizace.
Dnes bych rád na toto téma lehce navázal, ukážeme si jak efektivně zablokovat provoz z konkrétní země, v našem případě jde o Čínu a Rusko, bude to jednoduché a rychlé, slibuji.
Co budeme potřebovat? Nástroj IPset,wget a seznam rozsahů konkrétní země.
Vytvoříme si dvě hash tabulky, následně stáhneme pomocí nástroje wget soubor veřejných rozsahů, aplikujeme v jednoduchém cyklu na ipset a poté pouze nasadíme iptables.
Pojďme na to!
root@havel-machine:~# ipset -N china hash:net root@havel-machine:~# ipset -N russia hash:net root@havel-machine:~# wget http://www.ipdeny.com/ipblocks/data/countries/cn.zone root@havel-machine:~# wget http://www.ipdeny.com/ipblocks/data/countries/ru.zone root@havel-machine:~# for i in $(cat cn.zone ); do ipset -A china $i; done root@havel-machine:~# for i in $(cat ru.zone ); do ipset -A russia $i; done root@havel-machine:~#
iptables-A INPUT -p tcp -m set --match-set china src -j DROP root@havel-machine:~#
iptables-A INPUT -p tcp -m set --match-set russia src -j DROP
A to je vše! Dejte si pozor kam umístíte iptables DROP pravidla, musí být povětšinou před zbytkem pravidel, jinak nebudou mít efekt.
Prozkoumejte podrobněji www.ipdeny.com , k dispozici jsou i agregované seznamy rozsahů (v našem případě použit ne-agregovaný seznam, ipset agreguje za nás), pěkný je online generátor pravidel do iptables,ipchain,ipfw.acl. Co mě překvapilo je i seznam IPv6 rozsahů http://www.ipdeny.com/ipv6/ipaddresses/blocks/ , prostě skvělé.
K dokonalosti je vhodné celé řešení zabalit do scriptu, ošetřit možné chyby kolem wget a pravidelně aktualizovat, nechávám za domácí úkol.
Díky za Váš čas. František Havel