Блокировка доступа по ip-адресам в htaccess

Краткая памятка по ограничению доступа к сайту.

Началось с того, что задолбали спамеры из Польши. Поскольку я рассчитываю на российскую аудиторию, решил не городить огород, а просто блокировать весь диапазон, в котором засветился спамер.

Для ограничения прав доступа в .htaccess существуют директивы Deny и Allow.

Первым шагом следует задать порядок их обработки, например:

Order Allow, Deny

Порядок следования -  Allow, Deny или Deny, Allow - имеет значение:

  • При Allow, Deny сначала обрабатываются разрешающие правила Allow, затем запрещающие Deny. Действия, не подпадающие ни под одну из директив Allow или Deny, будут запрещены по умолчанию.
  • При Deny, Allow сначала обрабатываются запрещающие правила Deny, затем разрешающие Allow. Действия, не подпадающие ни под одну из директив Deny или Allow, будут разрешены по умолчанию.

Следующим шагом указываются блокируемые ip, например:

deny from 83.4.0.0

Можно не указывать последние октеты, и тогда будет заблокирован весь пропущенный диапазон адресов:

deny from 83.4.0

Но в моем случае нужно было ограничить диапазон  83.4.0.0 - 83.11.255.255. Перечислять 11 диапазонов лень. А если завтра их станет 200? Решение есть и в этом случае - нужно указать диапазон в синтаксисе т.н. безклассовой адресации (CIDR). Совсем раем делает жизнь онлайн-калькулятор ip-диапазона в CIDR. Вводим туда наш диапазон и получаем готовое правило:

deny from 83.4.0.0/14
deny from 83.8.0.0/14

Еще ссылка на полезный  список ip-диапазонов по географическому признаку.