Проблема ещё в том, что апач прожорливый, и если пытаетесь защититься при помощи .htaccess от множества запросов - то скорее всего, эти запросы уже положат апач. А ещё, если адресов в чёрном списке будет много - то это сильно замедлит легитимные запросы, потому что при каждом запросе должен будет читаться и парситься .htaccess, который будет очень сильно расти.
Потому блокировать нужно явно ещё раньше, к примеру, средствами брандмауэра (если не рассматривать внешние способы защиты, при которой эта задача ложится на хостера или промежуточное звено вроде cloudflare, а до сервера доходят уже отфильтрованные запросы).
При большом объёме - чёрный список должен быть не линейным, т.к. время O(n) нас явно не устраивает, проверки наличия адреса будут занимать много времени, поможет к примеру ipset, хранящий отмеченные адреса в виде хэш-таблицы.