- Блокировка стран через mod_geoip и Apache
- Как заблокировать доступ к сайту по IP, защитив его от спам-ботов и хакеров?
- Блокировка IP-адресов директивой Deny
- Блокировка IP-адресов модулем mod_rewrite
- Блокировка IP-адресов стран Северной Америки модулем mod_rewrite
- Блокировка всех IP-адресов, кроме стран СНГ, Bing, Google, Yahoo
- Защита сайта с помощь модуля mod_setenvif
- Дополнительные настройки в файле .htaccess
- Защита сайта от «левых» параметров в запросах
- Защита сайта от хотлинка с использованием модуля mod_setenvif
- Защита сайта от хотлинка с использованием модуля mod_rewrite
- Htaccess блокировка по стране
Блокировка стран через mod_geoip и Apache
Если Вы владелец своего доменного имени и у вас есть cвой сайт, а еще лучше если имеется доступ к параметрам конфигурирования и установки дополнительных пакетов на сервер, то есть где развернуться.
При создании и размещении сайта своими силами или при помощи специализирующихся фирм http://profi-site.info/sozdanie-sajtov-v-sochi.html, необходимо позаботиться о его защите.
В данном материале пойдет речь о блокировке доступа определенным странам к сайту на веб сервере Apache и модуля libapache2-mod_geoip.
Про установку Apache на Ubuntu 12.04 можно прочитать здесь Установка Apache2 + PHP+Mysql на Ubuntu 12.04
1)Для начала его необходимо установить, системой выберем Ubuntu 12.04, а в качестве WEB сервера Apache.
# apt-get install libapache2-mod_geoip
Enabling module geoip.
To activate the new configuration, you need to run:
service apache2 restart
Модуль сам подключился и перестартовался апач.
2) Дальше переходим в файл
# vim /etc/apache2/mods-enabled/geoip.conf
и приводим к виду
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
3) После чего можно произвести блокировку по странам:
В файл .htaccess добавим следующее:
#Блокировка стран
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
Deny from env=BlockCountry
ИЛИ
#Разрешить странам, а остальным запретить.
GeoIPEnable On
GeoIPDBFile
/usr/share/GeoIP/GeoIP.dat
SetEnvIf GEOIP_COUNTRY_CODE RU AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE UK AllowCountry
Deny from all
Allow from env=AllowCountry
Количество просмотров: 7147
Комментарии к статье:
Автор комментария: Nick
Дата: 2017-08-25
На заметку вдруг пригодится кому #запрещаем всем кроме RU GeoIPEnable On SetEnvIf GEOIP_COUNTRY_CODE RU AllowCountry Deny from all Allow from env=AllowCountry #разрешаем зарубежным ботам Allow from 64.68.80.0/21 Allow from 64.233.160.0/19 Allow from 66.102.0.0/20 Allow from 66.231.188.0/24 Allow from 66.249.64.0/19 Allow from 72.14.192.0/18 Allow from 209.85.128.0/17 Allow from 216.239.32.0/19 Allow from 67.195.0.0/16 Allow from 69.147.64.0/18 Allow from 72.30.0.0/16 Allow from 74.6.0.0/16 Allow from 65.52.0.0/14 Allow from 207.46.0.0/16 Allow from 157.54.0.0/15 Allow from 157.56.0.0/14
Автор комментария: Николай
Дата: 2016-01-30
Источник
Как заблокировать доступ к сайту по IP, защитив его от спам-ботов и хакеров?
Наверное, многие web-мастера, которые не ленятся отслеживать логи посещений своих сайтов, задаются вопросом: «Как заблокировать доступ к сайту по IP-адресам и отвадить надоедливых ботов и хакеров?» Собственно, проблема заключается не в том, каким способом запретить доступ к сайту. На помощь web-мастеру всегда придет конфигурационный файл .htaccess. Проблема в другом — в поиске списка диапазонов IP-адресов, распределенных по географическому признаку.
Большинство моих сайтов рассчитаны на русскоязычную аудиторию. Географически — для Беларуси, России, Украины. Поэтому однозначно можно заблокировать IP-адреса стран Африки, Юго-Восточной Азии и Южной Америки. Смотрите список IP-адресов стран на ipdeny.com →
Оптимальное решение для запрета доступа к сайтам по выбранным IP-адресам — использовать в файле .htaccess директиву Deny. Важно правильно установить порядок обработки правил — Allow,Deny или Deny,Allow:
- При Allow,Deny сначала обрабатываются разрешающие правила Allow, затем запрещающие Deny. Действия, не подпадающие ни под одну из директив Allow или Deny, будут запрещены по умолчанию — Deny имеет приоритет над Allow. Я рекомендую использовать для общего запрета данный порядок обработки правил — с Deny from all.
- При Deny,Allow сначала обрабатываются запрещающие правила Deny, затем разрешающие Allow. Действия, не подпадающие ни под одну из директив Deny или Allow, будут разрешены по умолчанию — Allow имеет приоритет над Deny. Я рекомендую использовать данный порядок обработки правил при выборочном запрете.
Если перечислять все диапазоны IP-адресов выбранных стран, список получается слишком длинным. Чтобы избежать этого, я решил заблокировать блоки IP-адресов, отличающихся первым октетом (ХХХ.0.0.0/8). Получился совсем небольшой список, охватывающий большинство диапазонов IP-адресов: AfriNIC (Африка), APNIC (Юго-Восточная Азия) и LACNIC (Южная Америка и страны Карибского бассейна). Из списка я исключил блоки IP-адресов ARIN (Северная Америка) и RIPE (Ближний Восток, Европа и Центральная Азия) — смотрите его тут →
Блокировка IP-адресов директивой Deny
Разрешаем только методы GET, HEAD, POST:
Запрещаем доступ к сайту для всех методов с IP-адресов AfriNIC, APNIC, LACNIC:
Данным правилом я запретил доступ к сайту для IP-адресов стран Африки, Юго-Восточной Азии, Южной Америки и Карибского бассейна, а также некоторых корпораций и учрежний типа министерства обороны страны, скорый кирдык которой предрекал герой Сергея Бодрова в фильме «Брат». Обратите внимание, что в этом списке отсутствуют IP-адреса из смешанных зон, которые можно найти на сайтах AfriNIC, APNIC, LACNIC и RIPE. Однако данные диапазоны отсекают основной объем паразитного трафика. IP-адреса ARIN блокировать не рекомендуется, иначе роботы поисковых систем Bing, Google, Yahoo не смогут заходить на ваш сайт.
Я умышленно задал порядок обработки правил Deny,Allow, а не наоборот, чтобы иметь возможность добавить ниже разрешающие правила исключений для некоторых IP-адресов из заблокированных диапазонов. Однако имейте ввиду, что и другие запрещающие правила для этих IP-адресов, касающиеся, например, запрета на использование определенных символов в URL, могут не действовать — будут разрешены любые URL-запросы. В этом случае запрещающие правила можно продублировать в mod_rewrite, проверяя условия через переменные окружения, установленные в mod_setenvif:
SetEnvIf Request_URI ^запрещенный_URI$ bad_uri
SetEnvIfNoCase User-Agent ^запрещенный_User-Agent$ bad_user_agent
Кстати, в случае использования порядка обработки правил Allow,Deny рекомендуется прописать в самом начале разрешающее правило для всех Allow from all, но это не самое удачное решение — лучше его не использовать, если вы собираетесь устанавливать выборочно запрещающие правила.
Примечание: для отображения сообщения об ошибке 403 (доступ запрещен) лучше использовать не собственную страницу, а короткое сообщение, уменьшая тем самым нагрузку на сервер (какая вам разница, что увидят китаец или румын, пытавшиеся попасть на ваш сайт). Например, послать всех по известному адресу:
Обратите внимание на то, что в строке прописана только одна кавычка (для Apache 1.3). Для Apache 2.0 необходимо обязательно ставить закрывающую кавычку.
Блокировка IP-адресов модулем mod_rewrite
Используя модуль mod_rewrite, список IP-адресов можно существенно сократить. В этом помогут регулярные выражения. Главное удобство модуля mod_rewrite в данной задаче — возможность использования правил исключений.
Блокировка IP-адресов стран Северной Америки модулем mod_rewrite
Задача: необходимо заблокировать IP-адреса ARIN (стран Северной Америки), оставив доступ к сайтам для поисковых ботов Bing, Google, Yahoo. При этом на хостинге размещены несколько сайтов, один из которых предназначен для американской аудитории.
Для этого в корневой директории своего хостинга размещаем файл .htaccess, в котором прописываем следующее правило:
Данное правило модуля mod_rewrite блокирует IP-адреса стран Северной Америки, если имя хоста не содержит my_english_site.com, и строка User Agent не содержит имена поисковых ботов Bing, Google, Yahoo. Правило действует на все сайты, размещенные на хостинге, за исключением домена my_english_site.com. Если нужно исключить все поддомены этого сайта, пишем:
При использовании в файлах .htaccess, размещенных во вложенных директориях, правил модуля mod_rewrite не забудьте добавить наследование указанных правил, иначе они работать не будут:
Обязательно указывайте в RewriteBase путь к директории, в которой размещен файл .htaccess, от корня сайта. Все преобразования ссылок осуществляются относительно той директории, в которой расположен файл .htaccess. При этом унаследованные правила модуля mod_rewrite работают также относительно этой директории, то есть как бы копируются в КОНЕЦ текущего файла (обратите внимание на то, что наследуемые правила будут исполнены после правил .htaccess текущей директории, а не перед ними). Если файл .htaccess расположен в директории /partners/web/access/, как данная статья, то:
Интересную статью о том, как работает mod_rewrite, читайте на habrahabr.ru →
Использование общего файла .htaccess для всех сайтов возможно не на всех хостингах. В противном случае вам придется прописывать данные правила для каждого сайта в отдельности, что неудобно при редактировании (придется вносить изменения в файлы .htaccess каждого сайта).
Блокировка всех IP-адресов, кроме стран СНГ, Bing, Google, Yahoo
Правило, блокирующее доступ к сайту со всех IP-адресов, за исключением стран СНГ (включая Балтию) и поисковых ботов Bing, Google, Yahoo:
В данное правило включены диапазоны IP-адресов по первому октету, в которые входят IP-адреса всех бывших республик СССР (включая Латвию, Литву и Эстонию). Данное правило не блокирует IP-адреса других европейских стран, которые также входят в данный диапазон. Правило удобно применять для сайтов, ориентированных исключительно на аудиторию СНГ. Правда, если в будущем список IP-адресов, закрепленных за странами СНГ, расширится, новые адреса окажутся в числе запрещенных.
Защита сайта с помощь модуля mod_setenvif
Модуль mod_setenvif, позволяющий использовать регулярные выражения, на мой взгляд, представляет наиболее удобный способ защиты сайта.
Если необходимо заблокировать какую-либо сеть, разрешив 1 доступ к сайту с некоторых IP-адресов этой сети, пишем:
1 Напоминаю, что в этом случае для IP 94.77.64.50, 94.77.64.51, 94.77.64.52 не будут действовать другие запрещающие правила — например, по маске URL или User-Agent.
Правила блокировки для IP-адресов стран Европы я не составлял — слишком много диапазонов, распределенных по разным странам, включая СНГ (если не лень, можно отлавливать засланцев по логам). Если IP принадлежит хостинг-провайдеру, можно смело блокировать всю сеть, поскольку зайти из нее может только бот. Дополнительно можно использовать блокировку доступа к сайту по User Agent известных ботов, список которых смотрите здесь.
P.S. Используя вышеописанный метод, я запретил также возможность доступа к своему компьютеру (англоязычные сайты меня не интересуют), прописав в правилах сетевого экрана указанные диапазоны IP-адресов (исключая зоны ARIN и RIPE). Правда, у меня по умолчанию всего-то открыты 2 порта, но это тема уже другой статьи, касающейся настройки Windows XP. А пока можете ознакомиться с простым и эффективным способом защиты почты от спама.
Дополнительные настройки в файле .htaccess
Защита сайта от «левых» параметров в запросах
Запись выше можно существенно сократить:
Либо глобально разрешаем только, например, три метода (GET, HEAD, POST) с заранее указанными символами в строке http-запроса, причем метод POST разрешается только для указанного REQUEST_URI:
Защита сайта от хотлинка с использованием модуля mod_setenvif
Запрещаем скачивание графических файлов на сайте по прямым ссылкам:
Защиту сайта от хотлинка можно установить иначе — здесь используется другой порядок обработки правил, который, на мой взгляд, не совсем логичен:
Order Deny,Allow
Deny from all
Allow from env=my_host
Order Allow,Deny
Allow from all
Deny from env=!my_host
Учтите, при использовании данного способа защиты от хотлинка на указанные файлы не будут действовать другие запрещающие правила — например, блокировка по IP или User-Agent. Для избежания этого можно использовать модуль mod_rewrite, указывая в директиве RewriteCond значение установленной мной переменной my_host — по умолчанию оно равно 1.
А при таком порядке обработки правил, где убрано Allow from all, графика может не отображаться — даже на разрешенных сайтах:
Есть более красивое решение, использующее переменную окружения deny_hotlink, которая по умолчанию блокирует доступ к графическим файлам (через Deny from env=deny_hotlink). Если Referer разрешен, то переменная удаляется: !deny_hotlink.
Защита сайта от хотлинка с использованием модуля mod_rewrite
С использованием переменной my_host, установленной в модуле mod_setenvif для файлов с расширениями .gif, .jpg, .png — ее значение по умолчанию равно 1:
Данный вариант можно использовать в случае отсутствия модуля mod_setenvif, поскольку модуль mod_rewrite предназначен для решения других задач — так микроскопом забивают гвозди:
Обратите внимание на правильный формат записи RewriteCond %
Решение задач по защите сайта не ограничивается описанными выше способами. Для этой цели можно использовать не только возможности файла .htaccess, но и php, что иногда бывает более удобно. Например, для проверки IP-адреса по маске подсети в массиве php. И помните, что с момента написания статьи сведения об IP-адресах стран СНГ могут оказаться устаревшими. Не копируйте бездумно указанные здесь правила, если ничего не смыслите в них. Лучше наймите за вменяемую плату специалиста, который грамотно настроет вам .htaccess.
Успехов вам в борьбе с Интернет-недоумками!
Запрещается републикация статьи без указания активной прямой ссылки на источник.
За помощью в решении различных задач по программированию на языках PHP, JavaScript (включая jQuery) обращайтесь через раздел «Контакты» .
Источник
Htaccess блокировка по стране
Господа необходим взгляд со стороны знатока.
Несколько месяцев подряд постоянно пытаются сломать сайт клиента. Были и успешные попытки, последняя — вчера, залили папку фейковой палкой. Гугл и хостер прислали свои «ай-йя-яй» сайтик маленький — 100+ страниц, висит на вордпрессе. Версии ВП регулярно обновляются. Однако атаки продолжаются. Не хочется выглядеть параноиком, но увы, грешу на конкурентов, т.к. с сайта идут продажи и многие из конкурентов были попячены в топах.
В качестве одной из мер отсечения решил запретить доступ ненужных стран в .htaccess, т.к. сайт региональный, а паразиты как правило лезут с «мусорных» айпишек.
Если есть спецы, одобрите или подправьте, плиз сделанную директиву (целью было отсечь всех, кроме стран СНГ и прибалтики):
Было бы точнее отсекать с помощью модуля апатча mod_geo. Но я так понял хостинг стандартный и вы ничего там настроить не можете? тогда может хотя бы впн лучше взять.
А чего ломают? фиксите движок. какие атаки идут? чтобы положить сайт? на нагрузку? дос? так на хостинге уже что-то ставить нужно типа даже того же дос дефлейта. А если ломают движок, то отсекать страны вообще ничего не даст.
может кеширование попробуйте, чтобы уменьшить нагрузку
Для начала смените все пароли (админки, хостинг, фтп, БД. )
Проверьте права на папки
Если ддосят. обычно слабо =) То лучше найти хороший антиддосовый хостинг или взять дешевый сервачек в ДЦ, у нормальных обычно уже стоят фильтрующие Цыски\Длинки
Хостинг обычный шаред, для 1 мелкого сайта не было нужды брать что-то серьёзнее. Взять вдс-ку — нет проблем. Но я в администрировании ламер. Моя задача двигать сайт. Попутные вопросы решаю по мере своих способностей, т.к. клиент является моим хорошим знакомым.
Ломают через вп, на сколько я вдупляю 🙂 Заливают файлы. Например после последней атаки в корне появились лишние: phpmailer.php и папка .PayPal, обоим я сначала поставил нулевые права, после обнаружения. Папку вообще вчера снёс. Были попытки ковыряния и заливания папок и файлов через скрипты обрабатывающие картинки. Т.е. лезут во все щели, куда только можно.
Ддоса нет. Слишком дорогостоящее занятие для конкурентов клиента.
Например, сегодня вижу по ливу переходы с таких адресов:
N_N_N:
Хостинг обычный шаред, для 1 мелкого сайта не было нужды брать что-то серьёзнее. Взять вдс-ку — нет проблем. Но я в администрировании ламер. Моя задача двигать сайт. Попутные вопросы решаю по мере своих способностей, т.к. клиент является моим хорошим знакомым.
Ломают через вп, на сколько я вдупляю 🙂 Заливают файлы. Например после последней атаки в корне появились лишние: phpmailer.php и папка .PayPal, обоим я сначала поставил нулевые права, после обнаружения. Папку вообще вчера снёс. Были попытки ковыряния и заливания папок и файлов через скрипты обрабатывающие картинки. Т.е. лезут во все щели, куда только можно.
Ддоса нет. Слишком дорогостоящее занятие для конкурентов клиента.
Например, сегодня вижу по ливу переходы с таких адресов:
Как я понял вам заливают скрипты и шлют через ваш хостинг майл спам. А эти переходы похожи на скорее всего просто рефки по которым юзеры переходят со своией яху почты читая этот спам, наверное их провоцируют на какую-то оплату, раз еще заливают скрипты платежных систем.
Но в любом случае так и буду ломать если не пофиксить движок, серверные фишки и настройки htaccess врятли что-то дадут если дыра в движке.
А вы пробовали обновлять этот ворд прес до последней версии?, возможно было бы еще интерестно посмотреть логи того же апатча, можно было бы попробовать увидеть как ломают.
Грош цена такому скрипту, который еще кроме заливки картинок может ломать весь сайт:)
Источник