Pull to refresh

Comments 35

Спасибо!
Очень полезная статья. Сами в прошлом году пытались настроить подобное, но не вышло.
я правильно понимаю что:
— все авторизованные юзеры идут на transparent proxy, и пробуете заблокировать часть https-сайтов используя SNI (и подделку сертификата ведь в /etc/squid/squidCA.pem лежит сертификат легитимного subCA). а если не секрет — что таким образом блокируется и почему?
— вы намеренно ломаете механизм определения «а не стоит ли у нас captive portal» Android'а(иначе зачем игры с gstatic.com?
На первый вопрос очень хорошо разжевано в статье , на которую и опирался при настройке squid. Подмены сертификата не происходит.
Насчет gstatic.com, согласен, не стоит. Похоже осталось с тестирования. Если оставить if (strpos($url, 'gstatic.com')!==false) $url = 'http://www.domain.ru';
то начинается последовательность редиректов, авторизация проходит, но выглядит не эстетично.
в любом случае спасибо за подробное описание
>Согласно постановлению Правительства №758 от 31 июля 2014г. и №801 от 12 августа 2014 г.
А есть у кого-нибудь ссылки на описание человеческим языком, что это такое, и чем это грозит? Потому что прочитал эти постановления, но всё равно ничего не понял :( Может какие статьи, или форумы?
1) Если у меня дома Wi-Fi без пароля, я попадаю под закон?
2) А кто это будет проверять? Что, уже есть «медиаполицейский», который ищет AP без пароля? Или какие другие контролирующие органы?
3) Если в кафе Wi-Fi с паролём, но пароль выдают любому по запросу? Проверочные органы будут совершать «контрольную закупку» пароля?
4) А если назвать точку доступа AndroidAP и говорить, что это не я, это кто-то с телефона интернет шарит?
5) А если я приду во время проверки (см пункт 3) в офис к компании «ВЕКТОР», и подниму там мобильную точку доступа ООО_VECTOR_FREE, их оштрафуют?
Зачем кого то штрафовать. Вот если товарищ майор получит команду, выяснить — кто это с ип X.X.X.X написал плохое сообщение — то товарищ майор найдет владельца этого ип и назначит виноватым. И ваши отмазки — это кто то с моей АП написал, потому что там пароля нет — никого интересовать не будут. А в случае смс авторизации у владельцев кафе есть хоть какой то шанс отвести вопросы от себя, сославшись на то, что в это время вот владелец вот этого телефона сидел у нас на фривифи ;)
У нас так и начало происходить, начали сыпаться запросы. Вообще, есть маленькая тонкость. По закону, это необходимо делать провайдерам, а не организациям, которые используют. Но предоставляя доступ в интернет, посредством своей точки доступа, мы фактически, делать это не можем, так как не обладаем лицензией на предоставление телематических услуг.
Провайдер скажет, кафе такое-то, на этом роль провайдера заканчивается, а дальше владелец кафе уже заинтересован перевести стрелки, чтоб не отвечать за действия анонимусов. К тому же лицензия на оказание телематических услуг НЕ требуется, если услуга оказывается безвозмездно.
> начали сыпаться запросы.
От кого? Что было в запросах?
управление специальных технических мероприятий
А подробнее? Что хотели?
В рамках какого-либо запроса, кто с такого адреса тогда-то в такое-то время ходил куда-то.
UFO just landed and posted this here
>Настройка фаервола iptables
так как в нашей задаче, нам необходимо, чтобы сохранялись и таблицы ipset, то немного правим следующий файл:
nano /usr/share/netfilter-persistent/plugins.d/15-ip4tables

Лучше создать отдельный плагин, назвав его 20-ipset. В таком случае:
1. Можно не переживать, что при обновлении пакета случайно перезатрут/перепишут 15-ip4tables
2. Можно будет отдельно выполнять load / start / flush правил независимо от iptables
Заметил, неточность.
Конечно же надо грузить ipset правила до iptables, поэтому файл надо назвать не 20-ipset, а к примеру 14-ipset.

