安全地访问 LuCI Web 界面

如果你使用 admin 访问 LuCI Web 界面,您的 OpenWrt 网络用户有嗅探您的流量的风险。 您有将 LuCI Web 凭据泄露给攻击者的风险。 有一些方法可以减轻这种风险。

请注意,您需要明智地选择哪种方法适合您的安全需求。 不要过于执着于一种方法,而鄙视其他方法,偏爱自己喜欢的方法。 安全就是安全地做事。

这是安全 HTTPS 协议的标准做法.

优点 缺点
1. 访问简单 1. 对于存储空间较低的设备来说会显得臃肿
2. 标准协议 2. 未经正确签名的证书会触发浏览器警告

HTTPS 的主要优点是它是一种用于保护 http 连接的标准化协议。连接一个 HTTPS 网页只需要输入 https://openwrt.lan 替代 http://openwrt.lan。 这很简单,只需要确认 luci-ssl 和它的依赖已经安装

但是有一些缺点,这里是其中的一些:

1. 外部库使安装变得臃肿。

在只有 4 MB 闪存的系统上, 无法为 LuCI 界面启用 HTTPS。为什么呢? 因为集成了 TLS 库,4 MB 的闪存无法容纳生成的镜像。除非你做了一些变通,比如扩大 overlayfs 的大小,否则这是不现实的。

2. 未正确签名证书上的浏览器警告。

好吧,这是一个很好的浏览器功能。除非已将自签名的根 CA 导入浏览器,否则此警告会使您无所适从!如果你只需要确保自己路由器管理界面的安全,为什么还要使用商业 CA 呢? 当然,您只需为自己的 openwrt.lan 域名和 IP 地址购买一份签名正确的证书,这样就可以摆脱恼人的浏览器警告了。您也可以直接将用于创建证书的自签名根 CA 导入浏览器证书存储区。 也可以看看如何摆脱 LuCI HTTPS 证书警告

自OpenWrt 21.02 以来,LuCI 现在除了 HTTP 之外,默认情况下还可以通过 HTTPS 访问,而无需安装任何额外的软件包。新安装的 OpenWrt 21.02 不会自动重定向到 HTTPS,但从 OpenWrt 19.07 升级到 OpenWrt 21.02 后,重定向将启用。

可以像这样激活或禁用重定向到 HTTPS:

uci set uhttpd.main.redirect_https=1     # 1 to enable redirect, 0 to disable redirect
uci commit uhttpd
service uhttpd reload

注意:如果要使用 SSH 隧道,则需要关闭重定向功能

对于存储空间非常有限的设备,此小技巧很方便。

# 优点 缺点
1 通过 SSH 隧道进行安全加密 设置更复杂
2 无需额外的 TLS

在标准 OpenWrt 安装中,SSH 服务器守护程序始终可用。 这对于有限存储的设备来说是个好消息,因为没有必要安装其他 TLS 库。 只需使用您喜欢的 SSH 客户端来设置端口转发,所有 LuCI HTTP 连接都将封装在 SSH 数据包中。

这意味着您获得了相同级别的 SSH 保护,同时摆脱了低存储量 OpenWrt 设备的 TLS 缺点。 当然,这种方法有缺点。 要设置 SSH 隧道,需要在 SSH 客户端上完成更多工作。 我们认为只是第一次设置复杂性。 稍后,启动隧道将更加简单。

uHTTPd 是负责托管 Luci Web 界面的 Web 服务器。 默认情况下,uHttpd 侦听 0.0.0.0,使其可以从本地网络访问。

为了防止本地网络中的攻击者对 LuCI Web 界面进行暴力破解,我们将编辑 uHTTPd 配置文件并更改其设置,因此它仅侦听 localhost

uci -q delete uhttpd.main.listen_http
uci add_list uhttpd.main.listen_http="127.0.0.1:80"
uci add_list uhttpd.main.listen_http="[::1]:80"
uci -q delete uhttpd.main.listen_https
uci add_list uhttpd.main.listen_https="127.0.0.1:443"
uci add_list uhttpd.main.listen_https="[::1]:443"
uci commit uhttpd
/etc/init.d/uhttpd restart

