Настройка Captive Portal для авторизации пользователей

OneBlock — популярная карта для игры Майнкрафт, на которой игрокам предстоит начать своё выживание на одном блоке среди бесконечной пустоты. Для дальнейшего выживания начните ломать этот блок снова и снова, чтобы получить некоторые блоки, предметы и даже животных. После накопления ресурсов, мы сможем обустроить некоторую площадь вокруг: построить дом, создать ферму и огород, а также создать инструменты и оружие. Но не забывайте, что при добычи блока могут выпасть враждебные мобы!

Скриншоты

Как установить OneBlock

  1. Скачай карту
  2. Распакуй архив по пути .minecraft/saves
  3. Зайди в игру и выбери мир «OneBlock»
  4. Играй!

Скачать OneBlock

Версия Ссылка Дата Размер
1.16.x oneblock-1-16-x.zip 14-03-2021 1,32 МБ
1.15.x oneblock-1-15-x.zip 14-03-2021 1,01 МБ

29.12.2019

Ресурсы играют важную роль в формировании всего доступного контента. Поэтому многие фанаты любят создавать необычные испытания. К примеру, если вы решите отправиться исследовать карту One Block для Майнкрафт, то у вас появится возможность активно использовать новые условия для выживания. 

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

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

Как установить карту:

Первый шаг: Скачайте архив с картой.

Второй шаг: Распакуйте архив, чтобы получилась папка.

Третий шаг: Скопируйте папку с картой OneBlock в раздел .minecraft/saves (если данной папки не существует создайте её сами).

Четвертый шаг: В меню во вкладке «Одиночная игра» найдите эту карту.

Captive Portal – сетевой сервис авторизации и идентификации пользователей. Наиболее часто используемый при построении общественных Wi-Fi сетей, где необходимо ограничивать права доступа в сеть Интернет или взымать дополнительную плату за её использование. По сути своей представляет веб-портал где пользователю предлагается указать учетные данные для дальнейшей идентификации в сети.

С точки зрения информационной безопасности, Captive Portal необходимая мера при использовании корпоративной Wi-Fi сети. И с реализацией его прекрасно справляются межсетевые экраны нового поколения (NGFW) Palo Alto Networks.

Далее мы рассмотрим подробную инструкцию по установке и настройке Captive Portal для использования в корпоративной Wi-Fi сети. А так же наиболее часто возникающие проблемы, с которыми приходится сталкиваться системному администратору.

Настройка шаг за шагом.

Шаг 1.   Необходимо определить по какому из интерфейсов будут инициироваться запросы от пользователей на авторизацию и дать ему права на данную процедуру. В нашем случае это ethernet1/5. Для того чтобы разрешить данному интерфейсу авторизацию Captive Portal, необходимо в Network – Network Profiles – Interface Mgmt создать или использовать уже имеющийся профиль, в котором разрешить сервисы Response Pages и User-ID.

Далее на вкладке Network – Interfaces выбрать нужный нам интерфейс и в Advanced – Other Info указать ранее созданный профиль:

Шаг 2. Необходимо сгенерировать или использовать сертификат, подписанный третьей стороной, для идентификации самого Captive Portal и дальнейшего безопасного с ним соединения. В этой статье мы будем рассматривать первый вариант. На вкладке Device – Certificate Management – Certificates нажимаем кнопку Generate. В появившемся окне нам необходимо внести данные для генерации корневого сертификата.

Certificate Name – произвольное имя сертификата Common Name – IP или FQDN адрес интерфейса, который будет использоваться для Captive Portal Certificate Authority – установить галку, для того чтобы сертификат был корневым

Теперь нам нужно сгенерировать сертификат непосредственно самого портала, подписанного корневым. Для этого еще раз нажимаем кнопку Generate и вводим следующие данные:

