随着网络的普及,我们的生活越来越方便,但是网络安全也成了很多人面临的一个问题。特别是那些有着商业数据的企业电脑,更要注意上网安全常识,不然病毒会对我们造成严重的威胁。 本文的主要内容是描述常见网络攻击手段以及针对这些攻击手段应该如何设置网络安全防护策略。 一·引言 随着计算机网络的发展, 信息网络逐渐发达起来, 带给企业和人民生活巨大的好处, 我国也是把信息产业放在发展的首位。 高信息技术象一把双仞剑, 带给我们无限的益处, 同时也带给信息网络更大的风险。 因为计算机安全方面比传统的计算机安全的范围要广和复杂的多。 一旦出现问题的话, 造成的危害会更加巨大和可怕。 比如, 原来我们的讲到的计算机安全多是讲物理安全或病毒造成的数据危害等, 病毒要传播需要遵循一定的传播途径, 传播载体再经过一定的时间过程, 才可能发作。 不管物理安全还是计算机病毒多数都是可以通过有效手段进行防范和消灭的。 但现在已完全不同了, 计算机网络的发展, 特别是近年来的INTERNET已将世界上无数的计算机网络联系在了一起, 这么说, 即使你已将大楼的门完全锁好了, 但攻击者还是通过计算机网络在世界的另一头侵入你的网络, 翻阅机密资料甚至作出破坏性的动作。 所以我们信息管理人员应该 对攻击手段有一个全面深刻的认识, 需要制订适合本系统的完善安全防护策略。 二·清楚需要保护的 为了制订安全防护策略, 首先需要弄清楚什么是需要保护的。 其次了解一般的攻击类型和攻击手段。 当我们的机器联上了INTERNET, 我们同时也给自己带来了三 种风险。 l 数据:存储在电脑中的数据信息 l 资源:机器设备 l 荣誉: 数据 对个人或企业来说, 数据的三个特性是需要保护的。 l 秘密性(Secrecy):不想给其他人知道的。 l 完整性(Integerity):不想给其他人更改的。 l 有效性(Availability):需要确认的可以使用的。 资源 虽然机器上没有什么重要的数据, 但是侵入者可以随意的使用你的机器和其资源, 如:储存一些资料, 进行运算, 甚至将其做为一个可以攻击其它网络或机器的跳板, 网关(gateway)。 需要注意的是:这是黑客(Hacker)常用手段, 狡猾的Hacker有不止一个攻击网关, 且分布不一, 有很大程度的欺骗性和隐蔽性。 荣誉 如果一个侵入者以你个人或一个企业的身份出现在INTERNET上, 他做的什么事情看上去都向来自你或你的企业, 那会带来什么影响或危害呢? 三·攻击行为类型 大部分攻击行为类型都全部分为三类, 是一、闯入(Intrusion) 二、Denial of service 三、信息窃取。 闯入 最常见的攻击就是叫闯入, 他们闯进计算机里, 就向普通合法用户一样使用你的电脑。 闯入的手段是比较多的, 常见的类型是, 利用社会工程学攻击(如:你打个电话给ISP, 说你是某个用户, 为了做某些工作, 要求立即改变密码)。 一种是, 猜测用户名的密码, 在有些情况下这是比较容易的, 有许多一般用户并不太重视自己的密码, 或嫌麻烦怕忘记密码而将密码取的很容易猜测到, 根据自己的亲身经验, 一个服务器里有至少有百分之五的人的密码是非常简单和易猜的, 甚至很多人的密码与用户名居然是一样的。 另一种, 是搜索整个系统, 发现软件, 硬件的漏洞(BUG)或配置错误, 以获得系统的进入权。 关于第三种闯入类型的详细内容可以参考攻击手段。 Denial of services 这是一种将对方机器的功能或服务给以远程摧毁或中断的攻击方式, Denial of services攻击的手段也是多种多样的, 最早出现的大概是叫“邮包炸弹”, 它是这样的, 攻击者用一个程序不断的向被攻击者的邮箱发出大量邮件同时还匿藏自己的地址信息, 以至于邮件使用者几乎无法处理。 甚至导致邮件服务系统因为大量的服务进程而崩溃。 而被袭击者也无法确认谁是攻击者。 另一些攻击手段是利用软件本身的设计漏洞进行远程攻击,其中比较著名的是微软的OOB(Out Of Bond)漏洞,只要对着运行95或NT的139口发出一个不合法的包, 就会导致操作系统轻则断掉网络连接, 重则彻底死机或重起。 信息窃取 有一些攻击手段允许攻击者即使不操作被攻击的电脑系统也能得到想要的数据。 比较典型的是用网络嗅查器(Sniffer)监听网络中的包信息, 从中发现有用的信息, 如:用户名, 密码, 甚至付款信息等。 Sniffer的工作有点象现实社会里装电话窃听装置一样。 在共享式网络环境里, Sniffer是很可怕的, 它可以监听大量的网络信息。 四·攻击手段和反攻击 在谈攻击手段前, 可以先研究攻击行为的特性来帮助全面了解攻击和反攻击。 攻击一台主机, 对黑客来说指导思想应该是广泛寻找整个网络系统漏洞薄弱的地方或配置错误是最优先要做的, 其次再是寻找一个新的攻击点。 假设:我要攻击一个系统, 需要进入某台主机。 我最先要做的可能是先在它附近机器上寻找漏洞或称为可攻击点, 而不是先把大量的心思放在要攻击的主机上, 这样有什么好处呢?一是隐蔽自己的真实攻击目标, 做为一个攻击跳板。 二是利用附近机器与目标机可能具有的“信任”关系, 轻易的侵入目标机。 三就是整个系统比较大的时候, 攻击点就可能比较容易发现, 可以在侵入一台机器后, 利用Sniffer来监听发往目标机器的网络信息, 或其它方法或得来目标机器的进入权。 通常, 攻击行为的四个阶段: 1·得到进入系统的权力 2·得到超级用户的权限 3·再攻击其它附近的机器 4·离开前, 留下后门(backdoor) 阶段一:得到进入帐号 攻击者攻击UNIX系统的时候, 最先要做的就是得到用户名和密码, 他要做就是得到/etc/shadow文件或NIS map.当得到了shadow文件后, 就可以用Crack程序尝试将其解密, Crack程序通常是用字典攻击的方法来尝试密码的, 因为shadow文件都是用DES不可逆算法加了密, 所以只有用一个字典文件(一个含有许许多多单词的文件)对照shadow文件来反复猜测用户的密码。 字典文件里的单词就是用来试密码的字符串。 如果一个系统的用户比较多, 字典文件设计的好, 破解率是很高的, 根据我的经验最高竟达30%。 据说搞的好曾 经有人试过50%。 Crack程序原来并不是一开始就为了破密而设计的, 本来是用于测试自己系统用户的密码是否简单做内部检查用的, 但是一旦shadow文件外泄。 就很难控制住了。 这就要求用户取密码时要尽量复杂一些, 绝对不要是一个单词, 最好含有数字和特殊符号, 另外要定期更换密码。 那么怎么得到目标机器的进入权呢?首先是收集信息, 包括一些系统最新的安全漏洞和攻击漏洞的方法。 二是收集关于目标机器的信息, 以利于登入系统。 如:收集这台机器的用户名, 管理员的工作规律等。 阶段二:得到超级用户的权限 当得到系统的进入权后, 下面就是要得到超级用户的权限, 主要途径就是寻找本身系统的漏洞。 比较典型的方法有, 寻找set-uid的程序, 有可能以超级用户的身份存取文件。 寻找不带验证的NFS以读取文件。 利用操作系统, 软件的设计漏洞来获得超级用户权利。 通常最新发现安全漏洞和攻击方法都会给予公布, 攻击者很容易在网上收集这些信息。 因为每种系统的漏洞都非常多, 而且经常会发现一些新的漏洞, 所以一旦攻击者侵入了系统要获得超级用户权限的机会也是比较高的。 所以管理员更应该跟踪新的安全信息, 有些国外的专业机构会定期公布最新漏洞、攻击方法和解决方案。 CIAC和CERT都是这方面的权威机构。 另外有一些工具可以起到一些自我检查的作用, 免费的工具有SATAN,COPS, 可以在一定程度上起到一些作用。 另外很重要的就是要经常给自己的操作系统装补丁(PATCH)和升级一些老的程序。 阶段三:攻击其它机器 当攻击者得到了超级用户权限, 那这个机器就可以用来攻击网络上的其它机器。 一般手段有修改login进程以窃取密码, 包嗅查器窃取网络数据再传给攻击者。 在这个阶段, 攻击者已经得到了超级用户权限, 它可以修改系统里的所有文件, 包括记录文件, 程序文件, 设备文件, 修改整个系统的行为等等。 对管理员来说这个阶段里, 除非攻击者故意引起管理员注意, 某些程度上是很难察觉的, 管理员完全是被动的。 专业的黑客会自己编制一套工具程序, 一边“工作”, 一边删除自己的活动记录。 或者将自己的程序覆盖掉原有的程序, 使得系统管理员一般情况下使用这些程序是正常的但是实际上却做了某些手脚, 例如:这些程序在特定的条件下不做系统记录, 不显示某些信息, 或者做特定的动作等等。 对于后一种情况, 管理员可以安装checksum工具来保证程序的完整性。 免费的工具有:Tripwire,COP5. 阶段四:离开前, 留下后门 为了能够方便攻击者下次再轻易的返回系统, 专业黑客在退出系统之前, 肯定要留下一些后门, 再彻底清除他在这段时间的系统活动记录。 后门的类型五花八门, 具我所知就不下十种, 不能够一一细说, 大致有"rhost + +","Checksum and Timestamp","Login后门","telnetd后门","服务进程后门","crontab后门","库文件后门","内核后门", “文件系统后门”,"启动区后门", "隐藏进程后门"等等。 对管理员来说, 这个阶段和上个阶段一样, 比较难以察觉, 因为如果没有发现有攻击者的情况下, 很少管理员会主动去查找是否系统里留有攻击者的后门。 即使发现了入侵者, 因为象刚才提到的, 后门种类繁多, 有些可以通过一些工具或自检容易查到或处理掉, 有些就比较麻烦, 可能要花大量的人力和物力去查找是否有问题。 计算机系统复杂, 高级复杂的后门如“内核后门“是很难发觉到的, 除非重装系统否则不能保证没有后门留在里面。 幸运的是这种高级后门掌握的人相对比较少, 运用起来也比较麻烦。 分析完以上攻击行为的阶段, 发现对系统安全来说, 预防要以一阶段和二阶段为主, 一旦被攻击者成功的完成了第二阶段。 以后就很麻烦了, 有可能产生比较严重的后果。 常见攻击手段分析 现在对攻击行为已有了比较清晰全面的认识, 接着介绍攻击行为第一和第二阶段的出现的漏洞类型和攻击手段。 主要是一些典型和比较著名的漏洞。 Sendmail漏洞 Sendmail程序实在是太复杂了, 所以它的每个版本总能出现这样或那样的问题, 对管理员来说也较难配置。 同时因为sendmail有一个对外服务的25口, 所以还使攻击者有远程攻击的机会。 典型的漏洞有sendmail -d Debug,sendmail Bounce to Program,sendmail syslog buffer problem. Sendmail -d Debug 比较新的sendmail有-d这个命令参数, 是进入调试模式的意思。 当设置了很多的调试参数的时候, 就可以利用堆栈溢出, 嵌入一个命令以sendmail的执行身份执行。 因为sendmail是一定要以超级用户的身份执行的。 这意味着可以嵌入向'cat /etc/shadow'这样的命令。 Sendmail Bounce to Program Hole 这是一个比较老的sendmail版本问题,向不存在的地址发一个象这样的一个'/bin/mail user@notexists.com < /etc/shadow'邮件.信会退回来, 后面那个文件也会被以ROOT身份读回来。 等等厖 堆栈溢出 有许多命令都是set-uid的程序, 这是因为它要为普通用户服务但是又要以超级用户的身份执行命令, 一定要有Set-uid位命令有sendmail,passwd等等。 这样就如果命令程序的设计有问题的话, 就会给攻击者以Buffer overflow的方式使程序帮助他执行其它命令或以非正常方式退出到root shell. 比较典型和经常出问题的有/etc/passwd, /bin/fdformat, ps命令等等。 所以管理员根据情况可以考虑去掉suid位, 以防止这些事情发生。 程序设计问题 有许多命令或应用程序在设计阶段因为人为的疏忽或错漏, 使得它出现种种问题, 有些甚至是严重的安全问题。 这点在现实生活中出现的情况比较多, 我估计至少有50%的漏洞是与程序本身设计有关。 如:我发现最普遍和容易给管理员疏忽的是sun ftpd, 攻击者利用ftpd程序做一些程序不能预期的动作后, 使其 core dump是有shadow内容的文件。 利用另一些程序漏洞, 甚至可以完全以root身份执行动作。 有些程序员在设计CGI程序也容易忽视安全问题, 使得他的程序可以被利用来做为入侵的攻击点。 配置错误或人为疏忽 配置错误或疏忽也是造成攻击者有机可乘的主要原因, 当然硬件, 软件等配置疏忽和错误是多种多样的, 举个例子。 比较典型的有/tmp目录权限的设置。 这是本身Solaris2.5.1系统安装后自己的问题, 没有设置粘贴位, 使得利用一个程序就可以得到root shell.另一些是管理员疏忽或配置错误造成的安全漏洞, 比较典型的有以root身份执行httpd,这样执行程序时就会以超级用户的身份执行。 给攻击者有机可乘。 另一些是有些管理员忽视安全问题的细节, 我亲身发现的有这样的情况, 管理员将web server和ftp server放在同一台机 器里, 而他的CGI程序有一个比较大的漏洞, 使得攻击者可以远程在机器上执行命令, 本来只是以nobody的身份执行的, 不会产生很大的问题, 但是正好ftp server也在同一台机器上。 在搞清楚机器的其他漏洞后, 将攻击程序上载到那台机器上, 再从web浏览器上远程执行, 轻易的就得到了超级用户的权利。 还有一些是有些目录的权限设置的不正确。 另一些是路由器或子网设置不科学, 使得攻击者有种种机会。 其它有趣的攻击方法 除了以上的那些主要的漏洞种类是黑客的常用的手段, 还有一些技巧是比较有趣又非常犀利的。 如:IP抢劫(IP Hijack)、IP欺骗(IP Spoff), Sniffer、抢劫TTY(TTY Watcher)、“特洛依“木马、DNS欺骗、arp欺骗、War dialing等等。 IP抢劫, 是指将某个连接的进程强行强过来。 如某个用户正在与某台主机相连, 做某些动作。 这个时候通过设计好的程序将其连接强过来, 自己与主机接收和发送数据。 这种技术是对付“一次性密码”的连接的好手段, 即使你每次的密码不一样或随机, 但还是可以得到想要的信息。 而且可以欺骗主机, 绕过防火墙。 使之认为还是原来被抢的那个连接。 IP欺骗, 是指伪装自己真实的IP地址。 攻击者在攻击某些目标的时候, 如果风险很大, 是绝对要绕几台中间机, 再利用IP欺骗隐藏真实IP地址, 这样即使被发现也是个假IP。 另外IP欺骗的一个重要用途是于绕过防火墙。 因为防火墙的设置多是基于包过滤的, 它接受来自某些IP的包, 也拒绝某些包。 这样如果攻击者将自己的IP伪装成假IP就可以顺利的通过防火墙了。 嗅查器(Sniffer), 是指监听网段的通信信息。 因为一般来讲许多公司企业都是使用共享式的集线器(HUB), 所以只要将网卡接口设置为监听模式, 就可以收到网络所有的广播和传送信息。 大部分情况下, 这种技术通常用于偷听网络中传送的信息, 如密码, 私人信息等等。 但它的局限在于只能听到本网段的信息, 如果使用switch hub就听不到其它机器传送的信息。 抢劫TTY,是指监视同个系统中使用不同TTY设备的用户做的动作, 或将其强过来, 以设备使用者的身份做动作。 抢劫TTY可以用于监视某些人的动作, 或等待其离开的时候以他的身份执行动作。 DNS欺骗, 是指使被攻击机器使用的DNS SERVER给出假的域名。 和IP欺骗相似, 主要用于攻击有输出NFS目录,或限制了某些名字机器进入的主机。 也可以用于绕过防火墙。 “特洛依“木马, 指替换某些程序或给出假程序, 以获得想要的信息。 如为了要得到某个用户的确切密码, 可以这样, 做一个“陷阱”, 等用户踩中它, 再给出一个很“认真, 专业”的信息, 如:“系统错误!请重新输入密码”。 这样如果用户真的输入了, 程序就将其发送给攻击者, 自行销毁自己或匿藏起来, 等待下次再被激发。 War dialing,指攻击者用一个程序反复拨各合法的电话号码, 找出有MODEM应答的电话, 再尝试从此攻入。 因为许多公司设置了电话拨入与方便外出的人员或与其他公司传送电子信息。 但是多数都将密码设的极为简单甚至没有密码。 这样攻击者从此进入也可完全绕过防火墙。 最近SUN公司还宣布, 如果发现职员私设MODEM, 有可能会遭到解雇。 可见这也是一个主要的安全隐患。 安全防范技术 正因为网络安全问题, 复杂多样, 所以出现了一些技术来帮助管理员来加强网络安全。 其中主要分为, 加密技术, 身份认证技术, 数据完整性审计技术, 防火墙技术等等。 管理员可以利用这些技术组合使用来保证网络主机的安全。 加密技术 加密技术的发展已经很久了, 主要分为公开算法和私有算法两种, 私有算法是运用起来是比较简单和运算速度比较快的, 但缺点是一旦被解密者追踪到算法, 那么算法就彻底废了。 公用算法是, 算法公开的, 有的是不可逆, 有用公钥, 私钥的。 优点是非常难破解, 可广泛用于各种应用。 缺点是运算速度较慢。 使用有时很不方便。 身份认证技术 这项技术在电子商务应用中是极为重要的核心安全技术之一, 主要在数字签名是用公钥私钥的方式保证文件是由使用者发出的和保证数据的安全。 相关技术有, RSA, PGP。 在网络应用中有第三方认证技术Kerberos,它可以使用户使用的密码在网络传送中, 每次均不一样, 可以有效的保证数据安全和方便用户在网络登入其它机器的过程中不需要重复输入密码。 但它的缺点是配置复杂, 安装客户端使用不是很方便。 ssh是加密连接的意思, 它可以使你和主机间的连接保持高度加密, 还可和Kerberos结合使用。 缺点和Kerberos基本相同。 数据完整性技术 为了保证机器中的程序没有被入侵者做了恶意的更改, 可以使用一些工具软件帮助检查, 常用的有, tripwire,COP5等。 防火墙 防火墙技术是比较重要的一个桥梁, 以用来过滤内部网络和外部网络环境, 在网络安全方面, 它的核心技术就是包过滤, 高级防火墙还具有地址转换, 虚拟私网等功能。 包过滤的优点 1·一个包过滤路由器就可以保护整个网络 2·包过滤不需要一般使用者的配合和知识 3· 包过滤是一个大部分路由器都有的功能 包过滤的缺点 1· 因为先天的缺陷, 现在的过滤工具还不是很完美 2· 包过滤对有时并不适合某些协议(Rcp,rlogin.rdist,rsh,NFS,NIS..etc..) 3· 有些安全政策并不能轻易的转成包过滤规则 4· 有些技术可以绕过防火墙.如:IP欺骗和DNS欺骗。 系统管理员应提高认识, 并分析作出解决办法和提出具体防范方法。 更应该在保证好机器设备正常运转的同时, 积极研究各种安全问题。 堵住安全隐患。 五·制订安全策略 制订安全策略是非常有必要的, 虽然没有绝对的把握阻止任何侵入, 但是一个好的安全策略可以做到是, 最少的机会发生侵入情况, 即使发生了也可以最快的作出正确反应, 最大程度减少经济损失。 系统管理员在工作中和制订安全策略具体工作内容中有几项安全原则要注意。 1·最小权限(Least Privilege) 如果用户不需要使用到一些功能, 就不要给其权限。 只要是不必需要的权限就不需要给。 以免增加发生意外的机会。 2·多层防御 不能只依赖一种安全结构, 就象你锁了桌子, 还要锁门一样。 3·堵塞点(Choke Point) 尽量强迫攻击者如果想要攻击的话, 只能使用一条很"窄"的通道, 这样可以方便监视和控制。 4·考虑最薄弱的点(Weakest Link) 自我寻找最薄弱的地方, 做出相应的防范方法。 5·错误保护状态(Fail-Safe Stance) 出现错误, 或问题时候应自动保持最安全的状态。 这意思就象一栋大厦发生火警时电梯应自动停止, 而各大门应自动变成打开状态。 6·团队合作(Universal Particpation) 大部分安全系统都需要各个人员的配合, 如果有一人的疏忽或者不配合, 那么攻击者就有可能通过他的机器, 从内部来攻击其它的机器。 7·多类型防御体系(Diversity of Defense) 使用多个不同厂商的安全系统会减少仅仅因为一个BUG或配置错误而影响整个系统的机会。 缺点就是, 花费的人力和物力都会相对比较多。 8·保持简单(Simplicity) 使事情变的简单, 如果你不明白, 那你就不能确定这是否安全, 复杂的系统容易隐藏一些角落或问题。 复杂的系统有更多的bugs,有些会是安全问题。 制订安全策略时应考虑的内容, 1·解释(explanations) 整个安全策略应该解释的很清楚, 因为有些人如果他不清楚, 那他也不会对此引起重视。 2·每人的责任(Everybody's responsibilities) 一套安全策略应包括个人的责任与义务, 包括管理员, 使用者和管理部门等等。 要让使用者知道和配合站点系统的安全。 要让使用者知道系统管理员需要做什么工作, 互相得到了解。 3·通俗的语言(Regular language) 很多人不是专家, 所以制订的文件应通俗易懂, 过于复杂只会起到相反的效果 4·建立威信(Enforcement authority) 制订了策略, 最重要的还是去执行, 需要有人去保证这些策略可以得到贯彻和负责修订不正确的内容。 5·准备以后检讨(Provision for reviews) 不可能保证一个安全策略就可以适用很久, 情况总是不断的变化, 所以需要定期的给于检讨, 找出不合理的地方, 给于修正。 6·讨论安全事项(Discussion of specific security issues) 有些事情需要安全事项是需要写入策略里的。 如: l 谁可以在主机上拥有帐号?是否需要开放GUEST用户? l 帐号是否可以允许多人共享? l 如果用户失去了使用权限, 那管理员要怎么做? l 谁可以设置拨入MODEM?允许其他人使用拨出MODEM 吗? l 使用者在联上网络前应该做些什么? 7·怎样对安全事件做出反应 应该清楚的写明, 出现安全时间的时候应遵循怎样的步骤处理, 或者该具体怎么做。 总结 没有绝对安全的网络系统, 安全问题是多种多样, 且随着时间技术的变化而变化, 所以安全防护也是非常重要的, 保持清醒正确的认识, 同时掌握最新的安全问题情况, 再加上完善有效的安全策略, 是可以阻止大部分安全事件的发生, 保持最小程度的经济损失。
上面是电脑上网安全的一些基础常识,学习了安全知识,几乎可以让你免费电脑中毒的烦扰。
|