Константин, в штатном режиме ресурсов более чем достаточно, особенно если nginx держит постоянный коннект.
Необходима такая функция когда начинается атака на сервер на уровень application, скрипты её вычисляют весьма оперативно, и в идеальном варианте php записывает в memcached пару denyip$IP=1, а уже nginx бы отбивал.
А иначе надо складывать их куда-то и либо по крону закидывать в map, либо вообще писать демона который проверяет изменения файла и закидывает в iptable адреса, но это всё опять же криво, так как в идеале блокировку делать не постоянную, а к примеру на 1 час, этого достаточно чтобы отбиться, но в тоже время влитевший под блок случайный юзер не будет похоронен навсегда.