Skip to content

网络安全常识

CDN

CDN(内容分发网络,Content Delivery Network)是一种通过在全球范围内分布大量服务器节点,将内容缓存到离用户最近的节点上,从而加速内容传输、提高访问速度和可靠性的一种技术。一般没有缓存的流量也会经过离网站的用户最近的 CDN 节点到达网站服务器(因此 CDN 可以看作一种反向代理),也能起到加速访问的作用。CDN 的主要功能包括:

  1. 加速内容传输:通过将内容缓存到离用户最近的节点上,减少传输延迟,提高访问速度。
  2. 减轻服务器负载:分散用户请求到多个节点上,减轻源服务器的压力,防止因流量过大导致的服务器崩溃。
  3. 增强安全性:CDN 提供的 DDoS 防护、WAF(Web 应用防火墙)等安全功能可以有效防御各种网络攻击。使用 CDN 可以隐藏服务器的 IP,防止攻击者找到并直接攻击服务器本身。

Cloudflare

Cloudflare 是一家提供 CDN 服务的知名公司,加速并保护了五分之一的互联网(包括 ChatGPT 等知名网站),且大部分功能可以免费使用。Cloudflare 提供了免费的无限流量 DDoS 防护服务。(所以常被称为赛博菩萨) 只要服务器 IP 不暴露,DDoS 攻击很难使网站瘫痪。

网络攻击

拒绝服务攻击

拒绝服务攻击是一种使目标无法正常服务的攻击方式。一般使用泛洪攻击的方式,通过向目标系统发送大量请求或数据包来使其资源耗尽。常见的泛洪攻击包括 DDoS 和 CC 攻击。

DDoS

DDoS(分布式拒绝服务攻击)攻击是指攻击者利用大量不同的计算机(通常是被感染的计算机组成的僵尸网络,数量可高达上万台设备。感染手段有通过散播有病毒的软件等)同时向目标系统发送大量请求或数据包,导致目标系统的资源耗尽,无法正常响应合法用户的请求。DDoS 攻击使用的 IP 太多,难以通过封禁 IP 进行防御。

可以通过提供 DDoS 防护的 CDN(比如 Cloudflare)缓解。

扫描器和爬虫

扫描器泛指扫描目标系统开放端口、暴露的服务、网站路径和漏洞的工具。扫描器并未直接造成威胁,但是攻击者能通过扫描器确定攻击的目标、了解目标系统的弱点(网络攻击的核心是信息收集)。

扫描器流量是互联网上非常常见的流量,一般在公网服务器上打开 web 服务不出几分钟就会有扫描器光顾。习惯就好

  1. 端口扫描:尝试连接目标系统的不同端口,以确定哪些端口是开放的。开放端口可能暴露出系统的服务和潜在的安全漏洞。本篇教程好像已经教过大家如何扫端口了。我得好好反思一下🤣
  2. 路径扫描:穷举网站的不同路径,以查找可能存在的敏感信息、未授权的访问点和可能出现漏洞的页面。往往和爬虫一起使用。
  3. 恶意爬虫:爬虫指的是不断递归访问网站的页面的程序(递归式访问网页上的链接)。搜索引擎就是一种爬虫。恶意爬虫指的是无视网站对爬取的范围限制、往往刻意伪装成正常用户搜集信息的爬虫。
  4. 漏洞扫描:使用已公开的漏洞的检测程序批量扫描搭建了对应的服务的服务器,尝试发现存在该漏洞的站点,从而利用漏洞批量入侵服务器。

暴力破解

通过穷举常用密码的方式暴力破解服务的密码(如 SSH 等)。

一旦攻击者获得了 SSH 密码就能直接远程控制服务器,因此 SSH 是最常见的被暴力破解的服务。不建议使用密码登陆 SSH,而是使用更安全的公钥登录;即使使用密码也需要足够复杂,且建议安装 fail2ban 等封禁暴力破解的 IP 的程序。服务都应尽量避免暴露到公共互联网。

漏洞利用

