iptables 强制门户删除用户

iptables 强制门户删除用户

我遵循了以下指南:http://aryo.info/labs/captive-portal-using-php-and-iptables.html

我正在使用 iptables 实现强制门户。我在 Linux 路由器上设置了 Web 服务器和 iptables,一切运行正常。

我可以允许用户使用

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

但是,删除后,用户仍然可以多次打开上次查看的页面(如果他重新启动以太网适配器,将来的连接将被关闭)。在博客页面上,我发现了一个脚本

/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() 和类似命令不是导致此行为的原因。所有命令都执行良好 - 因为删除后,用户无法访问除他浏览的最后一个网站之外的任何其他网站。

答案1

为了回答您的问题,我会检查 shell_exec 和 exec 调用是否按预期运行,以及它们是否出于安全原因而被禁用(这种情况经常发生)。

警告你。

$_POST['ip']并且$_POST['mac']输入没有经过清理并直接传递到 process.php 中的 exec() 函数中;

攻击者可以启动 curl 来下载 php shell 并攻击网站;在运行用户权限范围内运行任何命令;破坏整个目录和 webroot 等;请确保您完全审核您在系统上放置的所有代码;在启用 exec / shell_exec 功能之前。

相关内容