安全地访问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库,4MB的flash无法容纳生成的图像。除非你做了一些变通,比如扩大覆盖层的大小,否则这是不现实的。 2. 未正确签名证书上的浏览器警告.

好吧,这是一个很好的浏览器功能。 除非已将自签名的根CA导入浏览器,否则此警告会使您无所适从! 当您只需要保护自己的路由器管理接口供自己使用时,为什么还要打扰商业CA?

当然,您只需为自己的openwrt.lan域和IP地址购买一个经过正确签名的证书即可摆脱恼人的浏览器警告。 您也可以只将用于证书创建的自签名根CA导入到浏览器证书存储中。 也可以看看 如何摆脱LuCI HTTPS证书警告

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

优点 缺点
1. 通过SSH进行安全加密 1. 设置更复杂
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:80

步骤:

1. ssh 连接你的路由

ssh root@routers-ip

2. 备份uhttpd配置文件

 cp /etc/config/uhttpd /etc/config/uhttpd.backup

3. 编辑uhttpd配置文件, 位置在: /etc/config/uhttpd

 vi /etc/config/uhttpd

你需要删除 (或者用 '#' 注释) 所有 listen_http 和 listen_https 选项。 这些参数告诉 uhttpd 监听的IP和端口, 更多信息: https://openwrt.org/docs/guide-user/services/webserver/uhttpd

现在我们通过以下选项使 uHTTPd监听127.0.0.1:80

list listen_http '127.0.0.1:80'

4. 重启uhttpd

/etc/init.d/uhttpd restart

如果您愿意花一点时间来设置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. 填写 8000Source port .

3. 填写 127.0.0.1:80Destination .

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

如果你需要访问LuCI,只需启动uhttpd服务,而无需从SSH启用它,然后通过SSH隧道访问即可。

/etc/init.d/uhttpd start

使用LuCI完成操作后,请不要忘记停止uhttpd服务。

/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: 2021/06/09 03:01
  • by chaircat