指攻击者发掘网站的安全漏洞、利用漏洞获得在网站上的更高的权限、窃取敏感信息、攻击其他用户甚至入侵网站服务器。不同于拒绝服务攻击和扫描器,利用漏洞进行攻击能造成非常大的威胁,但是一旦被发现就失败了一半了。

Web 应用的漏洞和攻防将在后续教程中讲解。

白盒攻击:如果攻击者有网站的源代码(比如源代码开源),那攻击者可以通过审计源代码的方式发现漏洞并构思利用方法。真正的攻击可能只有一两条网络请求,很难被发现。

黑盒攻击:一般发掘漏洞前需要先使用扫描器发现足够多的服务和页面,寻找可能有漏洞的服务和页面,再逐一尝试可能的漏洞。如果攻击者利用的是早已公开的漏洞,那么 WAF 等安全软件可能内置了对攻击流量的检测规则;如果攻击者使用的是他自己发掘的未知漏洞,则很难被发现。

木马

远程控制木马:远程获取攻击者的命令并执行(一般也会返回结果)的程序。(假设攻击者在自己的网站上写了要执行的命令,一个程序访问网站、获取命令并执行,如此简单的程序也是木马。)如果攻击者已经攻破了系统,木马流量也应被视为攻击流量而需要重点检测。

一般攻击者在攻破外围的系统获得足够权限后会植入木马(或使用 webshell,即 web 木马)继续攻击内网,木马由 C2(Command and Control)工具生成、控制和管理。常见的 C2 框架有 Cobalt StrikeMetasploitSliver 等。攻击者还可能使用木马作为代理访问内网的服务。

网络隔离

网络隔离是指将网络划分为多个独立的部分,以提高安全性、管理性和性能。在企业环境中,网络隔离可以防止未经授权的访问、限制潜在的安全威胁。即使某个系统被攻击者攻破,网络隔离可以防止攻击者攻破内网其他系统。相比检测恶意流量和攻击行为,网络隔离和严格的权限管理有时候更有效。

企业网络通常由多个部分组成,每个部分都有不同的功能和安全要求。以下是企业网络的一些常见部分:

  1. 公网部分:有公网 IP,可以被任何互联网用户访问到的部分。通常包括企业的公共网站(可能只有反向代理服务器而非网站服务器)、邮件服务器、VPN 服务器和其他需要对外提供服务的系统。

  2. 内网部分:用于员工的日常工作和内部系统的通信。和家庭网络环境类似,这部分处于 NAT 后,可以访问公共互联网,但是没法被公共互联网上的其他用户访问。能访问公共互联网俗称“出网”。

  3. 隔离部分:完全与公共互联网隔离、只与部分内网相连的部分,用于存储和处理敏感数据或运行关键业务系统。这些网络通常具有严格的访问控制和安全措施,只有授权的设备和用户才能访问。其内部也有大量隔离,按用途和安全需要被分成了多个部分。隔离部分一般有财务系统、研发系统、生产系统等。网站等业务系统一般也不出网,仅通过反向代理暴露到公网。由于与公共互联网隔离,这部分系统的操作系统和软件更新不一定及时,可能有更多漏洞。

企业通过多种技术和策略实现网络隔离,包括:

  • 防火墙:控制不同网络部分之间的流量,阻止未经授权的访问。
  • VLAN(虚拟局域网):将物理网络划分为多个逻辑网络,实现不同部门和系统之间的隔离。
  • VPN(虚拟专用网络):为远程用户提供安全的访问通道,确保他们能够安全地访问企业内网。
  • 跳板机:内网服务器可能禁止除了某个特定 IP 以外的任何 IP 访问。这个特定 IP 的服务器有完善的权限校验机制,专门用来访问受限资源,称为跳板机(Jump Server/PAM)。

(攻击者通过攻破公网网站或对员工进行网络钓鱼等方式进入内网俗称“外网打点”;进入内网攻击内网其他系统,一步步建立据点称为“内网横向移动”。)

VPN

WARNING

VPN 和翻墙无关。十年前 VPN 可以用于翻墙,但是现在若使用 VPN 协议代理跨境流量,很快就会被阻断。翻墙工具和 VPN 有很大差别。VPN 是用于权限管理和网络隔离的重要安全工具。

VPN meme

