Я следовал этому руководству: 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.