Certificate Name – произвольное имя сертификата Common Name – IP или FQDN адрес Captive Portal Signed By – указываем ранее созданный корневой сертификат IP – добавляем IP атрибут Captive Portal Host Name – в случае если у Captive Portal имеется FQDN адрес, то указываем и его

После нажатия на кнопку Generate в списке сертификатов у нас должен появится наш новый, подписанный корневым.

Шаг 3. Создаем SSL/TLS профиль, который будет использоваться для авторизации пользователей. Переходим на вкладку Device – Certificate Management – SSL/TLS Service Profile и нажимаем Add.

Name – произвольное имя профиля Certificate – выбираем ранее созданный сертификат (подписанный корневым) Min Version – рекомендуется использовать наиболее защищенный TLSv1.2

Шаг 4. Переходим к настройкам непосредственно самого CaptivePortal.

Enable Captive Portal – включаем портал Idle Timer (min) – таймер бездействия пользователя, по окончанию которого портал потребует повторного введения учетных данных Timer (min) – общий таймер, по окончанию которого пользователю будет предложено заново ввести учетные данные Mode – во избежание ошибки сертификата в браузере пользователей, рекомендуется использовать режим Redirect, таким образом будет происходить перенаправление на страницу Captive Portal. В случае же с Transparent, шлюз будет подменять запрашиваемый сайт пользователем на страницу Captive Portal, что может быть расценено браузером как попытка кражи конфиденциальных информации SSL/TLS Service Profile – выбираем ранее созданный нами профиль шифрования Authentication Profile – выбираем профиль, который указывает на список пользователей, для которых разрешена авторизация с помощью Captive Portal Session Cookie (опционально) использовать куки вместо повторного ввода учетных данных Redirect Host – IP или FQDN интерфейса шлюза Palo Alto, на который будет производиться перенаправление пользователей

Шаг 5. Далее настроим правило авторизации, которое бы перенаправляло все HTTP запросы от неизвестных пользователей на портал авторизации. Для этого переходим на вкладку Policies – Authentication и нажимаем Add для добавления нового правила. Выбираем зону нашей Wi-Fi сети в качестве источника и зону INTERNET (Untrust) в качестве назначения. Т.к. пользователь нам еще неизвестен, то в качестве User выбираем Any. И наконец на вкладке Actions нужно указать действие default-web-form, в нашем случае это отправлять пользователей на Captive Portal. В итоге должно получиться так:

Шаг 6. Завершающим шагом нам необходимо создать правило, которое бы разрешало всем авторизированным пользователям доступ в интернет. Следуя рекомендациям по безопасности мы выбираем web-browsing и ssl в качестве приложений для доступа в интернет, а также назначаем используемые по умолчанию порты (80 и 443). Разрешающее правило создаем в Policies – Security и в итоге оно должно выглядеть следующим образом:

На этом настройку Captive Portal можно считать оконченной!

Как быть с HTTPS?

После настройки Captive Portal вы возможно столкнетесь с проблемой, что в отличи от HTTP запросов, HTTPS не обрабатываются для перенаправления на страницу авторизации. И даже если явно указать в правиле авторизации на обработку таких запросов, то это все равно не решит проблему.

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

Но межсетевые экраны (NGFW) Palo Alto Networks способны решить и эту проблему. Благодаря аппаратной функции дешифровки, шлюз способен проникать в зашифрованные пакеты и читать их содержимое. Данная возможность будет также полезна для мониторинга и отслеживания передачи конфиденциальной информации третьей стороне.

Для включения дешифрации нам необходимо на вкладке Policies – Decryption создать два правила. Первое включает эту функцию для всех неизвестных пользователей, которые еще не авторизовались на портале. Второе отключает дешифрацию, если авторизация пройдена. В качестве Decryption Profile используем профиль встроенные по умолчанию:

В итоге должно получиться так:

Незабываем указать HTTPS трафик для авторизации в ранее созданном нами правиле на вкладке Policies – Authentication:

