网络安全与抓包工具

← 返回 MOC | ← 主页

海康威视的摄像头曾因默认密码被大规模入侵,组成僵尸网络发动 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 DROP

tcpdump:命令行抓包

嵌入式 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 53

Wireshark:图形化抓包分析

开发调试阶段,有图形界面时用 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←