前景提要:
通过树莓派了解钓鱼活动是怎么进行的,又该如何防范(一):名词介绍以及环境搭建(树莓派设为无线入口)
通过树莓派了解钓鱼活动是怎么进行的,又该如何防范(二):DNS扮演的角色及其在树莓派上的应用(服务器搭建,DNS配置)
强制门户认证
所谓强制门户认证(Captive Portal),就是用户连接无线网之后并非直接获得互联网的连接权限,而是需要通过该无线网站点提供者所要求的身份验证之后才能得到访问互联网的许可(该许可由无线网站点提供者给予)。
你可以把无线站点想象成外卖平台,你要下单需要通过这个平台告知商家,由平台前往商家取货并负责订单的运输,你最后收到订单。那强制门户认证就是在你下单之前要求你进行登录平台以获得你相应的个人信息,订单记录等。
在很多公共场所都用到了这一技术,因为其方便快捷且易于管理,通常的无线加密诸如WPA2-WPA知道密码就能登录,难以管理连接的设备。在部分酒店,通过强制门户认证实现了输入房间号及姓名来接入互联网的认证方式,极大程度的提高了无线网接入客户的管理成本。在一些航班中,通过使用强制门户认证来实现对用户进行网络连接的定时收费。
如何实现强制门户认证
强制门户认证实现的步骤可以简化为三步
- 用户连接无线WiFi
- 强制导向登录页面
- 授权用户访问权限
第一步需要一个无线AP(access point)站点,关于如何使用树莓派建立一个无线站点请戳这里。
第二步实现强制导向登录页面,也称之为重定向(redirect)一般的有三种方式进行重定向,HTTP重定向,ICMP重定向,重定向DNS。
HTTP重定向,即将用户的所有正常访问重定向至无线站点的认证页面。
ICMP重定向,网关,即无线站点使用网络层的互联网控制消息协议重定向客户端流量。
重定向DNS,本质类似DNS劫持,通过无线站点的DNS服务将用户导向认证页面。
这里主要介绍第一种,HTTP重定向,通过对防火墙进行设置,来将用户导向认证页面,在用户认证完成后,将用户mac地址添加进防火墙的允许访问列表中。英语好的参考这一篇;中文好的参考这一篇
现在就来进行树莓派防火墙的配置
sudo iptables -t mangle -N portal
sudo iptables -t mangle -A PREROUTING -i wlan0 -p tcp -m tcp –dport 1:65534 -j portal
sudo iptables -t mangle -A PREROUTING -i wlan0 -p udp -m udp –dport 1:65534 -j portal
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp -m mark –mark 99 -m tcp –dport 1:65534 -j DNAT –to-destination 192.168.4.1:80
sudo iptables -t mangle -A portal -j MARK –set-mark 99
sudo iptables -t mangle -I portal 1 -d 192.168.4.1 -p tcp -m tcp -j RETURN
sudo iptables -t mangle -I portal 1 -d 192.168.4.1 -p udp --dport 1:52 -j DROP
sudo iptables -t mangle -I portal 1 -d 192.168.4.1 -p udp --dport 54:65534 -j DROP
sudo iptables -t filter -A FORWARD -m mark --mark 99 -j DROP
sudo iptables -t filter -A FORWARD -m mark --mark 99 -d 192.168.4.1 -j ACCEPT
第一条 命令在mangle表中创建了一条名为portal的链。
第二三条命令 将通过网卡 wlan0 接收到的所有数据送入portal链进行处理。
第四条命令 将所有标记为99的基于tcp的数据包进行转发,目的地为无线站点的地址(认证的页面将被布置在这个地址,端口为80)
第五条命令 将所有portal链终端数据包标为 99
第六七八条命令 对目标为无线占点认证页面的数据包进行处理,所有udp包丢弃,只保留tcp。
第九十条命令 过滤器中丢弃标记为 99 除访问无线站点认证页面外的数据包。
设置完成后保存设定
sudo sh -c "iptables-save>/etc/iptables.ipv4.nat"
随后修改 iptable 的启动加载路径
sudo nano /etc/rc.local
在 exit 0 之前添加,如下内容
iptables-restore < /etc/iptables.ipv4.nat
到这里第二步基本就完成了,连入的设备会被导至你的本地服务器。
接着第三步,创建一个本地认证页面,这个认证页面的具体内容视人而定,这里只举个例子。
首先你需要有服务器的服务,这里以 apache2 结合 MySQL数据库 为例。
在下面这个路径中(非常规操作,一般在可用站点下进行配置,然后通过命令启用)找到000-default开头的一个文件进行配置(phishing是我自己命的名)