openwrt外网web管理
把路由器管理界面直接扔到公网上,外网这事听起来就让人后背发凉。管理但有时候你就是外网需要在外头改个DHCP静态租约、重启一下WiFi模块,管理或者帮家里老人调一下端口转发。外网OpenWrt默认只监听内网,管理想从外网访问LuCI,外网得自己动手。管理
最省事的外网办法是改uhttpd的监听地址。SSH进去,管理编辑/etc/config/uhttpd,外网把list listen_http '0.0.0.0:80'那行前面的管理注释去掉,或者直接加一行。外网重启uhttpd服务,管理外网就能用公网IP加端口访问了。外网我试过一次,从公司连回家里的OpenWrt,页面秒开,但心里清楚这等于把大门钥匙插在锁孔上。
为什么说危险?LuCI的登录页面没有失败次数限制,root密码再复杂也扛不住脚本小子拿字典慢慢磨。更别提OpenWrt的Web界面偶尔会爆出未授权访问的CVE,比如之前的luci-app-*组件漏洞。去年有个朋友图方便,直接把80端口映射到公网,三天后路由器被塞了挖矿脚本,CPU常年90度。
所以真要从外网管,至少套一层HTTPS。OpenWrt自带uhttpd可以配SSL,用openssl生成自签名证书,或者从Let's Encrypt搞个免费的。改/etc/config/uhttpd里的list listen_https '0.0.0.0:443',再把option redirect_https '1'打开。这样密码不会明文跑在公网上。但自签名证书浏览器会弹警告,每次点“继续访问”也挺烦。
更稳妥的路子是走VPN。WireGuard在OpenWrt上跑起来很轻,手机装个客户端,连上VPN再访问192.168.1.1,跟在家里一样。我现在的做法是:WireGuard常驻,只开一个UDP端口,LuCI继续只监听内网。外面想管理?先连VPN。这样即使WireGuard端口被扫到,没有私钥也进不来。配置也不复杂,opkg update && opkg install wireguard-tools,然后生成密钥对,写个/etc/config/network接口就行。
有人喜欢用frp或者ngrok做内网穿透,把LuCI暴露到一个临时域名上。这办法适合没有公网IP的环境,但依赖第三方服务器。frp服务端如果被攻破,你的路由器管理界面就等于裸奔。我试过用Cloudflare Tunnel,免费版够用,但延迟比直连高不少,点个“保存并应用”要等两三秒。
还有个细节:OpenWrt的防火墙默认会放行WAN口的80和443吗?不一定。得去/etc/config/firewall里确认,或者用LuCI的“防火墙 - 端口转发”加规则。但别直接放行整个WAN区域到设备,那等于把SSH、LuCI、甚至dnsmasq都敞开了。只转发特定端口到路由器自己的LAN IP,比如option dest_ip '192.168.1.1'。
最后说个真实翻车案例。某论坛网友把OpenWrt的Web管理端口改成8080,觉得没人会扫。结果一周后登录页面被篡改,顶部多了一行俄文广告。查日志发现攻击者用了个老漏洞,连密码都没猜。所以别抱侥幸心理,要么VPN,要么HTTPS加fail2ban,要么干脆别开外网Web。我自己的选择是:WireGuard加仅内网LuCI,需要时连VPN,平时关得死死的。麻烦一点,但睡得踏实。
相关文章:
