网络安全与抓包工具
海康威视的摄像头曾因默认密码被大规模入侵,组成僵尸网络发动 DDoS——嵌入式设备的网络安全不是可选项。
嵌入式设备的网络安全威胁
常见攻击类型:
| 攻击类型 | 原理 | 典型案例 |
|---|---|---|
| 默认密码/弱密码 | 设备出厂密码没改,直接登录 | Mirai 僵尸网络(2016年,感染数十万摄像头) |
| 固件漏洞 | 未加密的 OTA 更新,可被替换为恶意固件 | 路由器固件劫持 |
| ARP 欺骗 | 伪造 ARP 回复,把流量引到攻击者机器 | 局域网中间人攻击 |
| SYN Flood | 发大量 SYN 包不完成握手,耗尽服务器半连接队列 | DoS 攻击 |
| 端口扫描 | 探测开放的服务端口,寻找攻击入口 | 渗透测试第一步 |
防护措施:
- 强制修改默认密码(出厂时要求用户设置)
- 最小权限原则:关闭不用的端口和服务(
netstat -tlnp查看开放端口) - 固件签名验证:OTA 更新包必须验证数字签名
- 网络隔离:IoT 设备放单独的 VLAN,不和办公网混用
- 定期更新固件,修补已知漏洞
防火墙与 iptables
防火墙在网络边界过滤数据包,决定哪些包能进、能出、能转发。
Linux 内核的 netfilter 框架提供包过滤能力,iptables 是它的用户态配置工具。
三张表(按功能分):
| 表 | 功能 | 常用场景 |
|---|---|---|
| filter | 过滤数据包(允许/拒绝) | 防火墙规则 |
| nat | 地址转换 | NAT、端口映射 |
| mangle | 修改数据包字段 | QoS、标记 |
filter 表的三条链(按流向分):
| 链 | 处理的包 |
|---|---|
| INPUT | 目的地是本机的包 |
| OUTPUT | 本机发出的包 |
| FORWARD | 经过本机转发的包(路由器场景) |
常用命令:
# 查看规则(-n 不解析域名,-v 显示计数)
iptables -L -n -v
# 允许 SSH(22端口)进入
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 拒绝某个 IP 的所有流量
iptables -A INPUT -s 192.168.1.100 -j DROP
# 设置默认策略为拒绝(白名单模式)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 允许已建立的连接的回包(配合白名单模式必须加)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 保存规则(重启后生效)
iptables-save > /etc/iptables/rules.v4只允许 SSH 和 HTTP,其他全拒(白名单模式):
# 先清空规则
iptables -F
# 允许回环接口
iptables -A INPUT -i lo -j ACCEPT
# 允许已建立连接的回包
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许 SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许 HTTP
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 默认拒绝其他所有入站
iptables -P INPUT DROPtcpdump:命令行抓包
嵌入式 Linux 设备没有图形界面,tcpdump 是排查网络问题的主要工具。
常用命令:
# 抓指定网卡的所有包
tcpdump -i eth0
# 过滤特定主机
tcpdump -i eth0 host 192.168.1.1
# 过滤特定端口
tcpdump -i eth0 port 80
# 过滤协议
tcpdump -i eth0 arp
tcpdump -i eth0 icmp
# 组合过滤(and/or/not)
tcpdump -i eth0 'tcp port 80 and host 192.168.1.100'
# 保存到文件(再用 Wireshark 分析)
tcpdump -i eth0 -w capture.pcap
# 显示 ASCII 内容(看 HTTP 明文)
tcpdump -i eth0 -A port 80
# 显示十六进制和 ASCII
tcpdump -i eth0 -X port 80
# 限制抓包数量
tcpdump -i eth0 -c 100 port 80实际排查场景:
# 排查设备为什么发不出去数据
tcpdump -i eth0 -n # 看有没有包发出去
# 验证 DHCP 过程
tcpdump -i eth0 port 67 or port 68 # DHCP 用 67/68 端口
# 验证 ARP 解析
tcpdump -i eth0 arp
# 抓 DNS 查询
tcpdump -i eth0 port 53Wireshark:图形化抓包分析
开发调试阶段,有图形界面时用 Wireshark,比 tcpdump 更直观。
过滤语法(和 tcpdump 不同):
# 过滤 IP
ip.addr == 192.168.1.1
ip.src == 192.168.1.1
ip.dst == 192.168.1.1
# 过滤端口
tcp.port == 80
udp.port == 53
# 过滤协议
arp
icmp
http
dns
# 组合
ip.addr == 192.168.1.1 && tcp.port == 80
实用功能:
- Follow TCP Stream:右键一个 TCP 包 → Follow → TCP Stream,看完整的 TCP 会话内容(HTTP 请求/响应的完整文本)
- Statistics → IO Graph:看流量随时间的变化趋势,定位流量突增的时间点
- Statistics → Protocol Hierarchy:看各协议占比
- 解密 TLS:在 Edit → Preferences → Protocols → TLS 里配置私钥文件,可以解密 HTTPS 流量(需要有服务器私钥)
笔试题直击
Q:iptables 如何实现只允许 SSH 和 HTTP,其他全拒?
先允许回环和已建立连接的回包,再允许 22 和 80 端口,最后把 INPUT 链默认策略设为 DROP。顺序很重要,规则从上到下匹配,先匹配到的先生效。
Q:tcpdump 如何抓取并保存特定 IP 的流量?
tcpdump -i eth0 host 192.168.1.100 -w output.pcap-i eth0 指定网卡,host 192.168.1.100 过滤 IP,-w 保存到文件。
Q:嵌入式设备的网络安全威胁和防护措施
主要威胁:默认密码、固件漏洞、ARP 欺骗、SYN Flood。防护:强制改密码、关闭不用的端口、固件签名验证、VLAN 隔离、定期更新。
如果你正在跟随梳理, 返回 MOC←