Linux ограничение доступа к сайтам
Доступ с определенных 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 для Windows XP/2003/Vista/7.
В файле hosts изначально находится только следующая информация:
Добавляем строки.
Доступ к сайту закрыт.
Запрет доступа к сайтам в Linux (Ubuntu).
Это тот редкий случай, когда последовательность действий в операционых системах Windiws и Linux (Ubuntu) практически совпадают, за исключением небольших синтаксических различий.
В зависимости от версии Linux, терминал может находится в разных меню.
От имени суперпользователя запускаем текстовый редактор gedit
Потребуется ввод пароля суперпользователя.
В редакторе gedit открываем файл hosts, находящийся в директории (папке) /etc/
Ищем и открываем файл hosts в директории /etc/.
В самое начало файла, после строки с "localhost", добавляем строку, блокирующую доступ к сайту, т.е. указывающую на то, что сайт нужно искать на компьютере пользователя по локальному адресу:
Добавляем строки в файл 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) запретить доступ на сайт только с определенных подсетей;
Формализуем первые две задачи: необходимо запретить доступ всем, кроме допущенных.
Формализуем вторые две задачи: догадались, думаю – разрешить доступ всем, кроме нежелательных.
Читайте также: