物联网安全设备接入防护:零基础配置教程
物联网设备接入网络时,如果不做防护,很容易被扫描攻击甚至沦为肉鸡。
本文从零开始,带你在服务器上设置安全接入防护,所有步骤都能直接照做。
1. 准备工作:你需要的环境
操作前请确保:
- 一台 Linux 服务器(推荐 Ubuntu 20.04 以上版本),已经通过 SSH 登录。
- 拥有 root 或 sudo 权限。
- 物联网设备需要一个固定的接入端口(比如 MQTT 用 1883,HTTP 用 8080 等)。
- 知道设备允许接入的 IP 段(例如内网 192.168.1.0/24)。
如果你不清楚端口号,可以先运行 ss -tlnp 查看当前监听的服务。
2. 第一步:用防火墙限制设备接入端口
使用 ufw(Uncomplicated Firewall)来限制只允许特定来源 IP 访问物联网端口。
操作非常简单:
# 先允许 SSH 端口(防止自己被锁在外面)
sudo ufw allow ssh
# 允许物联网端口只从内网网段访问
sudo ufw allow from 192.168.1.0/24 to any port 1883
# 如果设备需要公网访问,可以限制成只允许已知 IP
# sudo ufw allow from 你的外网IP to any port 1883
# 启用防火墙
sudo ufw enable
执行后可以用 sudo ufw status verbose 查看规则是否生效。
注意:如果当前 SSH 连接用的是其他端口,记得先把那个端口也放行。
3. 第二步:强化 SSH 登录,防止密码被爆破
物联网设备的管理接口通常使用 SSH,必须禁用密码登录、改用密钥。
- 在本地电脑生成密钥对(如果已经有则跳过)
ssh-keygen -t ed25519 -f ~/.ssh/iot_key
- 将公钥复制到服务器
ssh-copy-id -i ~/.ssh/iot_key.pub 你的用户名@服务器IP
- 登录服务器,编辑 SSH 配置
sudo nano /etc/ssh/sshd_config
找到并修改:
PasswordAuthentication no
PubkeyAuthentication yes
保存后重启 SSH 服务:sudo systemctl restart sshd
之后任何物联网设备只能用私钥登录,密码爆破就无效了。
4. 第三步:为设备通信开启加密和认证
大多数物联网协议支持加密传输。
以 MQTT 为例,开启 TLS 并使用客户端证书认证:
- 在服务器上安装 Mosquitto 并配置 TLS(具体配置略,但关键步骤是生成 CA 证书、服务器证书和客户端证书)。
- 对于简单场景,也可以使用预共享密钥(PSK),但安全性略低。
如果你担心配置复杂,可以先强制使用强密码 + 定期轮换。
在设备配置文件中加入连接密码:
# MQTT 客户端示例
mqtt_host = your.server.com
mqtt_port = 8883
mqtt_user = iot_device_01
mqtt_password = r8KL#d9s!@
强调:密码不要写在代码里,建议通过环境变量或加密配置文件传入。
5. 避坑指南与高频问题
- 忘记放行 SSH 端口:启用 ufw 之前,一定要先
ufw allow ssh,否则你会被自己踢出去。 - 使用默认端口:攻击者扫描 22、1883、8080 很积极,建议改成非常用端口(比如 SSH 改成 2222,MQTT 改成 8883)。
- 证书过期:如果用了 TLS,记得设置定时任务检查证书有效期,提前更新。
- 没有备份:修改任何配置之前,先备份原文件(
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak)。
常见问题:
- Q:启用 ufw 后设备连不上了?
A:检查规则是否允许了正确的端口和来源 IP,用 sudo ufw status numbered 查看所有规则。
- Q:SSH 密钥登录失败?
A:检查公钥是否写入 ~/.ssh/authorized_keys,并且权限是 600。
6. 验证防护是否生效
- 端口扫描测试:从外部机器用
nmap -p 1883 你的服务器IP,如果返回 filtered 或 closed 说明防火墙生效。 - SSH 密码爆破测试:从其他机器尝试用密码登录,应该被拒绝(连输入密码的机会都没有)。
- 日志检查:
sudo tail -f /var/log/auth.log查看登录尝试,没有异常 IP 的失败记录就说明安全。
物联网安全设备接入防护不是一次性工作,需要定期检查日志和更新规则。
按照本文步骤配置后,你的设备接入安全性会大大提升。