После всех описанных выше действий попытка зайти на любой сайт будет переадресована шлюзом на страницу авторизации Captive Portal.

Опубликовано 26.08.2020 · Обновлено 26.08.2020

Описание карты

Prism Minecraft Survival — cуть карты очень проста — игрок спавнится в одной из 16-и коробок, находящихся в небе. Все коробки отличаются друг-от-друга. В каких-то можно найти снежные биомы, в каких-то — пустынные или даже Эндер мир. В общем, карта очень интересная! Вперёд за достижениями! Кстати, эту карту призм начал проходить Лолотрек на своём канале.

Скриншоты

Видео

Как установить Prism Minecraft Survival

  1. Скачай карту
  2. Распакуй файл в .minecraftsaves
  3. Готово

Скачать карту Prism Minecraft Survival

  • Системное администрирование

Каждый из нас подключался к беспроводной сети (аэропорты, кафе и тд) где необходимо согласится с некоторыми условиями или пройти авторизации прежде чем начинать пользоваться интернетом. Такая технология называется captive portal. В мою задачу входило создать captive portal где каждому пользователю раз в 30 минут будет показываться определенный сайт (реклама), и пока он не нажмет «кнопочку» «далее» интернета не будет. Для создания нам понадобится:

  1. Wifi-точка доступа любая (на практике можно использовать и проводной интернет)
  2. Маршрутизатор на любой *nix системе (в моем случае это debian wheezy)

Краткое описание принципа работы

  1. Любой пакет пришедший на маршрутизатор маркируем
  2. Любой запрос на 80 порт (пакеты уж маркированны) перенаправляем на нужную нам страницу
  3. При «авторизации»(нажатии кнопки далее) пользователя добавляем его мак в исключения и разрешаем доступ в интернет
  4. Скрипт вычисляет у кого прошел лимит времени и удаляет данного клиента.

У нас имеется маршрутизатор на базе debian, где eth0 — локальная сеть в моем случае (192.168.11.0/24), eth0:1 — интерфейс который смотрит в интернет. Настройку интерфейсов мы пропустим, это каждый выполнит сам. Сразу перейдем к настройке iptables, я обычно прописываю iptables в rc.local: /etc/rc.local

IPTABLES="/sbin/iptables" EBTABLES="/sbin/ebtables" DHCP="67:68" SSH="22" WWW="80"  $IPTABLES -t mangle -F $IPTABLES -F  $IPTABLES -A INPUT -i lo -j ACCEPT #ssh $IPTABLES -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT # разрешаем серверу и клиентам dns гугла $IPTABLES -A INPUT -s 8.8.8.8 -j ACCEPT $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  # создаем правило интернет $IPTABLES -N internet -t mangle $IPTABLES -t mangle -A PREROUTING -j internet #добавляем разрешенные маки в исключения путем добавления их в Return awk 'BEGIN { FS="t"; } { system("$IPTABLES -t mangle -A internet -m mac --mac-source "$4" -j RETURN"); }' /var/lib/users #маркируем все пакеты $IPTABLES -t mangle -A internet -j MARK --set-mark 99 # все маркированные пакеты которые идут на 80 порт отправляем на наш сервер $IPTABLES -t nat -A PREROUTING -m mark --mark 99 -p tcp --dport 80 -j DNAT --to-destination 192.168.11.38 #дроппаем все маркированное #$IPTABLES -t filter -A FORWARD -m mark --mark 99 -j DROP #dns $IPTABLES -t filter -A INPUT -s 8.8.8.8 -j ACCEPT #http $IPTABLES -t filter -A INPUT -p tcp --dport 80 -j ACCEPT #port dns $IPTABLES -t filter -A INPUT -p udp --dport 53 -j ACCEPT #drop $IPTABLES -t filter -A INPUT -m mark --mark 99 -j DROP echo "1" > /proc/sys/net/ipv4/ip_forward #настройка нат $IPTABLES -A FORWARD -i eth0 -o eth0:1 -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A FORWARD -i eth0:1 -o eth0 -j ACCEPT $IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE 

На этом конфигурация iptables заканчивается и переходим к странице которую получает пользователь: /var/lib/index.php

   $server_name = "192"; $domain_name = "168.11.38"; $site_name = "Wireless Network";  // arp $arp = "/usr/sbin/arp";  // файл где хранятся текущие пользователи $users = "/var/lib/users";  // Check if we've been redirected by firewall to here. // If so redirect to registration address if ($_SERVER['SERVER_NAME']!="$server_name.$domain_name") {   header("location:http://$server_name.$domain_name/index.php?add="     .urlencode($_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']));   exit; }  // получаем и добавляем мак пользователя $mac = shell_exec("$arp -a ".$_SERVER['REMOTE_ADDR']); preg_match('/..:..:..:..:..:../',$mac , $matches); @$mac = $matches[0]; if (!isset($mac)) { exit; }  if (!isset($_POST['email']) || !isset($_POST['name'])) {   // Name or email address not entered therefore display form       Welcome to   echo $site_name;    To access the Internet you must first enter your details:           } else {     enable_address(); }   function enable_address() {      global $name;     global $email;     global $mac;     global $users; // время добавления пользователя храним в unixtime     file_put_contents($users,$_POST['name'].";".$_POST['email'].";"         .$_SERVER['REMOTE_ADDR'].";$mac;".date("U")."n",FILE_APPEND + LOCK_EX);          // добавляем правило в iptables     exec("sudo iptables -I internet 1 -t mangle -m mac --mac-source $mac -j RETURN");     // The following line removes connection tracking for the PC     // This clears any previous (incorrect) route info for the redirection     exec("sudo rmtrack ".$_SERVER['REMOTE_ADDR']);      sleep(1);     header("location:http://".$_GET['add']);     exit; }  // Function to print page header function print_header() {           Welcome to   echo $site_name;    />   <link         }  // Function to print page footer function print_footer() {   echo "";   echo "";  }    

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

  1. Iptables автоматически редиректит любой запрос на 80 порт на нашу страницу
  2. пользователь вводит свое имя и почту, скрипт php получает мак пользователя и добавляет в iptables правило исключения для этого мака
  3. Php скрипт складывает все данные пользователей (имя, почта, время добавления) в файл /var/lib/users

Осталось только сделать скрипт который будет:

  1. удалять правило из iptables для мака у которого вышло время
  2. удалять из файла данные по этому пользователю

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

#!/usr/bin/perl  $file = "/var/lib/users"; $curtime = time(); # время "бана" 30 минут время в секундах так как считаем потом в unixtime $bantime = 1800; $tmpfile = "out.tmp";  open(my $data, '<', $file) or die "Could not open '$file' $!n"; while (my $line = <$data>) {   chomp $line; (@field) = split(";", $line);   #прибавляем время "бана" ко времени когда зашел пользователь (4 поле в нашем случае) получаем время когда нужно удалить пользователя if (defined($exptime)) { undef $exptime; } $result = $field[4]; $exptime = $bantime + $result; # такая коснтрукция потому что перл не хотел прибавлять $field[4] + $bantime  # если текущее время больше времени для удаления, удаляем мак и перезаписываем файл if ($curtime > $exptime) { #printf "BINGOn";         system "iptables -D internet -t mangle -m mac --mac-source $field[3] -j RETURN"; #       system "rm /var/lib/users";                          }  else {         printf "$field[3]; $exptimen";                   open SF, ">>$tmpfile";         printf SF "$field[0];$field[1];$field[2];$field[3];$field[4]n";         close SF;          system "mv /root/out.tmp /var/lib/users";        system "chown www-data. $file";          }          }  

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

Оцените статью
Рейтинг автора
4,8
Материал подготовил
Максим Коновалов
Наш эксперт
Написано статей
127
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий