Ограничение доступа по ip – Ограничение доступа к сайту — как заблокировать нежелательный ресурс на компьютере

Содержание

Файл .HTACCESS: пропускной пункт вашего сайта

Случается, что доступ к вашему сайту или его части нужно ограничить. Запретить вход кому-то конкретному или разрешить только узкому кругу лиц. Сделать закрытыми определенные папки (директории) или поддомены, защитить их паролями. Всё это можно сделать с помощью файла .htaccess. Не стоит пугаться сложностей, эти настройки — вовсе не тайна секты бородатых вебмастеров. Если следовать инструкциям, разобраться сможет даже новичок. Сегодня мы разберем несколько самых популярных и полезных настроек.

guards

Что такое файл .htaccess и как его создать?

Для начала совсем чуть-чуть о терминах. .htaccess — это файл, который позволяет изменять многие настройки вашего сайта (настройки веб-сервера Apache, опции PHP) и управлять доступом к нему. Вы можете создать этот файл сами в любой момент (либо он уже есть на вашем сайте). Как правило, файл .htaccess создается в корневой директории сайта, а иногда во вложенных директориях, для которых требуются отдельные настройки.

Правила, указанные в файле .htaccess, распространяются на ту директорию (папку), в которой он находится, а также на все вложенные директории. Распространяются эти правила в том числе и на поддомены, поскольку директории поддоменов являются поддиректориями основного сайта.

Возможно, на вашем сайте уже есть файл .htaccess. Тогда создавать его повторно не нужно, достаточно дописать новые правила в конец существующего файла. Если такого файла нет, создайте его. Для этого в файловом менеджере (пункт «Файлы» в верхнем меню панели управления), находясь в нужной папке, нажмите «Создать» — «Файл», в качестве имени файла укажите: .htaccess (точка в начале обязательна). Готово. Осталось наполнить его нужными правилами.

Разрешить доступ только с определеных IP

Если ваш сайт или какая-то его часть не предназначены широкому кругу лиц, вы можете ограничить к ним доступ по IP-адресу. Например, если к странице входа в административную часть вашего сайта наблюдаются подозрительные запросы, похожие на попытку взлома, такое ограничение может быть полезно. C сайтами на WordPress такое случается достаточно регулярно. В этом случае мы обычно рекомендуем заблокировать доступ к административному разделу со всех IP-адресов, кроме вашего собственного (как это сделать, мы разберем ниже).

guard1

Если вы хотите закрыть доступ к сайту целиком, добавьте в ваш файл .htaccess следующие правила:

Order deny,allow
Deny from all
Allow from *.*.*.*

Первая строчка в этой директиве задает порядок действий: сначала запретить, затем разрешить. Вторая строчка запрещает доступ всем (поскольку таков порядок, указанный в первой строчке). Третья строчка разрешает доступ только определенному IP-адресу. Так что вместо *.*.*.* подставьте разрешенный IP-адрес.

Вы можете разрешить доступ нескольким IP-адресам, целой подсети IP-адресов или даже нескольким подсетям. Только каждый новый IP-адрес или подсеть следует указывать с новой строчки.

Например, если IP-адресов несколько:

Allow from *.*.*.*
Allow from *.*.*.*

