22.1.1 网站安全概念
网站是一个基于 B/S 技术架构的综合信息服务平台,主要提供网页信息及业务后台对外接口服务。一般网站涉及网络通信、操作系统、数据库、Web 服务器软件、Web 应用、浏览器、域名服务以及 HTML, XML,SSL; Web Services 等相关协议,同时,网站还有防火墙、漏洞扫描、网页防篡改等相关的安全措施。
网站安全主要是有关网站的机密性、完整性、可用性及可控性。
22.1.2 网站安全分析
其主要威胁如下:
1.非授权访问
网站的认证机制的安全缺陷导致网站服务及信息被非授权访问。攻击者通过口令猜测及“撞库”
攻击技术手段,获取网站用户的访问权限。
2.网页篡改
网站相关的组件存在安全隐患,被攻击者利用,恶意篡改网页。
3.数据泄露
网站的访问控制措施不当,导致外部非授权用户获取敏感数据。
4.恶意代码
网页木马是一个含有恶意功能的网页文件,其目的是使得网页访问者自动下载设置好的木马程序并执行。网页木马将导致用户账户密码私密信息泄露、终端设备被黑客连接控制。
5.网站假冒
攻击者通过网站域名欺骗、网站域名劫持、中间人等技术手段,诱骗网站用户访问以获取敏感信息或提供恶意服务。
6.拒绝服务
利用目标网站的带宽资源有限性以及 TCP/IP 协议的安全缺陷,针对目标网站发起 DDoS/DoS攻击,使得用户无法正常访问网站服务。
7.网站后台管理安全威胁
网站后台管理是网站的控制中心,一旦失去控制,网站的安全就难以保障。网站后台管理的安全主要涉及管理员账号安全性、后台管理程序安全性、内部管理权限安全性。
22.2 Apache Web 安全分析与增强
22.2.1 Apache Web 概述
Apache Httpd 配置文件如下
1. httpd.conf
httpd.conf 是 Apache 的主配置文件,httpd 程序启动时会先读取 httpd.conf。该文件设定 Apache 服务器一般的属性、端口、执行者身份等。
2. conf/srm.conf
conf/srm.conf 是数据配置文件,在这个文件中主要设置 WWW Server 读取文件的目录、目录索引时的画面、CGI 执行时的目录等。srm.conf 不是必需的,可以完全在 httpd.conf 里设定。
3. conf/access.conf
access.conf 负责基本的读取文件控制,限制目录所能执行的功能及访问目录的权限,设置 access.conf不是必需的,可以在 httpd.conf 里设定。
4. conf/mime.conf
mime.conf 设定 Apache 所能辨别的 MIME 格式,一般而言,无须动此文件。若要增加 MIME 格式,可参考 srm.conf 中 AddType 的语法说明。
22.2.3 Apache Web 安全机制
Apache Web 主要有以下安全机制:
1. Apache Web 本地文件安全
Apache 安装后默认设置的文件属主和权限是比较合理与安全的。如果本地用户比较多,可以按照手册的要求稍做修改。
#chown-R root .root/usr/local/apache
#chmod 511 /usr/local/apache/bin/httpd
2. Apache Web 模块管理机制
Apache 软件体系采用模块化结构,这使得 Apache 的功能可以灵活配置。当 Apache 服务不需要某项功能时,就可以通过配置方式,禁止相应的模块。
3. Apache Web 认证机制
Apache 提供了非常简单方便的用户认证机制。
4.连接耗尽应对机制
网站最容易受到攻击,当攻击者发起大量 http 连接,但不发送任何数据,而是等待超时,将造成Apache 服务器达到最大客户连接限制,从而造成其他正常的用户无法再正常访问网站。如果网站服务器的内存和 swap 空间比较少,甚至会导致一些服务器崩溃。
5. Apache Web 自带的访问机制
基于 IP 地址或域名的访问控制是 Apache 提供的一种根据客户机的 IP 地址或域名信息进行网站访问授权控制的措施。
6. Apache Web 审计和日志
Apache 提供一个记录所有访问请求的机制,而且错误的请求也会记录。这些请求记录存放在access.log 和 error.log 两个文件中,其中:access.log 记录对 Web 站点的每个进入请求。error.log 记录产生错误状态的请求。
7. Apache Web 服务器防范 DoS
Apache 服务器对拒绝服务攻击的防范主要通过软件 Apache DoS Evasive ManeuversModule 来实现。该软件可以快速拒绝来自相同地址对同一 URL 的重复请求,通过查询内部一张各个子进程的 Hash 表来实现。
8.使用第三方软件安全增强 Apache Web 服务
(1)构建 Apache Web 服务器“安全沙箱”。所谓“安全沙箱”是指通过 chroot 机制来更改某个软件运行时所能看到的根目录,即将某软件运行限制在指定目录中,保证该软件只能对该目录及其子目录的文件有所动作,从而保证整个服务器的安全。这样即使被破坏或侵入,服务器的整体也不会受到损害。可以用 Jail 软件包来帮助简化建立 Apache Webchroot 安全机制。
(2)使用 Open SSL 增强 Apache Web 安全通信。使用具有 SSL 功能的 Web 服务器,可以提高 pache 网站的安全。SSL 使用加密方法来保护 Web 服务器和浏览器之间的信息流。SSL 不仅用于加密在互联网上传递的数据流,而且还提供双方身份验证。
(3)增强 Apache Web 服务器访问控制。使用 TCP Wrappers 强化 Apache Web 服务器访问控制。
22.3.3 IIS 安全机制
IIS 的安全机制主要包括 IIS 认证机制、IIS 访问控制、IIS 日志审计
1.IIS 认证机制 IIS 支持多种认证方式,主要包括如下内容:
匿名认证(Anonymous Authentication),当其他认证措施都缺失的时候,实施匿名认证。
基本验证(Basic Authentication),提供基本认证服务。
证书认证(Certificate Mapping Authentication),实施基于活动目录(Active Directory ) 的证书认证。数字签名认证(Digest Authentication),实施数字签名认证。
IIS 证书认证(IIS Certificate Mapping Authentication ),实施按照 IIS 配置开展的证书 认证。Windows 认证(Windows Authentication),集成(NTLM)身份验证。
2. IIS 访问控制
IIS 具有请求过滤( Request Filtering )、URL 授权控制(URL Authorization)、IP 地址限制(IP Restriction )、文件授权等访问控制措施。通过 URL 扫描可以设置许可的文件以及限制的恶意字符串。基于 IP 地址的访问控制是 IIS 提供的一种根据客户机的 IP 地址信息进行网站访问授权的机制。
3. IIS 日志审计
IIS 设置的日志审计机制,能够记录 Web 访问情况。此外,与 IIS 相关的日志审计还有操作系统、数据库、应用服务。
22.4 Web 应用漏洞分析与防护
22.4.2 OWASP Top 10
OWASP Top 10 是国际开放 Web 应用安全项目组(Open Web Application Security Project,OWASP)推出的前10 个 Web 应用漏洞排名。
1. Al 一注入漏洞(Injection)
将不受信任的数据作为命令或查询的一部分发送到解析器时,导致产生注入漏洞,如 SQL 注入漏洞、NoSQL 注入漏洞、OS 注入漏洞和 LDAP 注入漏洞。
2. A2 一遭受破坏的认证(Broken Authentication)
Web 应用程序存在不限制身份验证尝试、Web 会话令牌泄露、Web 应用会话超时设置不正确、Web应用口令复杂性不高和允许使用历史口令等问题,从而导致 Web 应用认证机制受到破坏。
3. A3 一敏感数据暴露漏洞(Sensitive Data Exposure)
许多 Web 应用程序和 API 都无法正确保护敏感数据,例如,财务数据、医疗数据。攻击者可以通过窃取或修改未加密的数据来实施信用卡诈骗、身份盗窃或其他犯罪行为。
4. A4-XML 外部实体引用漏洞(XML External Entities, XXE)
许多较早的或配置错误的 XML 处理器评估了 XMI,文件中的外部实体引用。攻击者可以利用外部实体窃取使用 URI 文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击。
5. A5 一受损害的访问控制漏洞(Broken Access Control)
未对通过身份验证的用户实施恰当的访问控制,导致访问控制失效。攻击者可以利用这些漏洞访问未经授权的功能或数据。
6. A6 一安全配置错误(Security Misconfiguration)
安全配置错误包括不安全的默认配置、不完整的临时配置、开源云存储、错误的 HTTP 标头配置以及包含敏感信息的详细错误信息。
7. A7 一跨站脚本漏洞(Cross-Site Scripting; XSS)
当应用程序的新网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建 HTML或 JavaScript 的浏览器 API 更新现有的网页时,就会出现 XSS 缺陷。XSS 让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点。
8. A8 一非安全反序列化漏洞(Insecure Deserialization)
非安全的反序列化会导致远程代码执行。即使反序列化缺陷不会导致远程代码执行,攻击者也可以利用它们来执行攻击,包括重播攻击、注入攻击和特权升级攻击。
9. A9 一使用含有已知漏洞的组件(Using Components with Known Vulnerabilities)
组件(例如:库、框架和其他软件模块)拥有和应用程序相同的权限。Web 应用程序中含有己知漏洞的组件被攻击者利用,可能会造成严重的数据丢失或服务器接管。同时,使用含有已知漏洞的组件的应用程序和 API 可能会破坏应用程序防御,造成各种攻击并产生严重影响。
10. A10 一非充分的日志记录和监控(Insufficient Logging and Monitoring)
不充分的日志记录和监控,以及事件响应缺失或无效的集成,使攻击者能够进一步攻击系保持攻击活动连续性或转向更多系统,以及篡改、提取或销毁数据。
22.4.3 Web 应用漏洞防护
Web 应用漏洞防护的常见方法有 SQL 注入漏洞分析与防护、文件上传漏洞分析与防护和跨站脚本攻击。
1. SQL 注入漏洞分析与防护
SQL 注入攻击(SQL Injection Attack)主要指利用连接后台数据库中的 Web 应用程序漏洞,插入恶意 SQL语句,以实现对数据库的攻击。SQL 注入攻击的防范方法如下:
(1)对应用程序输入进行安全过滤。对网站应用程序的输入变量进行安全过滤与参数验证,禁止一切非预期的参数传递到后台数据库服务器。安全过滤方法有两种:
建立程序输入黑名单。拒绝己知的恶意输入,如 insert, update, delete, or, drop 等。建立程序输入白名单。只接收已知的正常输入,如在一些表单中允许数字和大、小写字母等。
(2)设置应用程序最小化权限。SQL 注入攻击用 Web 应用程序权限对数据库进行操作,如果最小化设置数据库和 Web 应用程序的执行权限,就可以阻止非法 SQL 执行,减少攻击的破坏影响。同时,对于 Web应用程序与数据库的连接,建立独立的账号,使用最小权限执行数据库操作,避免应用程序以 DBA 身份与数据库连接,以免给攻击者可乘之机。
(3)屏蔽应用程序错误提示信息。SQL 注入攻击是一种尝试攻击技术,攻击者会利用 SQL 执行尝试反馈信息来推断数据库的结构以及有价值的信息。
(4)对开源 Web 应用程序做安全适应性改造。利用开源网站应用程序进行安全增强,避免攻击者无须猜测就可以知道网站后台数据库的类型以及各种表结构,进而较容易地进行 SQL 注入攻击。
2.文件上传漏洞分析与防护
文件上传漏洞是指由于 Web 应用程序代码未对用户提交的文件进行严格的分析和检查,攻击者可以执行上传文件,从而获取网站控制权限.
3.跨站脚本攻击
跨站脚本攻击(Cross-Site Scripting Attacks)利用网站中的漏洞,在 URL 注入一些恶意的脚本,欺骗用户。
22.5.3 网站攻击防护及安全监测
1.防火墙
防火墙是网站安全的第一道技术屏障,主要用于限制来自某些特定 IP 地址的网站连接请求,阻止常见的 Web 应用攻击及 Web Services 攻击。
2.漏洞扫描
用漏洞扫描工具定期对网站服务器进行漏洞扫描,及时发现网站的安全漏洞,产生漏洞评估报告,以指导网站管理员对网站服务器进行升级或修改安全配置。
3.网站防篡改
网站防篡改的实现技术主要有两类:一是利用操作系统的文件调用事件来检测网页文件的完整性变化,以此防止网站被非授权修改;二是利用密码学的单向函数检测网站中的文件是否发生了改变。若检测到网页受到非法修改,则启动网页恢复机制,自动地用正常的页面文件替换己破坏的页面。
4.网络流量清洗
网络流量清洗是指通过基于网络流量的异常监测技术手段,将对目标网络攻击的 DoS,DDoS 等恶意网络流量过滤掉,同时把正常的流量转发到目标网络中。
5.网站安全监测
网站安全监测的目标是掌握网站的安全状态,类似天气预报系统,以便于网站管理人员及时处置安全事件。