Linux ограничение доступа к сайтам

Обновлено: 07.07.2024

Доступ с определенных IP-адресов

В настройке виртуального домена:

location / deny 192.168.0.15;
allow 192.168.0.0/24;
allow 2001:0ab3::/32;
deny all;
>

* в данном примере мы разрешаем доступ для всех компьютеров сети 192.168.0.0/24 (за исключением 192.168.0.15) и компьютеру с адресом ipv6 2001:0ab3::. Остальным доступ запрещен.

После перезапускаем NGINX одной из команд:

systemctl reload nginx

service nginx reload

Ограничение доступа к определенной папке

Стоит отметить, что блокировать доступ по IP-адресу можно не только ко всему сайту, но и к определенным директориям, например:

location /install allow 192.168.0.15;
deny all;
>

* в данном примере мы запрещаем доступ к папке install, но разрешаем устройству 192.168.0.15.

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

Самый правильный способ, настроить, чтобы NGINX слушал только на локальном адреса, например, listen 127.0.0.1:80;

Но если такой метод, по каким-либо причинам нам не подходит, делаем так:

location / allow 127.0.0.1;
deny all;
>

Действие с IP по условию

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

Доступ по паролю

Мы можем разрешить доступ по паролю ко всему сайту или конкретной странице (URL).

В конфигурационном файле .

а) для установки пароля на весь сайт:

б) для установки пароля на конкретную страницу:

в) для установки пароля на все вложенные страницы по URL /page7:

* где auth_basic указывает веб-серверу использовать обычную аутентификацию по логину и паролю; auth_basic_user_file задает путь хранения файла с паролями относительно папки nginx.

После настройки конфигурационного файла NGINX, генерируем хеш для пароля:

* после ввода Enter необходимо дважды ввести желаемый пароль — на экран будет выведен хэш, который необходимо скопировать в буфер обмена.

Создаем файл с пользователями и паролями:

После перезапускаем NGINX:

systemctl reload nginx

Лимит скорости

location / limit_rate 1000k;
>

* в данном примере мы огрраничили пропускную способность канала до, примерно, 10 мбит.

location / limit_rate_after 10m;
limit_rate 1000k;
>

* также ограничиваем скорость до 10 мбит, но после первых 10 Мб загрузки.

Ограничение количества запросов с одного ip

* в данном примере мы создаем 3 зоны, размер каждой зоны — 10Мб; на один IP разрешено 10 подключений, но не больше 5 в секунду (rate=5r/s); общее число разрешенных соединений с сервером — 100.


Мануал

Описание

Это означает, что он полностью работает от терминала.

Как работает Chomper

В отличие от других блокировщиков, которые используют файл хостов Linux для фильтрации IP-адресов и доменных имен, Chomper вместо этого фильтрует исходящие запросы через прозрачный прокси-сервер.

Это делает Chomper идеальным для фильтрации веб-контента на уровне URL.

То, что вам нужно сделать, это просто заполнить список того, что блокировать, а что касается белого списка, Chomper сделает все за вас.

Установка Chomper на Linux

Одной из предпосылок для этого является установка git, make и cmake.

Поскольку эта настройка выполняется на Ubuntu 16.04, все найденные deps специфичны для Ubuntu.

Когда это будет сделано, перейдите к установке pyenv.

Для этого мы избежим ручной установки и вместо этого используем установщик.

Загрузите pyenv автоматически, изменив файл

Чтобы загрузить env вручную, отправьте файл в текущий сеанс.

Команда make init будет загружать пакеты и готовить среду.

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

Затем вы должны увидеть:

И зайдите в шелл:

Будет создано несколько файлов сертификатов.

Вам необходимо импортировать сертификат mitmproxy-ca.pem в ваш браузер.

Chrome: выберите «Настройки»> «Дополнительные настройки»> «Управление сертификатами»> «Авторизация.

