加固您的 OpenWrt 设备
好消息是 OpenWrt 默认情况下有合理的安全保障。
如果你在加固和防火墙和网络安全方面缺乏经验,也不必担心,默认情况下,OpenWrt 的默认加固已经足够了,没有经验的“麻瓜”也可以立即使用它,而不必担心。
...但是有一个重要且唯一的例外:
您需要在您的 OpenWrt root 管理帐户上设置密码。
root 帐户是设备上的默认 OpenWrt 管理员帐户。
下一章将向您展示如何做到这一点。
此页面还包含有关 OpenWrt 安全性的一些常用信息以及您通常应该做什么,以使您的路由器保持适当的安全状态。
设置 root 账户的密码
使用 Web 界面设置 root 密码。
- 转到LuCI → 系统 → 管理权 → 路由器密码
- 在路由器密码处输入新密码
- 单击页面底部的保存并应用
或者您也可以使用命令行界面设置密码。
passwd
保护 TTY 和串行控制台
启用 TTY 和串行控制台密码提示。
uci set system.@system[0].ttylogin="1" uci commit system service system restart
OpenWrt TTY 和串行控制台的身份验证默认为禁用。 使用 TTY 和串行控制台需要对设备进行物理访问。 启用身份验证可以减少攻击面。
请注意,对串行控制台引脚的硬件攻击也是可能的。 但是,这需要物理访问权限、时间和技能。
禁用 Linux 单用户模式
单用户模式可通过 GRUB 启动,无需密码,攻击者就可以更改 root 密码并重新启动。 解决办法是锁定 OpenWrt booloader 进程,确保无法在 Linux 单用户模式下启动。 这个问题还有待讨论,目前还没有相关记录。
我是专家,给我看看其他的“加固”方式...
- 如果您有大于等于 8 MB 的闪存 ROM 并与其他人共享您的家庭网络,那么为您的 LuCI Web 管理界面激活 HTTPS 是一个很好的方案。
- 如果您根本不使用 LuCI Web 管理界面,甚至可以禁用 uHTTPd 网络服务器。
我的 OpenWrt Web 管理界面需要一直在后台打开以便于访问...
...这是个很坏的主意。
以理智的态度对待你的管理员 root 帐户。
只使用 Linux 服务器的 root 帐户执行每个主要的操作:
- 当您不需要时,请远离管理员访问(ssh 和Web管理界面)
- 完成管理后,关闭/注销 root 管理会话(而不是8小时后)
- 只有当确实需要管理时,才作为 root 连接
- 不要与其他人共享您的 root 密码
- 不要和其他人分享你的 root 密码,即使他们答应给你一些 Katy Perry 的火辣图片作为回报。
当我是唯一的用户时,我不需要设置 root 密码。对吗?....
恭喜您不必与他人共享宝贵的带宽,但您仍然需要设置 root 密码。
因为你从家庭网络的浏览器中访问的任何网站(例如那些承诺有 Katy Perry 的火辣的网站)都可以很容易地使用所谓的“跨站点请求伪造”来访问你的 OpenWrt 设备的管理界面,一旦你没有注意到它,它就很容易在那里做坏事。如果没有设置 root 密码,那么此类恶意站点可能会以您不喜欢的方式操作 OpenWrt 设备。
所以现在就去为你的 root 帐户设置一个密码吧。
我们只需打开这一个端口,就能接收流量,还会出什么问题呢?...
小心处理防火墙规则:
- 如果不了解安全影响,请勿在广域网互联网端口上公开服务。邪恶资源和脚本小子的自动扫描程序有时会在几分钟内发现广域网上的任何开放端口,然后会在这些开放端口上运行大量入侵软件。互联网永远都在被扫描以寻找粗心的人。
- 如果你想在旅途中访问家庭服务,可以考虑使用 WireGuard VPN,而不是在广域网侧开放与服务相关的端口。
- 遗憾的是,很多网络游戏都有很多 “推荐设置”,要求永久打开各种端口范围,以获得最佳游戏体验。在盲目效仿这些做法之前,请先检查一下服务器连接问题是否是由于家中路由器级双重 NAT 情况造成的。
- 在添加自定义防火墙规则时,请务必使用合理的注释(例如:“......这是互联网上一个随机的好人让我添加的规则,他答应给我一些非常性感的滑板企鹅图片作为回报......”)
如果您已经在 OpenWrt 设备上执行了各种防火墙更改,现在又丢失了自定义规则的概览,您可以随时将所有 OpenWrt 设置重置为初始默认设置(参见故障排除部分)。
因此,我从不安全的供应商固件换成了 OpenWrt。我终于永远安全了...
别着急...
你注意到 OpenWrt 固件也会不时更新吗?
与您以前使用的厂商固件一样,您应该定期检查 OpenWrt 是否发布了新固件,并将这些更新应用到您的设备上。甚至还有配置备份和恢复功能,这样您就不必在每次更新后从头开始。
我安装了自定义软件包...
与固件一样,您也应该留意您安装的自定义软件包。有数百个可选软件包。并不是所有这些软件包的安全问题都可以通过 OpenWrt 系统升级来解决,而是需要您手动升级这些软件包。
如果您正在使用自定义软件包,则应不时运行 opkg update;opkg list-upgradable
。这将显示已安装的软件包是否有可用更新。
然后运行 opkg upgrade SOMEPACKAGENAME
手动安装软件包升级。
请注意,并非每个列出的软件包升级都是由于安全问题,也可能是无害的错误修复或功能扩展。
更新将继续使用您现有的服务配置,但对于关键的 OpenWrt 环境,在升级软件包之前,手动备份配置以防万一...
Note: LEDE uses a read-only root file system plus a differential extension partition for all package installs and upgrades. When wanting to maximize usage of your precious flash space, it tends to be a better approach, to applying up-to-date LEDE firmware and then reinstall your packages instead of only upgrading packages, when expecting larger volumes of upgrades.
谈谈 OpenWrt 上的高价值薄弱点
OpenWrt 设备上运行着 2-4 种常见服务,它们是恶意软件的高价值目标(即使仅在局域网区域内可用):您在浏览器中访问过的任何看似无害的网站,都可能使用跨站点请求伪造技巧,滥用这些服务中的一个未修补的安全漏洞。这可能导致恶意软件重定向攻击,即网站重定向到恶意软件网站等。
这些高价值服务尤其包括:
- 运行 LuCI(基于 Lua)的网络服务器,用于访问 OpenWrt 网络界面
- 用于访问 OpenWrt 命令行的 dropbear SSH 服务器
- 用于 GUI 文件资源管理器管理访问的 SFTP deamon(仅在手动激活的情况下,默认情况下不存在)
- 用于提供用户网络文件共享的 Samba SMB 共享(仅在手动激活的情况下,默认情况下不存在)
消除 OpenWrt 设备上的这些薄弱环节是您的责任:
- 设置 root 密码
- 让您的 OpenWrt 固件保持最新
- 当您手动激活 Samba 和/或 SFTP 时:定期检查是否有可用于 Samba 和 SFTP 的软件包升级并应用这些升级