Назад | Перейти на главную страницу

iptables captive portal удалить пользователя

Я следовал этому руководству: http://aryo.info/labs/captive-portal-using-php-and-iptables.html

Я реализую захватывающий портал с помощью iptables. Я настроил веб-сервер и iptables на маршрутизаторе Linux, и все работает как надо.

Я могу разрешить пользователю доступ в Интернет с помощью

sudo iptables -I internet -t mangle -m mac --mac-source USER_MAC_ADDRESS -j RETURN

и я могу закрыть доступ с помощью

sudo iptables -D internet -t mangle -m mac --mac-source USER_MAC_ADDRESS -j RETURN

Однако после удаления пользователь может открывать последнюю просмотренную страницу столько раз, сколько пожелает (если он перезапустит свой адаптер Ethernet, будущие соединения будут закрыты). На странице блога я нашел скрипт

/usr/sbin/conntrack -L \
    |grep $1 \
    |grep ESTAB \
    |grep 'dport=80' \
    |awk \
        "{ system(\"conntrack -D --orig-src $1 --orig-dst \" \
            substr(\$6,5) \" -p tcp --orig-port-src \" substr(\$7,7) \" \
            --orig-port-dst 80\"); }"

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

Когда я выполняю /usr/sbin/conntrack -L | grep USER_IP после выполнения скрипта мне ничего не возвращается, поэтому мои вопросы: есть ли что-нибудь еще, что может помочь мне очистить этот трек? Очевидно - я не могу сбросить ни свой, ни пользовательский сетевой адаптер.

Обновить:

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

Чтобы ответить на ваш вопрос, я бы проверил, что вызовы shell_exec и exec выполняются должным образом, и что они не отключены для безопасности, что часто бывает.

Чтобы вас предупредить.

$_POST['ip'] и $_POST['mac'] входные данные не дезинфицируются и передаются прямо в функцию exec () в process.php;

злоумышленник может запустить curl, чтобы загрузить оболочку php и проникнуть на сайт; выполнить любую команду в пределах разрешения запущенных пользователей; удалять целые каталоги и веб-корневые каталоги и т. д .; пожалуйста, убедитесь, что вы полностью проверили любой код, который вы разместили в своей системе; перед включением функций exec / shell_exec.