Нажмите «Импорт», выберите «mitmproxy-ca.pem», отметьте все три поля и нажмите «ОК».

Firefox: выберите «Настройки»> «Конфиденциальность и безопасность»> «Сертификаты»> «Просмотреть сертификаты»> «Авторизация». Нажмите «Импорт», выберите «mitmproxy-ca.pem», отметьте все три поля и нажмите «ОК».

Следующее, что нужно сделать, это включить переадресацию IP-адресов.

Сохраните и затем запустите:

Использование Chomper

  • Первый уровень определяет имена правил.
  • Второй уровень определяет, является ли правило черным списком или «белым списком».
  • Третий уровень определяет адреса, используемые в правиле.

Ниже представлен простой конфигурационный файл с несколькими черными списками и «белыми списками»


При запуске приложения chomper, расположенного в каталоге bin, требуются два аргумента:

  • Название правила
  • Время блока в минутах

Например, чтобы запустить правило work_block в течение 20 минут, я выполню :

Заключение

Мы рассмотрели все ключевые моменты, с которыми вам нужно начать с использования Chomper.

Этот инструмент выглядит интересным.

Он еще свежий, но активно развивается.

Текущая версия работает только для Linux-систем, но разработчик стремится предоставить для нее версию для MacOS и GUI.

20.10.2011

Как закрыть доступ к сайту?

Иногда бывает необходимо ограничить доступ к сайту или нескольким сайтам. Основной причиной этому обычно является неподобающее содержимое сайта, например, материалы порнографического характера. На сегодняшний день существует масса средств для решения этой задачи: от любого сетевого экрана (firewall), который зачастую уже встроен в антивирусное программное обеспечение, и до специализированных программных продуктов по слежению за контентом на экране пользователя. В этой статье пойдет речь о том, как с помощью внесения изменений в системный файл hosts, можно запретить загрузку нежелательных сайтов. Этот способ блокировки можно считать достаточно надежным (скрытым), неподготовленный пользователь вряд ли сможет самостоятельно убрать блокировку.

Запрет доступа к сайтам в Windows.

Чтобы закрыть доступ к сайтам в ОС Windows, необходимо найти и изменить файл hosts. Файл hosts текстовый, расширения не имеет. В Windows 95/98/ME этот файл находится в директории WINDOWS\, в Windows NT/2000 – в директории WINNT\system32\drivers\etc\, в Windows XP/2003/Vista/7 – в директории WINDOWS\system32\drivers\etc\. Идем по нужному пути, в зависимости от установленной операционной системы, и открываем файл hosts в программе Блокнот. Ниже на картинках приводится пример для ОС Windows XP.

Ищем файл hosts. Путь для XP/2003/Vista/7.


Путь к файлу hosts для Windows XP/2003/Vista/7.

В файле hosts изначально находится только следующая информация:



Добавляем строки.

Вводим адрес заблокированного сайта в браузер. Доступ закрыт.


Доступ к сайту закрыт.

Запрет доступа к сайтам в Linux (Ubuntu).

Это тот редкий случай, когда последовательность действий в операционых системах Windiws и Linux (Ubuntu) практически совпадают, за исключением небольших синтаксических различий.

Запускаем терминал. В зависимости от версии Linux, терминал может находится в разных меню.


В зависимости от версии Linux, терминал может находится в разных меню.

От имени суперпользователя запускаем текстовый редактор gedit

Запускаем редактор gedit. Потребуется ввод пароля суперпользователя.


Потребуется ввод пароля суперпользователя.

В редакторе gedit открываем файл hosts, находящийся в директории (папке) /etc/



Ищем и открываем файл hosts в директории /etc/.

В самое начало файла, после строки с "localhost", добавляем строку, блокирующую доступ к сайту, т.е. указывающую на то, что сайт нужно искать на компьютере пользователя по локальному адресу:

Изменяем файл hosts. Добавляем строки.


Добавляем строки в файл hosts.

