第十六章:网络安全基础
网络安全这个话题,说实话,刚入行的时候我觉得离自己挺远的。直到有一次,我负责的一个小项目被攻击了,数据差点丢了。从那以后,我养成了一个习惯——不管项目多小,安全这根弦不能松。
今天咱们聊聊网络安全的基础。我会把对称加密、非对称加密、数字签名、证书、防火墙、VPN,还有常见的攻击手段,串起来讲。你想想看,这些知识点其实是一条逻辑链。
16.1 对称加密与非对称加密
加密这事儿,说白了就是把明文变成密文,让别人看不懂。但怎么变,就有讲究了。
16.1.1 对称加密
对称加密,就是加密和解密用同一把钥匙。就像你家的门锁,用钥匙锁上,再用同一把钥匙打开。
常见的算法有:
- AES:目前最常用的,速度快,安全性高。我个人习惯用AES-256。
- DES:老古董了,现在基本不用,因为密钥太短,容易被暴力破解。
- 3DES:DES的加强版,但效率低,也被AES取代了。
对称加密的优点是快。缺点呢?密钥怎么安全地传给对方?你想想,如果密钥在传输过程中被截获,那加密就形同虚设了。
核心要点:对称加密适合大量数据的加密,但密钥分发是个大问题。
16.1.2 非对称加密
非对称加密解决了密钥分发的问题。它有一对密钥:公钥和私钥。公钥可以公开,私钥自己藏着。
举个例子:
- 别人用你的公钥加密数据,只有你的私钥能解密。
- 你用你的私钥签名,别人用你的公钥验证签名。
常见的算法:
- RSA:最经典,但密钥越长,加解密越慢。
- ECC:椭圆曲线加密,用更短的密钥达到同等安全强度。我最近的项目都在用ECC。
非对称加密的缺点是慢。所以实际应用中,我们通常混合使用:用非对称加密传输对称密钥,然后用对称密钥加密数据。
我的经验:我曾经在一个项目中,直接用RSA加密大文件,结果性能惨不忍睹。后来改成「RSA加密AES密钥,AES加密文件」,问题就解决了。
16.2 数字签名与证书
数字签名,说白了就是「电子版的手印」。它能证明两件事:
- 数据是谁发的(身份认证)
- 数据有没有被篡改(完整性)
怎么实现的?
- 发送方用私钥对数据的哈希值加密,生成签名。
- 接收方用发送方的公钥解密签名,得到哈希值,再对比数据的哈希值。
如果一致,说明数据是完整的,且确实是发送方发的。
16.2.1 数字证书
数字证书,就是公钥的「身份证」。它由CA(证书颁发机构)签发,里面包含了公钥、持有者信息、有效期等。
你想想,如果公钥本身是伪造的,那整个信任体系就崩塌了。所以我们需要一个可信的第三方——CA,来担保公钥的真实性。
证书的验证链是这样的:
- 你的浏览器内置了根证书(CA的证书)。
- 服务器发来它的证书,上面有CA的签名。
- 浏览器用根证书验证服务器证书的签名。
- 验证通过,说明服务器可信。
注意:千万不要随意信任自签名证书。我曾经见过有人为了省事,在内部系统用自签名证书,结果被中间人攻击了。教训深刻。
16.3 防火墙与VPN
16.3.1 防火墙
防火墙,就是网络世界的门卫。它根据规则,决定哪些数据包能进,哪些不能进。
常见的防火墙类型:
- 包过滤防火墙:检查IP、端口、协议。简单,但容易被绕过。
- 状态检测防火墙:跟踪连接状态,更智能。
- 应用层防火墙:能检查应用层数据,比如HTTP请求内容。
我个人习惯,在服务器上至少配置三层防护:
- 云平台的安全组(网络层)
- 操作系统自带的iptables或firewalld
- 应用层的WAF(Web应用防火墙)
16.3.2 VPN
VPN,虚拟专用网络。说白了,就是在公共网络上挖一条「隧道」,让你安全地访问内部网络。
常见的VPN协议:
- IPsec:安全,但配置复杂。
- OpenVPN:开源,灵活,我比较喜欢用。
- WireGuard:新秀,速度快,配置简单。最近几个项目我都换成了WireGuard。
避坑指南:我曾经配置IPsec时,因为MTU设置不对,导致某些网页打不开。折腾了两天才找到原因。嗯,细节决定成败。
16.4 常见的网络攻击
16.4.1 DDoS攻击
DDoS,分布式拒绝服务攻击。说白了,就是一群机器同时向你的服务器发请求,把服务器打趴下。
常见的DDoS类型:
- 流量型:带宽被占满,比如UDP Flood。
- 连接型:连接数被打满,比如SYN Flood。
- 应用层:CPU/内存被打满,比如HTTP Flood。
怎么防御?
- 使用CDN和云防护(比如Cloudflare、阿里云WAF)
- 限制单个IP的连接数
- 启用SYN Cookie
- 做好容量规划,别等被打才想起来扩容
我的教训:有一次项目上线,没做任何DDoS防护,结果被竞争对手打了半小时,服务直接挂了。从那以后,我每个项目都会提前部署防护。
16.4.2 中间人攻击
中间人攻击,就是攻击者偷偷站在你和服务器之间,拦截、篡改数据。
常见的场景:
- 在公共WiFi上,攻击者伪造一个热点,劫持你的流量。
- DNS劫持,把你引导到钓鱼网站。
怎么防范?
- 使用HTTPS,确保证书有效。
- 不要随意连接公共WiFi,尤其是没有密码的那种。
- 启用HSTS,强制浏览器使用HTTPS。
核心原则:永远不要信任网络,永远要验证身份。
16.5 知识体系图
下面这张图,把本章的核心知识点串起来了。你可以看到,从加密到签名,从防火墙到VPN,再到攻击与防御,其实是一条完整的链路。
你看,从加密到签名,从防火墙到VPN,再到攻击与防御,其实是一个完整的闭环。理解了这条链路,你就能构建一个相对安全的网络环境。
最后说一句:安全没有银弹。没有绝对的安全,只有相对的安全。我的建议是,根据你的业务场景,选择合适的安全策略,别过度,也别忽视。