Быстренько набросал скрипт: http://pastebin.com/ixwzB6fJ
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
	$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} 
if (empty($ip)) $ip = $_SERVER['REMOTE_ADDR'];

//определяем мак адрес
$mac = trim(shell_exec("arp -a ".$ip." | awk '{print $4}'"));


Не рекомендовал бы так делать, потому что результат при изменении заголовка на:
X-Forwarded-For: | rm -rf /*
может быть печальным.
Добавил проверку ip адреса регулярным выражением, а именно:
//проверяем правильность ip адреса
if (!preg_match('/^10\.0\.8[0-7]\.\d{1,3}$/', $ip)) $ip = false;

//определяем мак адрес
if ($ip) $mac = trim(shell_exec("arp -a ".$ip." | awk '{print $4}'"));
if (!isset($mac) || $mac == "entries") $mac = false;
Есть пара вопросов…
1) Зачем в этой схеме использовать прокси? Вы же реализовали всю логику на iptables? Только для красивых логов?
2) Зачем писать логи в БД? Ведь логи — это вещь, которую не надо активно изменять, вставлять посередине. Почему не в файл?
3) Почему решили ограничивать доступ неавторизованных пользователей через iptables, а не через squid?
4) Почему выбрали именно схему, когда пользователь отправляет sms, а не вы пользователю?
1) Потому что задача стоит «перевести стрелки» на виновника. Если брать логи iptables, то получим только ip адреса источника и назначения. Нам же интересно, на какие сайты ходил пользователь и что там делал.
2) Для быстрого поиска, проще и правильнее использовать базу данных
3) Все-таки для каждой задачи, правильнее использовать инструмент для нее предназначенный. Squid это прокси, iptables фаервол.
4) Цена вопроса. Входящие смс бесплатные.
Однако в вашей схеме возникнут проблемы, когда решение нужно масштабировать на несколько офисов. В каждом из них придется держать отдельный такой сервер с iptables.
Не нашел ответа почему вы преднамеренно используете php 5.6 вместо 7?
Так как когда-то программил на php 3,4,5, а разбираться с 7 и изучать отличия не было времени. Не могу сказать ничего плохого о php7, но могу много хорошего о php5…
У нас 10 залов для мероприятий (от 30 до 400 человек), а в день в среднем проходит от 4 до 12, плюс постоянная текучка народа и капризные пользователи.


Авторизация через смс выгодна обоим сторонам если имеется договоренность с оператором(ами), это вид авторизации реклама операторам сотовой связи
Всё это зело интересно, но как по мне это сизифов труд. В случае обращения «органов», «подозреваемый» может запросто сказать «логи подделаны, я не ходил в тырнет» или даже «меня там не было, это подстава».
Задача не посадить подозреваемого, а не попасть под раздачу самим.
Я к тому, что этого может оказаться недостаточно. Следует проконсультироваться с юристом. Возможно, без чего-то типа журнала подключений под роспись, эта система окажется юридически ничтожна и всё равно попадёте под раздачу, например, если окажется что найти «подозреваемого» по вашим данным не удаётся (неизвестный/незарегистрированный номер, подменённый МАС-адрес), то на вас же и повесят «подделка логов для ухода от ответственности» или как-то так. Это не сертифицированная железка типа СОРМа, которая как-то защищена от вмешательства с вашей стороны. Один ручной update блаблабла set ляляля where тополя, и вы сами не сможете сказать — было ли это вмешательство, например, злобными хакерами которые кого-то решили подставить (включая вас самих) или всё чисто.
В Украине в библиотеках, в которых предоставляется бесплатный доступ к Wi-Fi, записывают паспортные данные, а потом только дают пароль. Но полученные данные никак не связываются с устройством (или я не заметил).
На мой взгляд, — если госучреждение использует такую схему, то можно и всем. Но есть «но» — нужны паспортные данные или данные иного документа, удостоверяющего личность пользователя.
Хороший вопрос. В наших реалиях это зависит не столько от буквы закона, сколько от принятой в полиции практики его применения. Кто-нибудь сталкивался с запросами правоохранительных органов про бесплатный Wi-Fi?
Пожалуйста, вычитывайте тексты для пользователей. Это традиционная беда у программистов, в результате рождаются толковые, но страхолюдные продукты :(

Для получения доступа в интернет, Вам необходимо c Вашего телефона отправить смс с кодом

Для получения доступа в интернет вам необходимо отправить SMS с кодом

To get access to the Internet, you need to send SMS with code to number

To access Internet, text this code: XXX to number YYY

Если Вы уже отправили смс с кодом, то нажмите на кнопку:

После отправки SMS нажмите на кнопку

If you have to send SMS with the code, then click on the button

After you've sent SMS with code, please click this button

Задержка предоставления доступа в интернет зависит от скорости доставки нам Вашего смс сообщения.

Доставка и обработка вашего SMS может занять некоторое время. Пожалуйста, выждите несколько секунд.

Delayed access to the Internet depends on the speed of delivery of SMS messages to us.

Please allow a minor delay in providing you access — delivery and processing of your SMS might take a few moments. Thank you for your patience.

According to the decree №758 of the Government dated 31 July 2014. and №801 from 12 August 2014 — all public WIFI network required to make user authentication.

We require our WiFi users to authenticate following the provisions of the Russian law, stated by enactments 758 of 31st July 2014 and 801 of 12th August 2014.
Большое спасибо пользователю artemsafe, которые прошел все этапы, нашел ошибки и помог внести необходимые правки, чтобы статья стала еще более лучше, а именно:
1) Исправил ошибку в запросе: CREATE TABLE `access_log`…
2) При установки phpmyadmin требуется еще apt-get install php5.6-mbstring
3) Не хватало apt-get update при сборке squid
4) Собранные пакеты squid попадают в исходную директорию 3.5.19
5) Необходимость перевода USB устройства в режим модема, как и с помощью чего…
Добавил таймер на странице хотспота, чтобы нельзя было нажать кнопку «Перейти в интернет» в течении 60 секунд.
nano /var/www/hotspot/index.php

#Добавляем стиль для отключенной ссылки
<style type="text/css">
.internet-disabled {
    background-color: #dadbdb;
    color: white;
    padding: 7px 20px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 16px;
    border: 2px solid #ffffff;
    border-radius: 4px;
    box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2), 0 6px 20px 0 rgba(0,0,0,0.19);         
}
</style>
#Добавляем проверку времени
<?php if (!$error) {?>
<script type="text/javascript">
window.onload = function(){
    window.htime = 60;   
    check = function(){
        if (window.htime <=0 ) {
            return true;
        } else {
            return false;
        }
    }          
    window.htimer = window.setInterval(function(){
        document.getElementById('button').innerHTML = 'осталось ' + window.htime + ' сек.';
        window.htime -= 1;
        if (window.htime <= 0) {
            window.clearInterval(window.htimer);
            document.getElementById('button').className  = "internet";
            document.getElementById('button').innerHTML = 'перейти в интернет';
        }
    }, 1000);           
}
</script>
<?php } ?>
#Исправляем строчку с сылкой
<a target="_self" href="<?php echo $url;?>" id="button" class="internet-disabled" onclick="return check();"> </a>

Есть способ авторизации WiFi клиентов публичной сети по СМС через встроенный функционал контроллера Edimax APC500.



Через некоторое время размещу статью с тестированием или просто с описанием по этому вопросу.
Приветствую! Занимаюсь настройкой подобной связки прозрачного прокси с авторизацией.
Вопрос: какой смысл перенаправлять HTTPS запросы на локальный nginx, если браузер всё равно не откроет страницу локального сервера из-за несоответствия сертификатов?
Есть ли всё таки какой-то способ перенаправлять HTTPS запросы неавторизованных пользователей на страницу авторизации?
Спасибо
Sign up to leave a comment.

Articles

Change theme settings