Если адреса относятся к одной подсети, то задайте подсеть, для этого вместо цифр после последней точки укажите диапазон: 0/*, например:

Allow from *.*.*.0/12

Аналогичным образом вы можете указать несколько подсетей:

Allow from *.*.*.0/12
Allow from *.*.*.0/12

Если Вы хотите запретить доступ не ко всему сайту, а только к части сайта, то файл .htaccess следует создавать именно в той папке, доступ к которой вы хотите ограничить.  Например, если вы хотите защитить административную часть сайта на WordPress, то файл .htaccess следует создавать именно в директории wp-admin. В строчке Allow from *.*.*.* следует указать ваш собственный IP-адрес.

Как узнать свой IP, подсеть?

Для определения Вашего IP воспользуйтесь сервисами для определения IP:

Inet.from.sh

Yandex.ru/internet

Для уточнения подсети можно использовать следующий сервис: ip-calculator.ru.

Если вы затрудняетесь определить нужную маску подсети самостоятельно, обратитесь в службу поддержки.

Запретить доступ определенным IP-адресам

Иногда бывает необходимо запретить доступ только определенным IP-адресам. Такая необходимость может возникнуть, например, если обращения к вашему сайту с одного конкретного IP-адреса носят массовый характер и затрудняют работу сайта, создавая повышенную нагрузку.

guard2-2

Чтобы установить запрет на доступ к вашему сайту с определенных IP-адресов, добавьте в файл .htaccess следующий текст:

Order allow,deny
Allow from all
Deny from *.*.*.*

Вместо *.*.*.* подставьте нужный IP-адрес. В описанном случае с массовыми обращениями определить IP-адрес «виновника» поможет служба поддержки хостинга.

Здесь, как вы видите, порядок обратный: сначала мы разрешаем доступ всем, затем ограничиваем определенным IP-адресам. Точно так же, как в предыдущем примере, вы можете указать несколько IP-адресов (каждый с отдельной строчки), целую подсеть или несколько подсетей. Каждый IP-адрес или подсеть пишутся с новой строчки.

Установить пароль доступа к папке или поддомену

Предположим, на вашем сайте есть папки с содержимым, доступ к которому вы хотели бы ограничить. Или вы создаете закрытый сайт на поддомене. В обоих случаях подходящим решением будет установка пароля доступа.

guard3

Установить пароль на папку вы можете прямо из Панели управления. Для достаточно кликнуть по полю с нужной папкой и выбрать функцию «Защита паролем», а затем задать пароль.

passw

Но таким образом вы сможете задать пароль только для одного конкретного пользователя. Если же нужен пароль для круга лиц, снова поможет файл .htaccess.

Как вы помните, директивы из файла .htaccess распространяются только на папку, в которой находится этот файл и вложенные в нее папки (за одним исключением, которое мы сейчас не будем рассматривать). Поэтому, чтобы установить пароль на конкретную папку, создайте прямо в ней файл .htaccess со следующими директивами (а если такой файл в ней уже есть, то просто допишите в конец файла):


AuthName "your_text"
AuthType Basic
Require valid-user
AuthUserFile "полный_путь_к _файлу_.htpasswd"

В первой строке (AuthName) вместо "your_text" укажите любое сообщение, которое будет отображаться при попытке обращения к защищенной директории. Например: "Private zone" или "Administrators Only", или что-то еще на ваше усмотрение.

Важно! Значение текста в поле AuthName не должно содержать кириллицы и специальных символов.

Строчка Require valid-user означает, что имя пользователя может быть любым. Мы рекомендуем это так и оставить. Но вы при желании можете указать список имен пользователей, которым разрешен вход. Для этого в данной строчке после Require следует через запятую указать разрешенные имена. Valid-user в этом случае не дописываем.

В последней строке AuthUserFile необходимо указать полный путь к файлу, содержащему логин и пароль доступа в зашифрованном виде. Предварительно такой файл необходимо создать и загрузить на сайт.

Для этого создайте в файловом менеджере новый файл и назовите его .htpasswd (точка в названии также обязательна). Файл следует создавать в папке того домена, для которого вы задаете пароль (в корневой папке найдите папку domains и в ней нужный домен).

Для генерации логина и пароля в зашифрованном виде используйте либо утилиту консоли .htpasswd (этот способ больше подойдет специалисту), либо сторонние сервисы с аналогичными функциями, например, вот этот: Htpasswd-generator. Последнее совсем просто: задайте пароль и логин — и получите зашифрованную строчку. Эту строчку следует скопировать и вставить в ваш файл с именем  .htpasswd.

Вернемся к оформлению директивы. Путь к файлу .htpasswd указывается в полном формате: /home/login/domains/domain.ru/.htpasswd

Пример правильно оформленной директивы:

AuthName "Private zone!"
AuthType Basic
Require valid-user
AuthUserFile /home/a0000001/domains/mydomain/.htpasswd

Если вы войдете во вкус, то больше информации о настройках .htaccess вы найдете на нашем сайте. А для еще более искушенных пользователей — интересно о более тонких настройках .htaccess можно узнать из этой статьи. Напоминаем также, что с недавних пор вы самостоятельно и легко можете ограничивать доступ к вашим FTP-аккаунтам по IP-адресу прямо из Панели управления!

Желаем вам удачных экспериментов и приятной работы!

динамическое ограничение доступа по IP / Habr

Сервер IIS 7 и предыдущие версии содержали встроенную функциональность, которая позволяла администраторам разрешить или запретить доступ к серверу для определенных IP-адресов (или их диапазонов). Когда IP-адрес блокировался, любой HTTP-клиент с таким IP получал в ответ на запрос к серверу HTTP-ошибку «403.6 Forbidden». Этот функционал позволял администраторам настроить доступ к их серверу на основе активности, которую они могли проанализировать по логам сервера. Тем не менее, это был ручной процесс. Даже при том, что управление функциями могло настраиваться через скрипты для определения подозрительных пользователей с помощью анализа логов утилитами типа Microsoft’s LogParser, все равно требовалось много ручной работы.

Решение


В IIS 8 встроенная функциональность была расширена для того, чтобы предложить следующие функции:
  • Динамическая фильтрация IP-адресов, которая позволяет администраторам настроить их сервер на блокировку IP-адресов, которые создают слишком много запросов к серверу;
  • Фильтрация IP-адресов теперь позволяет администраторам указать поведение сервера во время блокировки IP-адреса, так что запросы от злоумышленников могут быть прерваны сервером, вместо того, чтобы возвращать клиенту HTTP 403.6;
  • Фильтрация по IP теперь поддерживает функцию прокси-режима, которая позволяет блокировать адреса не только по IP-адресу клиента, который получает сервер, но и по полученным значениям HTTP-заголовков x-forwarded-for.

Пошаговая инструкция


Требования:
  • Предустановленная Windows 8 с включенным IIS 8;
Замечание: функция IP and Domain Restrictions должна быть установлена вместе с IIS.

Конфигурирование IIS для блокировки доступа на основе HTTP-запросов

Сервер IIS 8.0 может быть сконфигурирован для блокировки доступа к веб-сайтам на основе определенного числа запросов в единицу времени, которые производит клиент. Другим вариантом является блокировка на основе количества одновременных подключений клиента.

Для конфигурирования IIS для блокировки доступа основанной на числе HTTP-запросов проделайте следующие шаги:

Осуществите вход в систему с учетной записью администратора. Откройте Internet Information Services (IIS) Manager. Выберите свой сервер, сайт или папку в окне Connections и затем в панели функций запустите IP Address and Domain Restrictions.

Нажмите Edit Dynamic Restriction Settings на панели Actions.

В окне Dynamic IP Restriction Settings выберите Deny IP Address based on the number of concurrent requests

, если вы хотите предотвратить слишком много одновременных подключений от пользователя. Если вы хотите предотвратить слишком большое количество запросов от пользователя, выберите Deny IP Address based on the number of requests over a period of time.

Нажмите ОК.

Конфигурирование поведения IIS при запрете IP-адресов

В IIS 7 и ранних версиях, сервер возвращал HTTP-ошибку «403.6 Forbidden», когда происходила блокировка IP-адреса. В IIS 8.0 администраторы могут сконфигурировать свой сервер для того, чтобы запрещать доступ с IP-адресов несколькими дополнительными вариантами.

Для того чтобы указать то, как должен поступать IIS, когда он блокирует IP-адрес, выполните следующие шаги:

Осуществите вход в систему с учетной записью администратора. Откройте Internet Information Services (IIS) Manager. Выберите свой сервер, сайт или папку в окне Connections и затем в панели функций запустите IP Address and Domain Restrictions.

Нажмите Edit Feature Settings на панели Actions.

В окне Edit IP and Domain Restriction Settings выберите в ниспадающем меню Deny Action Type предпочтительное поведение сервера:

  • Unauthorized: IIS вернет ответ HTTP 401;
  • Forbidden: IIS вернет ответ HTTP 403;
  • Not Found: IIS вернет HTTP 404;
  • Abort: IIS закроет HTTP-соединение.

Нажмите ОК.

Конфигурирование IIS для прокси-режима

Одной из проблем при IP-фильтрации является возможная ситуация, когда с одного IP-адреса на сервер обращаются множество разных клиентов (через firewall, балансировщик нагрузки, прокси). Так что для каждого такого клиента IP-адрес будет одинаковым. В IIS 8.0 администраторы могут сконфигурировать сервер с учетом HTTP-заголовка x-forwarded-for, в дополнение к IP-адресу клиента, для того, чтобы точнее определять какие именно запросы необходимо блокировать. Такое поведение называется «прокси-режимом».

Для конфигурирования IIS для прокси-режима проделайте следующие шаги.

Осуществите вход в систему с учетной записью администратора. Откройте Internet Information Services (IIS) Manager. Выберите свой сервер, сайт или папку в окне Connections и затем в панели функций запустите IP Address and Domain Restrictions.

Нажмите на Edit Feature Settings в панели Actions.

В окне Edit IP and Domain Restriction Settings выберите Enable Proxy Mode.

Нажмите ОК.

Заключение


В этом руководстве вы познакомились с конфигурирование IIS для динамического блокирования доступа к вашему серверу на основе числа запросов от клиента, а так же с настройкой поведения IIS, которое сервер будет использовать при блокировке потенциальных злоумышленников.

От переводчика


Вы можете прочитать обзорную статью о многих других нововведениях в IIS 8 (на русском) по этому адресу.

Для полноты картины я хотел бы дополнить статью полезными ссылками, которые более полно раскрывают многие новые функции IIS 8:

Еще одна полезная вещь – выпуск бесплатного легкого сервера IIS 8 Express для разработчиков, который вы уже можете скачать и установить. Подробности по ссылке.

3 апреля в Самаре пройдет бесплатная конференция WebProfessionals, на которой будет рассказано про IIS 8 и другие элементы веб-платформы Microsoft. Регистрация уже открыта.

Полезные хаки и сниппеты для .htaccess / Habr

Это перевод очень интересной лично для меня статьи, которым я хочу поделиться с уважаемым хабрасообществом. Некоторые из приведенных рецептов я уже встречал на Хабре, но разрозненно и далеко не все из нижеприведенного.

О предназначении файла .htaccess знает каждый веб-разработчик. На базовом уровне он позволяет управлять доступом к каталогам сайта. Но добавляя в него различные дополнительные фрагменты кода, с ним можно сделать и много других интересных вещей.

Если же вам нужны базовые сведения о предназначении данного файла, то вы можете получить из нашей статьи введение в .htaccess (перевод данной статьи не делал, так как там основы, их достаточно в русскоязычном сегменте Сети, но если будет проявлен интерес, то можно и ее перевести для полноты картины — прим. переводчика), в которой достаточно подробно раскрыты все аспекты его применения.

Итак, полезные примеры использования. htaccess:

1. Управление доступом к файлам и каталогам

Защита паролем — это одно, но иногда может понадобиться полностью блокировать доступ пользователей к определенному файлу или папке. Обычно это относится к системным папкам, таким, например, как includes, доступ к которым должны иметь приложения, но не пользователи.

Чтобы сделать это, поместите данный код в файл. htaccess и сохраните его в каталоге к которому закрываете доступ:

deny from all

Однако учитывайте, что доступ будет блокирован для всех пользователей, включая и вас. Открыть доступ для конкретного пользователя можно прописав его IP-адрес. Вот код, который для этого потребуется:
order deny,allow 
deny from all 
allow from xxx.xxx.xxx.xxx

где xxx. xxx. xxx. xxx — это ваш IP. Для задания разрешенных диапазонов IP-адресов вы можете заменить три последние цифры. Например, написав вместо них «0/12», вы зададите диапазон IP-адресов одной сети, что избавит вас от необходимости вводить в список все разрешенные IP-адреса отдельно.

Если вы хотите заблокировать доступ к определенному файлу, включая сам. htaccess, используйте следующий фрагмент кода:

<Files .htaccess>
 order allow,deny
 deny from all
 </Files>

Если вы хотите указать определенные IP-адреса которым надо запретить доступ, перечислите их при помощи allow from.

Если же вы хотите заблокировать доступ к файлам определенного типа, используйте этот код:

<FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
 Order Allow,Deny
 Deny from all
 </FilesMatch>

2. Запрет на просмотр директорий

Для предотвращения просмотра директорий сайта добавьте в .htaccess следующий код:
Options All -Indexes

Если же по какой-то причине вы хотите разрешить просмотр всех директорий, используйте код:
Options All +Indexes

3. Ускорение времени загрузки за счет сжатия файлов

Сжимать можно файлы любого типа. Например, для сжатия HTML-файлов добавьте код:
AddOutputFilterByType DEFLATE text/html

Для сжатия текстовых файлов используйте:
AddOutputFilterByType DEFLATE text/plain

Вы также можете сжать JavaScript или включить сжатие для других различных типов файлов командами:
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml

Кроме того, вы можете сжать все ваши JavaScript, HTML и CSS файлы при помощи GZIP. Для этого используйте следующий код:
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$ 
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text\.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image\.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* 
</IfModule>

4. Защита сайта от вставки изображений с других ресурсов

Если вы хотите запретить добавление ссылок на изображения со сторонних ресурсов, добавьте в файл .htaccess код:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

Не забудьте заменить yourdomain.com на имя вашего домена.
5. Блокировка посетителей, перешедших с определенного домена

Если вы не хотите видеть на своем сайте пользователей с конкретного домена, то вы можете запретить им доступ. Например, пользователей с нежелательных ресурсов (сайты для взрослых, хакерские сайты и т. д.) вы можете перенаправлять на страницу 403 Forbidden. Для этого необходимо включить mod_rewrite, хотя, как правило, он включен по умолчанию. Добавьте в .htaccess код:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} bannedurl1.com [NC,OR]
RewriteCond %{HTTP_REFERER} bannedurl2.com [NC,OR]
RewriteRule .* - [F]
</ifModule>

Вам необходимо заменить bannedurl1.com и bannedurl2.com доменами, которые вы хотите внести в черный список. Вы можете использовать флаг [NC], указывающий, что введенное доменное имя нечувствительно к регистру. Флаг [F] указывает на тип действия, в данном случае — отображение ошибки 403 Forbidden. Если вы хотите запретить несколько сайтов, используйте флаги [NC, OR] для каждого домена, если же вы хотите запретить использование одного домена — используйте только флаг [NC].
6. Блокирование запросов от определенных браузеров

Если в ваших файлах журналов появились записи о посещении особых браузеров (это могут быть имитирующие работу браузера боты или пауки), вы можете запретить им доступ на свой сайт, добавив несколько строк в. htaccess:
RewriteEngine On 
RewriteBase / 
SetEnvIfNoCase Referer "^$" bad_user
SetEnvIfNoCase User-Agent "^badbot1" bad_user
SetEnvIfNoCase User-Agent "^badbot2" bad_user
SetEnvIfNoCase User-Agent "^badbot3" bad_user
Deny from env=bad_user

Замените badbot1, badbot1 и т. д. именами ботов из вашего журнала. Это закроет посторонним программам доступ к вашему сайту.
7. Кэширование файлов

Кэширование файлов — еще один способ ускорить загрузку вашего сайта. Вот то, что вам нужно прописать в .htaccess:
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>

Вы можете добавить больше типов файлов (или удалить некоторые из них) в перечисленныq в данном примере список файлов. Вы также можете указать время сохранения файлов в кэше (в секундах) при помощи переменной max-age.
8. Отключение кэширования для разных типов файлов

Если вы не хотите кэшировать определенные типы файлов, можно не включать их в список. Однако иногда файлы могут сохраняться в кэше даже не будучи явно перечисленными в списке, в этом случае вы можете отключить кэширование для них индивидуально. Чаще всего отключать кэширование требуется для динамических файлов, таких как сценарии. Пример требуемого для этого кода:

<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>

Просто укажите типы файлов, для которых нужно отключить кэширование.
9. Обход диалога загрузки

По умолчанию при попытке загрузить файл с веб-сервера отображается диалог, который спрашивает вас, хотите ли вы сохранить файл или открыть его. Этот диалог особенно раздражает при скачивании больших медиа- или PDF-файлов. Если файлы, которые вы загрузили на сервер, предназначены исключительно для скачивания, вы можете облегчить жизнь пользователей, установив загрузку действием по умолчанию. Добавьте в. htaccess следующее:
AddType application/octet-stream .pdf
AddType application/octet-stream .zip
AddType application/octet-stream .mp3

10. Переименование файла .htaccess

Если вы по каким-то причинам хотите переименовать файл .htaccess, то вы можете это сделать. Теоретически, переименование файла .htaccess не должно вызывать проблем с приложениями, запущенными на вашем сервере, но если вы заметите появление ошибок выполнения сценариев после переименования файла, то просто переименуйте его обратно.
AccessFileName htac.cess

Кроме того, необходимо обновить все записи, в которых упоминается файл .htaccess, иначе возникнет множество ошибок.
11. Замена стартовой страницы сайта

Если вы хотите установить главную страницу, отличную от стандартной (index.html, index.php, index.htm и т. д.), добавьте следующий код в файл .htaccess:
DirectoryIndex mypage.html

Замените mypage.html на URL страницы, которую вы хотите использовать в качестве главной.
12. Перенаправление на защищенное соединение HTTPS

Если вы используете HTTPS и хотите перенаправить пользователей на защищенные страницы вашего сайта, добавьте в файл .htaccess следующие строки:
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

13. Ограничение максимального размера загружаемых файлов в PHP, максимального размера передаваемых данных, максимального времени выполнения скриптов и т.п.

.htaccess позволяет устанавливать некоторые значения, непосредственно влияющие на работу PHP приложений. Например, если вы хотите установить в PHP ограничение на размер загружаемых файлов, чтобы не забивать хостинг большими файлами:
php_value upload_max_filesize 15M

Вы можете установить любое значение, в примере размер файла ограничен 15M (MБ). Помимо этого вы можете ограничить максимальный размер передаваемых при загрузке в PHP данных:
php_value post_max_size 10M

Вы можете заменить 10М на любое требуемое вам значение. Если вам не требуется постоянное выполнение скриптов, вы можете ограничить время их выполнения с помощью строки:
php_value max_execution_time 240

240 — время выполнения (в секундах), после которого скрипт будет остановлен, вы можете изменить это значение на любое другое. Наконец, если вы хотите ограничить время анализа скриптом исходных данных, используйте следующий код:
php_value max_input_time 180

Установите вместо 180 любое требуемое вам время (в секундах).
14. Скрытие типов файлов

Иногда нужно, чтобы пользователи не знали, какие типы файлов находятся на вашем сайте. Один из способов скрыть эту информацию — сделать так, чтобы все ваши файлы отображались как HTML или PHP файлы:
ForceType application/x-httpd-php
ForceType application/x-httpd-php

И это лишь часть того, что может .htaccess, а вообще он позволяет сделать гораздо больше. Например, вы можете установить автоматический перевод страниц вашего сайта, установить часовой пояс сервера, удалить WWW из URL-адресов или использовать причудливые представления каталогов и т.д. Но в любом случае, прежде чем начинать эксперименты с файлом .htaccess, всегда сохраняйте резервную копию оригинального .htaccess, чтобы при возникновении проблем можно было быстро восстановить работу сайта.

Источник

UPD (спасибо akuma) расширение РНР для скрытия формата файлов приведено как пример и использование этого трюка в реальном проекте может оказаться небезопасным

Как ограничить доступ к сайту по IP-адресу с помощью .htaccess

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

Кворк 3

Задача решается очень просто. С помощью серверных логов нужно выяснить IP-адрес нежелательного посетителя и ограничить доступ к сайту по этому IP-адресу. Если в вашей CMS не предусмотрено ограничение доступа по IP, сделать это можно глобально с помощью файла .htaccess в корневой директории сайта. Если такого файла нет, его необходимо создать в любом текстовом редакторе и залить на хост.

В корневой файл .htaccess нужно добавить буквально несколько строчек:

order allow,deny
allow from all
deny from 50.31.96.11

Order allow,deny — запускает функцию разграничения доступа к сайту, allow — разрешает доступ, deny — запрещает доступ. Приоритет имеет функция находящаяся выше. Т.е в приведенном выше примере, у нас во второй строчке открывается полный доступ к сайту для всех, а в третьей строчке закрывается доступ для определенного IP-адреса.

Если вы хотите закрыть доступ для нескольких IP-адресов, их нужно все перечислить. Делается это следующим образом:

order allow,deny
allow from all
deny from 50.31.96.11
deny from 50.31.96.12
deny from 50.31.96.13
deny from 50.31.96.14

Кроме этого, вы можете заблокировать весь диапазон нежелательных IP-адресов. Например, вот так:

order allow,deny
allow from all
deny from 50.31.96.

Будьте осторожны при блокировке диапазона IP-адресов, т.к из-за одного нехорошего человека с динамическим IP, запросто можете закрыть доступ всей сети провайдера. С помощью .htaccess можно вообще сделать много чего интересного, но об этом позже.

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

Как ограничить доступ в панель администратора wordpress по ip адресу

Как ограничить доступ в панель администратора wordpress по ip-адресу

От автора: согласно данным исследования 2013 года, каждый день взламываются примерно 30 000 сайтов. И как все мы понимаем, чтобы обезопасить свой сайт от взлома, необходимо предпринять определенные меры. Важно обезопасить свои личные данные, но еще важнее дать пользователям понять, что их данные также находятся под защитой. Защищенный сайт значит сайт, заслуживающий доверия.

Существует несколько методов от взлома вашего сайта на WordPress. Один из них это ограничить доступ заданным пользователям. В этой статье я пошагово расскажу, как ограничить доступ к панели администратора WordPress по ip-адресу.

Но сначала давайте быстро пробежимся по угрозам безопасности сайтов на WordPress.

Угрозы безопасности WordPress

Взлом простым перебором – Когда хакер пытается получить доступ к сайту через форму авторизации, перебирая возможные имена пользователя и пароли.

Подтверждение правильности ввода имени – WordPress сообщает пользователям, какую часть из данных авторизации они ввели неправильно. К примеру, если правильно ввести имя пользователя, но ошибиться с паролем, WordPress подскажет пользователю об этом, что значительно облегчает поиск пароля простым перебором.

Версия WordPress – Если хакер узнает вашу версию WordPress, он может использовать уязвимости данной версии для получения доступа к сайту.

Как ограничить доступ в панель администратора wordpress по ip-адресу

Бесплатный курс «Основы создания тем WordPress»

Изучите курс и узнайте, как создавать мультиязычные темы с нестандартной структурой страниц

Скачать курс

Глобальная регистрация в WordPress – По умолчанию в WordPress отключена возможность регистрации на сайте из любого уголка мира. Лучше оставить эту опцию выключенной в качестве превентивной меры.

Доступ к темам и плагинам – Администраторы сайта получают доступ к редактированию файла функциональности, что может привести к проблемам в безопасности. Не рекомендуется изменять файл функционала сайта.

Прежде чем редактировать файлы сайта, давайте рассмотрим предварительные шаги, которые необходимо проделать.

Меры безопасности

Чуть ниже мы добавим PHP код в файл настроек .htaccess. Но перед этим необходимо сделать резервную копию файла конфигурации.

Некоторые из вас захотят сделать полную копию сайта перед тем, как что-то изменять. Регулярное резервное копирование – хорошая привычка. Обязательно делайте копию сайта перед серьезными изменениями. Помочь в этом вам может плагин VaultPress.

Статический или динамический ip-адрес

В этом уроке мы покажем, как ограничить доступ к админке сайта как для статических адресов, так и для динамических.
Используйте инструкцию для статического ip-адреса, если вы редактируете сайт с домашнего компьютера или из нескольких других мест. В таком случае ваш ip-адрес не меняется, т.е. остается статическим.

Используйте инструкцию для динамического ip-адреса, если вы редактируете свой сайт из множества разных мест. IP-адрес часто меняется в случаях:

Когда другие члены команды разработчиков заходят и редактируют сайт из разных мест

Когда для редактирования вы используете мобильный телефон

Вы постоянно путешествуете, и вы заходите на сайт из разных мест

Основы разобрали, вот теперь можно и приступить к делу.

Приступаем к работе

Чтобы ограничить доступ к странице авторизации по ip-адрему сперва необходимо узнать свой ip-адрес.

Выше мы уже упоминали, что нам потребуется внести изменения в файл .htaccess. Второй шаг – найти файл конфигурации .htaccess. Этот файл располагается в корневой папке сайта. Если по каким-то причинам файла там нет, его можно создать вручную. Авторизуйтесь через cPanel или FTP и найдите этот файл.

Как только вы нашли файл, переходим к шагу три – вам нужно найти подходящий текстовый редактор, чтобы добавить код в файл конфигурации. Рекомендуем использовать или встроенный в cPanel редактор или установленный на компьютере (например Notepad).

Как ограничить доступ в панель администратора wordpress по ip-адресу

Бесплатный курс «Основы создания тем WordPress»

Изучите курс и узнайте, как создавать мультиязычные темы с нестандартной структурой страниц

Скачать курс

Обратите внимание: Дабы не испортить существующие настройки сайта, весь код в .htaccess добавляется в самый верх.

Ограничиваем доступ по статическому ip-адресу

Если ваш ip-адрес не меняется или вы используете всего пару-тройку известных адресов, можно ограничить доступ к сайту по статическим адресам. Вы научитесь создавать список IP-адресов, которым позволено входить в панель администратора.

Как ограничить доступ к панели администратора по статическому ip-адресу

Откройте файл .htaccess через cPanel или любой другой текстовый редактор.

Скопируйте код ниже в самый верх файла .htaccess (Gist).

RewriteEngine on RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$ RewriteCond %{REMOTE_ADDR} !^12\.345\.678\.90 RewriteCond %{REMOTE_ADDR} !^IP Address InsertTwo$ RewriteCond %{REMOTE_ADDR} !^IP Address InsertThree$ RewriteRule ^(.*)$ — [R=403,L]

RewriteEngine on

 

    RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$

 

    RewriteCond %{REMOTE_ADDR} !^12\.345\.678\.90

 

    RewriteCond %{REMOTE_ADDR} !^IP Address InsertTwo$

 

    RewriteCond %{REMOTE_ADDR} !^IP Address InsertThree$

 

RewriteRule ^(.*)$ — [R=403,L]

Редактируем код

Вам осталось лишь изменить строки 4 и 5 (в Gist это строки 9 и 10) и добавить разрешенные ip-адреса. Для этого замените IP Address InsertTwo$ и IP Address InsertThree$ на нужные адреса. Адреса должны быть в формате, как в строке 3 (в Gist строка 8).

Добавление и удаление авторизованных пользователей

Если нужно добавить еще разрешенные адреса, просто скопируйте строку RewriteCond %{REMOTE_ADDR} !^IP Address Insert$ и замените в ней IP Address Insert$ на нужный адрес. Также можно запретить доступ пользователям к панели администратора, удалив строку с их адресом RewriteCond %{REMOTE_ADDR}.

Что будет если неавторизованный пользователь зайдет на страницу?

После того, как вы ограничили доступ к админке по ip-адресу неавторизованный пользователь, зайдя на страницу авторизации или страницу wp-admin, увидит страницу 404.

Если вы используете Gist, то можете заметить, что редирект там прописан в первых двух строках. В строках 1 и 2 необходимо заменить your-site’s-path на адрес вашего сайта.

Ограничиваем доступ по динамическому ip-адресу

Некоторые из вас, возможно, хотят открыть доступ к панели администратора множеству пользователей. Такая ситуация может возникнуть, если у вас много редакторов сайта, или вы обслуживаете сеть из нескольких сайтов. Основной момент тут в том, что для входа в панель администратора требуется несколько динамических ip-адресов.

Как ограничить доступ к панели администратора по динамическому ip-адресу

Откройте файл .htaccess через cPanel или любой другой текстовый редактор. Скопируйте код ниже в самый верх файла .htaccess (Gist).

RewriteEngine on RewriteCond %{REQUEST_METHOD} POST RewriteCond %{HTTP_REFERER} !^http://(.*)?your-site’s-name.com [NC] RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR] RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$ RewriteRule ^(.*)$ — [F]

RewriteEngine on

 

    RewriteCond %{REQUEST_METHOD} POST

 

    RewriteCond %{HTTP_REFERER} !^http://(.*)?your-site’s-name.com [NC]

 

    RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]

 

    RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$

 

RewriteRule ^(.*)$ — [F]

Редактируем код

Чтобы код заработал, замените your-site’s-name.com в строке 3 на URL вашего сайта (в Gist строка 7). В Gist версии редирект также прописан в первых двух строчках. В строках 1 и 2 замените your-site’s-path на адрес вашего сайта. После этого если сработает редирект, то вас перебросит на страницу 404.

Функционал кода

Данный код ограничивает доступ хакерам, которые с помощью ботов пытаются подобрать логин и пароль простым перебором извне. Код файла .htaccess означает, что на страницу авторизации или wp-admin смогут попасть только пользователи, которые перешли на нее по внутренней ссылке.

Заключение

Решения, которое гарантирует стопроцентную безопасность вашего сайта от любых возможных угроз, не существует. Ограничение доступа по ip-адресу добавит хакерам сложностей при попытке взлома сайта простым перебором.

Автор: Rafay Saeed Ansari

Источник: http://www.sitepoint.com/

Редакция: Команда webformyself.

Как ограничить доступ в панель администратора wordpress по ip-адресу

Бесплатный курс «Основы создания тем WordPress»

Изучите курс и узнайте, как создавать мультиязычные темы с нестандартной структурой страниц

Скачать курс Как ограничить доступ в панель администратора wordpress по ip-адресу

Основы создания тем WordPress

Научитесь создавать мультиязычные темы с нестандартной структурой страниц

Смотреть

Ограничение доступа к локальной сети по ip. – Блог системного администратора

Существует локальная сеть, интернет в которую раздается посредством древнего компьютера на котором стоит Линукс. В сети имеется теминальный сервер (192.168.100.3), к которому требуется подключатся снаружи. Необходимо ограничить доступ к линуксовому шлюзу и терминальному серверу.
Для того чтобы снизить риск проникновения в локальную сеть, мы поменяем RDP порт на нестандартный ( с 3389 на 7565) , а разрешать подключение по SSH и по RDP только для конкретных IP-адресов.

#! /bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward

IPTABLES='/sbin/iptables'
LAN_IFACE=eth0 ## локальная сеть
INET_IFACE=eth2 ## интернет
IP_INET="xxx.xxx.xxx.xxx" ## внешний IP на этом сервере
IP_INT="192.168.100.1" ## внутренний IP адрес на этом сервере
IP_MSK="82.xxx.yyy.zzz"
IP_SPB1="5.xxx.yyy.zzz"
IP_SPB2="146.xxx.yyy.zzz"
TERMINAL="192.168.100.3:3389" ## адрес и порт терминального сервера

# сбрасываем все настройки iptables
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -F
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -F
$IPTABLES -t mangle -X

# устанавливаем правила по умолчанию
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P  FORWARD ACCEPT
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# ограничиваем подключение по SSH
$IPTABLES -A INPUT -s $IP_MSK -p tcp --dport 22 -j ACCEPT
$IPTABLES -A INPUT -s $IP_SPB1 -p tcp --dport 22 -j ACCEPT
$IPTABLES -A INPUT -s $IP_SPB2 -p tcp --dport 22 -j ACCEPT

# ограничиваем подключение по RDP
$IPTABLES -t nat -A PREROUTING -p tcp --source $IP_MSK -d $IP_INET --dport 7565 -j DNAT --to $TERMINAL
$IPTABLES -t nat -A PREROUTING -p tcp --source $IP_SPB1 -d $IP_INET --dport 7565 -j DNAT --to $TERMINAL
$IPTABLES -t nat -A PREROUTING -p tcp --source $IP_SPB2 -d $IP_INET --dport 7565 -j DNAT --to $TERMINAL

# раздаем интернет в локальную сеть
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE

Защита от BruteForce. Ограничение доступа к сайту по IP адресам. — Технический блог

24 марта 2014  /  GNU Linux — CentOS / Debian

Брутфорс — это метод взлома основанный на переборе всех вариантов паролей. Когда злоумышленник пытается получить доступ к серверу перебирая все возможные комбинации. Учитывая производительность современных компьютеров это занимает на так много времени. Ранее я писал о защите от брута, и применительно к CentOS рекомендовал установить Fail2Ban.

По прошествии нескольких месяцев я собрал статистику. К моему серверу ежедневно пытались подобрать пароль от 10 до 20 раз. При этом 99% нехороших людей приходили с китайскими IP адресами. И первое, что пришло в голову — это ограничить доступ к моему серверу посетителям из Китая и/или тем, что пользуется китайскими прокси, то есть всем у кого IP принадлежат Китайской Народной Республике. Тем более, что мой блог, расположенный на данном сервере ориентирован на русскоговорящих пользователей.
Но в последствии я пришел к выводу, что доступ по SSH необходимо давать только моему компьютеру, а всем остальным блокировать вне зависимости от географического положения, ведь ничто не мешает злоумышленникам использовать анонимные прокси-серверы из других стран, а не только китайские.

Использование hosts.allow и hosts.deny для ограничения доступа к серверу

Чтобы осуществить задуманное, воспользуемся встроенными средствами самой операционной системы. В CentOS, а также в других версиях Linux и FreeBSD, есть специальные файлы конфигурации, которые регламентируют доступ к серверу по IP адресам. То есть кому можно подключиться к серверу, а кому нет. Разрешающие правила описываются в файле /etc/hosts.allow, а запрещающие — в /etc/hosts.deny.

Синтаксис, правила написания hosts.allow и hosts.deny

Правило написания разрешения или блокировки простое: Сервис Двоеточие Пробел Адрес.
В качестве наименования сервисов сервера могут выступать имена демонов SSHD, HTTPD, и прочих, а также всеобщий параметр ALL. И чтобы заблокировать всем доступ к серверу по SSH необходимо в файл /etc/hosts.deny добавить следующее:


sshd: ALL

Но чтобы при этом Вы сами не потеряли возможность общаться с сервером необходимо добавить свой(и) адрес(а) в файл /etc/hosts.allow


sshd: my.IP.ad.dres

Естественно my.IP.ad.dres — это Ваш реальный адрес в интернете. Узнать его, к примеру, можно на главной странице сайта 2ip.ru просто посетив его.

Если же у Вас динамический IP адрес, а таких пользователей в России и ближнем зарубежье большинство. То необходимо узнать весь блок адресов выдаваемый вашим провайдером и внести его в «белый список».
К примеру для моего домашнего компьютера:
Захожу на сайт 2ip.ru и вижу адрес 178.78.11.26
Узнаю полный диапазон провайдера на сервисе nic.ru/whois/:

После этого необходимо узнать «правильную маску» для подсети провайдера с помощью любого он-лайн IP калькулятора, например этого.

И внести необходимые изменения в файл /etc/hosts.allow:


sshd: 178.78.0.0/255.255.192.0

Вот собственно и все. Доступ к серверу по SSH получат только компьютеры с адресами из /etc/hosts.allow, а всем остальным (ALL в файле /etc/hosts.deny) в доступе будет отказано.

Вместо заключения

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *