服务器安全威胁
服务器在使用过程中,存在着各种各样的安全威胁。假设服务器遭受攻击,就有可能无法正常运行。
安全威胁可以分为:
- 恶意程序
- 黑客暴力破解
- SQL注入攻击
- DDos攻击
- 系统漏洞
恶意程序
恶意程序一般是指带有攻击意图所编写的一段程序。
恶意程序包括:
- 木马
- 病毒
- 蠕虫
恶意程序 | 概念 | 特点 |
---|---|---|
木马 | 伪装成其他程序(系统程序)的恶意代码 | 很难发现,发现了很难杀死(最有效的解决方法:重装系统 |
病毒 | 依附于其他程序的恶意代码 | 一定要有宿主程序 |
蠕虫 | 是一种通过网络从一个系统传播到另一个系统的感染性病毒程序 | 能够自我运行,自我复制,自我传播。威胁很大,能够破坏一个国家的网络 |
防御方法
- 不安装可疑的软件
- 不打开陌生人的链接
- 安装杀毒软件
- 不访问不正规的网站
黑客暴力破解
暴力破解的原理其实就是穷举法,也就是根据题目的条件确定答案的范围,并使用这些答案进行逐一验证,直到某个答案符合题目的条件。(假如密码是三位数,那么黑客可以一个一个尝试)
防御方法
- 密码足够的复杂
- 输入错误锁定机制(输入三次错误就锁定账号)
- 修改默认端口号
- 不允许密码登录,只能通过认证的秘钥登录。
SQL注入攻击
SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
- 发现SQL注入位置
- 判断后台数据库类型
- 确定XP_CMDSHELL可执行情况
- 发现WEB虚拟目录
- 上传ASP木马
- 得到管理员权限
在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。对于非Web的CS框架系统同样存在SQL注入的风险。
防御方法
- 使用正则表达式过滤传入的参数
(正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。) - 使用PreparedStatement代替 Statement
(无论用c、Java还是其他高级语言编写的东西都需要进行编译让机器听得懂,我们可以进行预编译,来预防攻击) - jsp中调用该函数检查是否包函非法字符(与第一点原理大致相同,都是来限制输入)
DDoS攻击
DDoS,英文全称Distributed Denial of Service(分布式拒绝服务):一种基于DoS的特殊形式的拒绝服务攻击,主要瞄准例如商业公司、搜索引擎和政府部门等比较大的站点。DDoS攻击通过多台受控机器向某一指定机器进行攻击,来势迅猛令人难以防备,同时具有较大的破坏性。
DoS:
DoS 是 Denial of Service 的简称,即拒绝服务,造成 DoS 的攻击行为被称为 DoS 攻击,其目的是使计算机或网络无法提供正常的服务。
大多数的 DoS 攻击还是需要相当大的带宽,而以个人为单位的黑客们很难消耗高带宽的资源。为了克服这个缺点,DoS 攻击者开发了分布式的攻击。
木马成为黑客控制傀儡的工具,越来越多的计算机变成了肉鸡,被黑客所利用,并变成了他们的攻击工具。黑客们利用简单的工具集合许多的肉鸡来同时对同一个目标发动大量的攻击请求,这就是 DDoS(Distributed Denial of Service)攻击。
DoS攻击与DDoS攻击的区别:
DoS攻击:黑客一个人(主机)单挑你
DDos攻击:黑客找来一群人(主机)群殴你
共同目的:使计算机或网络无法提供正常的服务
防御方法
DDoS攻击目前较难防御
- 源认证
- 指纹学习
- 重定向域名
漏洞
漏洞也叫脆弱性,是指计算机系统在硬件、软件、协议的具体事项或系统安全策略上存在缺陷和不足。
1990年,Dennis Longley和Michael Shain在《The Data and Computer Security Dictionary of Standard, concepts, and Terms》中对漏洞作出了如下定义:
在计算机安全中,漏洞是指自动化系统安全过程、管理控制以及内部控制中的缺陷,漏洞能够被威胁利用,从而获得对信息的非授权访问或者破坏关键数据的处理。
特点:
- 漏洞是事先未知、事后发现的
- 漏洞是安全隐患,会使计算机遭受病毒和黑客攻击
- 漏洞如果被利用,其后果不可预知
- 漏洞一般能够被远程利用
- 漏洞一般是可以修补的
危害:
- 权限绕过
- 权限提升(普通用于通过漏洞将权限提升到管理员级别)
- 拒绝攻击服务(l获得对系统某些服务的控制权限,导致服务被停止)
- 数据泄露(黑客能够访问本来不可访问的数据,如读取受限文件,服务器信息泄露等)
- 执行非授权指令(让程序将输入的内容作为代码来执行,从而获得远程系统的访问权限或本地系统的更高权限,如SQL注入和缓冲区溢出等)
漏洞的分类
根据被攻击者利用方式:
- 本地攻击漏洞:本地攻击漏洞的攻击者是本地合法用户或通过其他方式获得本地权限的非法用户
- 远程攻击漏洞:可以通过网络,对连接在网络上的远程主机进行攻击
根据漏洞所指的目标存在位置:
- 操作系统漏洞
- 网络协议栈漏洞
- 非服务器程序漏洞
- 服务器程序漏洞
- 硬件漏洞
- 通信协议漏洞
- 口令恢复漏洞
- 其他类型
根据对系统造成的潜在威胁以及被利用的可能性可以分为:
- 高级别漏洞:能够获取管理员权限的漏洞
- 中级别漏洞:能够获取普通用户权限、读取受限文件、拒绝服务的漏洞
- 低级别漏洞:能够读取非受限文件,服务器信息泄露的漏洞
当然,漏洞的分类并不只有这些,比如还可以按照漏洞被人掌握的情况进行分类,又可以分为已知漏洞、未知漏洞和 0day 等几种类型;按照用户群体分类,还可以分成Windows漏洞、Linux漏洞、IE漏洞、Oracle漏洞。
零日漏洞:(最危险)
“零日漏洞”(zero-day)又叫零时差攻击,是指被发现后立即被恶意利用的安全漏洞。通俗地讲,即安全补丁与瑕疵曝光的同一日内,相关的恶意程序就出现。这种攻击往往具有很大的突发性与破坏性。
漏洞存在的原因
- 软件或协议设计时的瑕疵
- 软件编写存在Bug
- 系统的不当配置
- 安全意识薄弱
漏洞是不可避免地,漏洞存在的根本原因是:人类思维的局限性
漏洞扫描
漏洞扫描是一种基于网络远程检测目标网络或本地主机安全性脆弱性的技术,可以被用来进行模拟攻击实验和安全审计。
漏洞扫描就是一种主动的防范措施,可以有效避免黑客攻击行为。当然,黑客也可以使用漏洞扫描技术发现漏洞并发起攻击。
- Ping扫描:Ping扫描就是确认目标主机的TCP/IP的网络是否联通,也就是扫描的IP地址是否有设备在使用。
- 端口扫描:端口扫描是用来探测主机开放的端口。一般是对指定IP地址进行某个端口值段或者端口的扫描。
- 操作系统探测:操作系统探测是用来探测目标主机的操作系统信息和提供服务的计算机程序信息。
- 漏洞扫描:漏洞扫描用来探测目标主机系统是否存在漏洞,一般是对目标主机进行特定漏洞的扫描。
Ping扫描确定目标主机地址,端口扫描确定目标主机开放的端口,然后基于端口扫描的结果,进行操作系统探测,最后根据掌握的信息进行漏洞扫描。
常见扫描方法
端口扫描:
- 全连接扫描:扫描主机通过TCP/IP协议的三次握手与目标主机的指定端口建立一次完整的连接。如果端口处于侦听状态,那么连接就能成功,否则,这个端口不可用。
- SYN扫描:扫描器向目标主机发送SYN包,如果应答是RST包,说明端口是关闭的;如果应答报文中有SYN和ACK,说明端口处于侦听状态,再发一个RST包给目标主机停止建立连接。
- 隐蔽扫描:扫描器向目标主机端口发送一个FIN包,当FIN包到达一个关闭的端口,数据包会被丢弃,且返回一个RST包;如果是打开的端口,FIN包只是简单的丢弃。
系统漏洞扫描:
- 被动扫描:是基于主机的检测,对系统中不合适的设置、脆弱的口令以及其他同安全规则相抵触的对象进行检查。
- 主动扫描:是基于网络的检测,通过执行一些脚本文件对系统进行攻击,并记录系统的反应,从而发现其中的漏洞。
补丁
解决系统漏洞的小程序
补丁是指衣服、被褥上为遮掩破洞而钉补上的小布块。现在也指对于大型软件系统(如微软操作系统)在使用过程中暴露的问题(一般由黑客或病毒设计者发现)而发布的解决问题的小程序。就像衣服烂了就要打补丁一样,人编写程序不可能十全十美的,所以软件也免不了会出现BUG,而补丁是专门修复这些BUG做的因为原来发布的软件存在缺陷,发现之后另外编制一个小程序使其完善,这种小程序俗称补丁。补丁是由软件的原来作者制作的,可以访问网站下载补丁。