攻击服务器的方式有哪些,对应的应对策略有哪些?
我们将攻击方式分为以下几大类:
一、 网络层攻击
这类攻击旨在消耗服务器网络资源或探测漏洞。
攻击方式 | 描述与实例 | 应对策略 |
---|---|---|
1. 端口扫描 (Port Scanning) | 使用 nmap 、masscan 等工具探测服务器开放的端口和服务,寻找攻击入口。 | 1. 端口隐藏: - 使用防火墙( iptables /nftables /firewalld )默认拒绝所有入站连接,只开放必要端口(如 80, 443, 和一个非标准的 SSH 端口)。- 端口敲门 (Port Knocking): 只有按特定顺序访问一系列封闭端口后,才开放SSH端口。 2. 服务伪装: 将敏感服务(如SSH)修改为非标准端口。 3. 监控与告警: 使用 fail2ban 或网络监控工具(如 psad )对扫描行为进行检测和告警,并可自动封禁扫描IP。 |
2. 拒绝服务 (DoS/DDoS) | 洪水攻击 (Flood Attack): 如 SYN Flood、ICMP Flood、UDP Flood,耗尽服务器带宽、连接数或CPU资源。 | 1. 基础设施防护: - 使用云服务商(AWS Shield, Google Cloud Armor, 阿里云高防IP)或第三方(Cloudflare, Akamai)的DDoS缓解服务。它们拥有远超单台服务器的带宽和清洗能力。 2. 系统层优化: - 优化内核参数:调整 net.ipv4.tcp_syncookies 、net.core.somaxconn 等以缓解SYN Flood。- 使用防火墙限制ICMP、UDP等协议的速率。 |
3. 中间人攻击 (MitM) | 在通信路径上拦截、窃听或篡改数据(如ARP欺骗、DNS劫持)。 | 1. 强制加密: - 全程使用TLS/SSL(HTTPS, SFTP, SSH)。使用Let's Encrypt获取免费证书。 - 为SSH启用证书认证(Certificate Authentication),而非密码。 2. 安全协议: 使用VPN(如WireGuard)、SSH隧道保护不安全的通信。 |
二、 服务与应用层攻击
这是最常见的攻击向量,针对运行在服务器上的具体服务(如Web、SSH、数据库)。
攻击方式 | 描述与实例 | 应对策略 |
---|---|---|
1. 暴力破解 (Brute Force) | 对SSH、FTP、Web登录页面、数据库等进行自动化密码尝试。 | 1. 强密码策略: 强制使用长且复杂的密码。 2. 密钥认证: SSH强制使用公钥认证,完全禁用密码登录。 3. 速率限制: - 使用 fail2ban 或 crowdsec 监控日志,自动封禁多次尝试失败的IP。- 在应用层(如Nginx)对登录API进行速率限制。 4. 双因素认证 (2FA): 为关键服务(如SSH、管理后台)启用2FA。 |
2. 软件漏洞利用 (Exploits) | 利用服务或系统软件中未修补的已知漏洞(如心脏出血、Log4Shell)获取权限。 | 1. 补丁管理: - 建立严格的补丁管理流程,定期(甚至自动)使用 yum update /apt update && apt upgrade 安装安全更新。- 订阅CVE通知(如Ubuntu安全通知)。 2. 最小化安装: 卸载所有不必要的软件包和服务,减少攻击面。 3. 安全编译选项: 如使用PIE、RELRO、Stack Canaries等编译选项来增加利用难度。 |
3. Web应用攻击 | SQL注入、XSS、文件包含、命令注入等,通过Web应用漏洞获取数据或Shell。 | 1. 安全开发: 在代码层面解决(参数化查询、输出编码、输入验证)。 2. Web应用防火墙 (WAF): 部署 ModSecurity(开源)或云WAF(Cloudflare, AWS WAF),过滤恶意请求。 3. 权限控制: Web服务(如Nginx/PHP-FPM)以专用低权限用户运行,并限制其文件系统访问范围。 |
三、 系统与权限层攻击
攻击者已获得初始访问权限(如www-data用户),试图提升权限和控制服务器。
攻击方式 | 描述与实例 | 应对策略 |
---|---|---|
1. 本地权限提升 (Priv Escalation) | 利用系统配置错误(如SUID二进制文件、内核漏洞、sudo权限过宽)从普通用户提权到root。 | 1. 定期审计: - 使用 linpeas 、linenum 等工具自查。- 审计SUID/SGID文件: find / -perm -4000 -type f 2>/dev/null ,移除不必要的。- 精细控制 sudo 权限,遵循最小权限原则。2. 强制访问控制: 启用并配置 SELinux 或 AppArmor,即使漏洞被利用也能限制其破坏范围。 3. 内核 hardening: 使用 grsecurity 或 sysctl hardening 参数。 |
2. 后门与持久化 (Persistence) | 添加SSH密钥、Web Shell、定时任务(cron)、系统服务、隐藏进程等,以便长期控制。 | 1. 文件完整性监控 (FIM): 使用 AIDE 或 Tripwire 监控关键文件(/etc/passwd , ~/.ssh/authorized_keys , 系统二进制文件)的变更,并定期校验。2. 进程监控 (HIDS): 使用 Wazuh、Osquery 等监控异常的进程、网络连接和计划任务。 3. 集中式日志分析: 将日志发送到远程的ELK/SIEM服务器,防止攻击者本地擦除日志。 |
四、 社会工程与钓鱼攻击
这类攻击针对的是管理服务器的人。
攻击方式 | 描述与实例 | 应对策略 |
---|---|---|
1. 凭证钓鱼 | 伪造登录页面、发送恶意邮件,诱骗管理员输入服务器密码或SSH密钥。 | 1. 安全意识培训: 对运维人员进行持续的安全教育。 2. 双因素认证 (2FA): 即使密码泄露,没有第二因素也无法登录。 3. 硬件安全密钥: 使用YubiKey等物理密钥进行认证,有效防止钓鱼。 |
2. 恶意软件 | 诱骗管理员在服务器上下载并运行恶意脚本或软件。 | 1. 最小权限原则: 日常操作不使用root账户。 2. 来源验证: 从不信任的源下载软件或脚本前,进行校验和验证。 3. 防病毒软件: 在Linux上也可使用ClamAV等进行扫描。 |
五、 数据窃取与泄露
攻击的最终目标往往是数据。
攻击方式 | 描述与实例 | 应对策略 |
---|---|---|
1. 数据库窃取 | 利用应用漏洞直接 dump 数据库,或通过SQL注入获取数据。 | 1. 加密: - 传输加密: 使用TLS保护数据传输(如MySQL SSL连接)。 - 静态加密: 对磁盘进行加密(LUKS),对数据库中的敏感字段进行加密(如AES)。 2. 访问控制: 数据库只允许特定应用服务器IP访问,禁止公网直接访问。 |
2. 文件窃取 | 遍历目录,下载配置文件(常含密码)、源代码、用户数据等。 | 1. 权限控制: 严格的文件系统权限(chmod , chown ),确保服务账户只能访问必需的文件。2. 配置文件分离: 将密码、API密钥等敏感信息从代码中分离,使用环境变量或安全的密钥管理服务(如HashiCorp Vault, AWS Secrets Manager)。 |
总结:核心防御矩阵
攻击层面 | 核心防御策略 | 具体工具/技术示例 |
---|---|---|
网络层 | 最小化暴露面,流量过滤 | 防火墙 (iptables ), fail2ban , Cloudflare |
服务层 | 强认证,补丁管理,WAF | SSH密钥, 2FA, unattended-upgrades , ModSecurity |
系统层 | 最小权限,行为监控 | SELinux/AppArmor, sudo 审计, AIDE, Wazuh |
数据层 | 加密,访问隔离 | LUKS, TLS, Vault, 数据库访问白名单 |
人员层 | 安全意识,流程规范 | 安全培训,变更管理,应急预案 |
最重要的策略是建立“防御纵深”(Defense in Depth):不依赖任何单一的安全措施,而是通过层层设防,使得即使一层被突破,还有其他层提供保护。同时,假设已被入侵(Assume Breach),从而更专注于检测和响应能力的建设,而不仅仅是预防。