NOTE: You may have to add a uHTTPd restart in your local startup (/etc/rc.local) : /etc/init.d/uhttpd restart due to on boot uHTTPd throwing an error becuause localhost is not setup yet.

如果您愿意花一点时间来设置 SSH 隧道,这里是一些流行 SSH 客户端的简单指南。 本指南仅用于设置本地端口转发到LuCI Web界面。

此设置会将所有从本地计算机(台式机或笔记本电脑)127.0.0.1 的 8000 端口的流量转发到您的 OpenWrt 设备的 80 端口,该端口的本地地址为 127.0.0.1。 查看此图可能会更好地理解。

本地机器 OpenWrt 设备
127.0.0.1:8000 127.0.0.1:80
发送数据包 → 接收数据包
收到回应 ← 发送响应

所有流量都通过本地计算机上的 8000 端口转发到远程计算机上的端口 80。 这就是为什么此 SSH 隧道设置称为本地端口转发。

OpenSSH 客户端

这是 GNU/Linux 和 BSD 的标准 SSH 客户端。 为 LuCI Web 界面访问建立 SSH 隧道,只需在命令行中添加本地端口转发选项。 如有必要,请进行必要的调整(主机名,端口,标识文件等)。

ssh -L127.0.0.1:8000:127.0.0.1:80 root@openwrt.lan

只要 SSH 会话处于活动状态,SSH 隧道即处于活动状态。

为了方便,您可以创建本机配置文件。 编辑 ~/.ssh/config 文件并添加以下行。 有关所有可用配置的更多说明,参考 ssh_config(5)。 如果需要,请确保进行必要的调整。

Host LuCI-Tunnel
	Hostname openwrt.lan
	Port 22
	User root
	LocalForward 127.0.0.1:8000 127.0.0.1:80

创建上述配置后,可以通过发出以下命令来启动 SSH。

ssh LuCI-Tunnel

该命令将读取 “LuCI-Tunnel” 主机配置文件,并相应地设置 SSH 隧道。

PuTTY

PuTTY 是 Windows 下流行的 SSH 客户端。 建立 SSH 隧道,您需要执行以下步骤: 1. 导航到 ConnectionSSHTunnels. 2. 在 Source port 中填写 8000。 3. 在 Destination 中填写 127.0.0.1:80。 4. 单击 Add,直到端口转发设置出现在 Forwarded ports 部分。通常,显示的转发设置为 L8000 127.0.0.1:80。 5. 导航到 Session。在 Host Name 字段中填写 root@openwrt.lan,在 Port 字段中填写 22。如果您已经修改了 OpenWrt 主机名和 SSH 侦听端口,则需要相应地调整该值。 6. 在 Saved Sessions 字段中,输入唯一名称,例如 OpenWrt LuCI Tunnel。单击 Save,这样就无需重复此设置以备将来使用。 7. 要启动 SSH 隧道会话,请单击 Open。只要 SSH 会话处于活动状态,隧道就处于活动状态。 8. 要将来启动 SSH 隧道,只需在 PuTTY 新会话对话框中选择 OpenWrt LuCI Tunnel,单击 Load,然后单击 Open

安全访问 LuCI web,输入 http://127.0.0.1:8000 替代 http://openwrt.lan 或者 http://192.168.1.1。 浏览器与 LuCI Web 服务器之间的流量封装在 SSH 隧道中,因此 http 流量获得了相同级别的 SSH 流量加密。

如果您已经完成访问 LuCI Web 界面,请不要忘记结束 SSH 会话。

为了更安全, 您可以完全禁用 LuCI web 服务,并在需要时通过 SSH 启动服务。

/etc/init.d/uhttpd disable
/etc/init.d/uhttpd stop

使用此设置,只要 SSH 设置是安全的(禁用密码并仅使用公钥身份验证),就可以最大限度地降低 LuCI webserver 被暴力强制的风险,并防止未经授权访问 LuCI web 界面

另外,由于 uhttpd 进程释放了一些系统资源(内存、交换和 cpu 使用),OpenWrt 设备的性能将(略微)提高。

另请参考: 管理系统服务

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2023/12/29 13:22
  • by heybrowhatsup