VPN(Virtual Private Network,虚拟专用网络)是一种通过加密隧道在公共网络上创建虚拟局域网的技术。VPN 主要用于保护数据传输的安全性和隐私性,常用于远程办公、访问受限资源和网络隔离。相比于代理,VPN 更注重加密和组网。

组网(将不同网络环境下的设备接入一个虚拟局域网)一般是通过操作系统提供的 VPN 接口或者 VPN 客户端的虚拟网卡实现的。Windows、MacOS、安卓和 ios 系统都自带了 VPN 功能,支持 IKEv2 协议。

VPN 的应用场景

  • 远程办公:通过 VPN,远程员工可以安全地访问公司内部网络和资源。
  • 权限管理:VPN 可以用于控制用户对网络资源的访问权限。敏感数据和资源常被保护在企业内网,有严格的网络隔离,用户可以通过 VPN 被赋予对这些资源和数据的远程访问权限。
  • 安全防护:在公共 Wi-Fi 等不安全的网络环境中使用 VPN 可以防止数据被窃听和攻击。

常见的 VPN 协议

  • IKEv2:IKEv2 是常用的 VPN 协议,具有快速连接恢复、稳定性和安全性高等优点。一般企业和高校提供的 VPN 都使用 IKEv2。
  • OpenVPN
  • WireGuard:WireGuard 是一种现代、高效的 VPN 协议,使用先进的加密技术,高性能、低延迟。WireGuard 使用 UDP 作为传输层。Cloudflare WarpCloudflare ZeroTrust 和上文提到的 EasyTier 都使用 WireGuard 协议。

防火墙

防火墙是一种网络安全系统,用于监控和控制进出网络流量。防火墙根据预定义的安全规则,允许或阻止数据包的传输。应对攻击,最简单粗暴但是非常有效的办法是设置防火墙规则封攻击者的 IP。

主要有以下几种类型:

  • 包过滤防火墙:检查数据包的源地址、目的地址、端口和协议,根据规则决定是否允许通过。
  • 状态检测防火墙:不仅检查数据包的头信息,还跟踪每个连接的状态、检查传输的数据,确保数据包是合法的。
  • 网络应用防火墙(WAF):专门用于保护网站的防火墙,内置了对常见 web 漏洞的特征的检测规则。
  • 下一代防火墙:结合传统防火墙功能和其他网络设备功能,如入侵检测和防御系统(IDS/IPS)。部分产品通过机器学习检测恶意流量,准确性往往高于完全基于规则的防火墙。

iptables

TIP

iptables 是 Linux 系统中常用的包过滤防火墙工具。它用于配置内核中的网络包过滤规则。以下是一些基础用法:

  • 查看当前规则:sudo iptables -L(若使用 IPv6 则使用 ip6tables 命令)

  • 添加允许特定端口的规则:

    bash
    # 允许 22 端口的 TCP 连接(SSH;未指定 IP,默认放行所有 IPv4)
    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  • 删除规则:

    bash
    # 删除允许 22 端口的 TCP 连接的规则
    sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT
  • 保存和恢复规则:

    bash
    # 保存 IPv4 规则
    sudo iptables-save > /etc/iptables/rules.v4
    # 恢复 IPv4 规则
    sudo iptables-restore < /etc/iptables/rules.v4
  • 网站使用 Cloudflare CDN,禁止除了 Cloudflare 以外的 IP 访问(防止被攻击者绕过 CDN 直接攻击服务器):

    bash
    # 允许 Cloudflare CDN 的 IPv4 和 IPv6 访问 80 和 443 端口
    for i in `curl https://www.cloudflare.com/ips-v4`; do iptables -I INPUT -p tcp -m multiport --dports http,https -s $i -j ACCEPT; done
    for i in `curl https://www.cloudflare.com/ips-v6`; do ip6tables -I INPUT -p tcp -m multiport --dports http,https -s $i -j ACCEPT; done
    # 默认禁止任何 IP 访问 80 和 443 端口
    iptables -A INPUT -p tcp -m multiport --dports http,https -j DROP
    ip6tables -A INPUT -p tcp -m multiport --dports http,https -j DROP