IP-адрес, имя сайта и его алиас (второй адрес с/без WWW) указываются в одну строку через пробел(ы) или табуляцию. Сохраняем изменения в файле hosts, вводим имя заблокированного сайта в браузер и видим следующую картину:

Вводим адрес заблокированного сайта в браузер. Доступ закрыт.


Доступ к сайту закрыт.

В отличие от ОС Windows, перезагружать Ubuntu не нужно. Возможно, придется перезагрузить браузер и/или удалить его кэш для появления показанной выше ошибки о невозможности загрузки заблокированного сайта.

Это предпоследняя заметка из цикла о базовой настройке web-сервера, и в ней разберем такие инструменты, как .htaсcess и .htpasswd.

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

  • ограничения доступа по IP-адресам (подсетям);
  • редирект;
  • авторизация на странице.

Что такое .htaccess и .htpasswd

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

.htpasswd – файл, говорящий сам за себя; хранит авторизационные данные, а именно логин (в открытом виде) и пароль (в виде хеша MD5); генерируется при помощи утилиты «htpasswd»; располагать его желательно в месте, закрытом от чужих глаз (например, где-нибудь в директории «/var/www/myhtpasswd/.htpasswd»).

Настройка Apache и хостов для работы с .htaccess

Если вы решили использовать имя файла, отличное от .htaccess (например, .myhtrules), то нужно сходить в конфиг apache «/etc/apache2/apache2.conf» и поменять параметры:

  • «AccessFileName .htaccess» на «AccessFileName .myhtrules»
  • «<FilesMatch “^\.ht”>» на «<FilesMatch “^\.myht”>»

Первый параметр определяет имя файла с дополнительными правилами, а второй – запрещает показ всех файлов, имя которых начинается с «.myht».

После изменения конфига apache надо перезапустить:

Я имена файлов и конфигурацию не меняю, и далее буду работать с классическими .htaccess и .htpasswd.

Теперь поднастроим конфиг хоста.

Открываем конфиг хоста «/etc/apahce2/sites-available/tsite1ru.conf» (готовый конфиг взять можно ТУТ ) и наблюдаем следующий раздел, отвечающий за работу с файлом .htaccess:

Используя директиву «Directory», задавайте путь относительно корня файловой системы сервака. Еще имеется директива «<Location>», которая задает путь относительно корня виртуального хоста (таковым в конфиге хоста является значение директивы «Document Root»)

В моем конфиге задан путь к корню виртуального хоста «/var/www/html/tsite1ru». Это говорит о том, что Apache будет искать файлик .htaccess начиная именно с корневого каталога хоста. Это нужно далеко не всегда, и путь можно указать, например, для какой-нибудь субдиректории (админки сайта).

Про директиву «Options» можно почитать ТУТ . Разжевывать не буду.

Директива «AllowOverride» имеет значение «All» - это значит, что Apache будет считывать все директивы из файла .htaccess. Если директива «AllowOverride» будет иметь значение «None», то директивы в .htaccess будет игнорироваться.

Эксперименты с .htaccess

Хотелось бы оговориться: под выражением «запретить/разрешить доступ к сайту, или к отдельным страницам сайта, или к отдельным файлам сайта» имеется ввиду «запретить/разрешить доступ к определенным директориям и файлам хоста (виртуального или физического – не важно)». Правила применяются именно к директориям и файлам, а не к какой-то хреновине, под названием «сайт».

Эксперимент первый. .htaccess в корне хоста (сайта)

1) разрешить доступ на сайт только с двух IP-адресов;

2) разрешить доступ на сайт с определенных подсетей;

3) запретить доступ на сайт только с двух IP-адресов;

4) запретить доступ на сайт только с определенных подсетей;

Формализуем первые две задачи: необходимо запретить доступ всем, кроме допущенных.

Формализуем вторые две задачи: догадались, думаю – разрешить доступ всем, кроме нежелательных.

Читайте также: