Действительно, скрипт генерит готовые правила для NetFilter в виде
iptables -I INPUT -s 1.0.1.0/24 -j DROP
Замечательно, что при необходимости его можно легко перепилить под свои нужды.
У меня правила фаера генерятся несколькими скриптами, "черный список" вынесен в отдельную пользовательскую цепочку black_list, которая легко автоматически заполняется приведенным скриптом.
Лишние пробелы до IP и после IP в генерируемых строках я все-же убрал:
Было
iptables -I INPUT -s 1.0.1.0/24 -j DROP
Стало
iptables -I INPUT -s 1.0.1.0/24 -j DROP
Смутил вот этот момент, который Вы указали:
Различные бесплатные базы GeoIP довольно древние
Куча народу использует эти базы для ограничения доступа в NetFilter и Apache.
А вот здесь:
Например, основной поставщик бесплатных данных maxmind.com, бесплатно раздаёт неполные данные 2012 года.
Сразу возникает просьба к Вам: привести алгоритм (или готовый скрипт) для обновления файла GeoIP_Country_CIDR_golota.cidr, ибо его содержимое так или иначе будет устаревать, и неплохо бы его как минимум раз в год переливать заново.
Еще один момент, о котором спорят на разных форумах:
Утверждается, что xtables_geoip
меньше грузит проц при фильтрации трафика, чем тупо цепочка правил iptables -I INPUT -s 1.0.1.0/24 -j DROP.
Хотя, по логике, с какого оно будет меньше, т.к. все равно производится обращение к локальной базе адресов, поиск по критерию, принятие решения на основе результатов поиска и т.д.
Однако, если в качестве шлюза используется физическая машина, с каким-нибудь недревним Core2DUO или Athlon 2 X2 на это можно забить, ибо прирост нагружения на не очень старом железе заметен сильно не будет.
Каково Ваше мнение по данному поводу?
UPD:Народ бродит по китайским сайтам-барахолкам типа taobao, в то же время нам надо забанить их активность, чтоб не сканили и не пинговали.
Используем механизм контроля состояния:
iptables -I INPUT -p all -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
И уже теперь Ваши правила, но немного модифицированные:
iptables -I INPUT -s 1.0.1.0/24 -m conntrack --ctstate NEW -j DROP
А вообще целесообразнее для снижения нагрузки на машину выгрузить бан-лист в отдельную цепочку, и кидать в нее пакеты из INPUT с состоянием NEW.
В конце цепочки ставим "-j RETURN" (что необязательно, ибо по умолчанию так).
Большинство трафика - со статусами ESTABLISHED,RELATED - пойдет через первое правило и не будет попусту проверяться нагружая проц.