2005年11月19日

网页设计,必被工具

2005年11月03日
今天 变化 近一星期 变化 近一个月 变化 近三个月 变化
339862 365571 221601 465931 ↑1270376  
2005年10月19日
今天 变化 近一星期 变化 近一个月 变化 近三个月 变化
401898 107440 269176 585070 ↑1132660  
2005年10月16日
今天 变化 近一星期 变化 近一个月 变化 近三个月 变化
377333 116320 320376 688843 ↑1029883  
2005年10月15日
今天 变化 近一星期 变化 近一个月 变化 近三个月 变化
116145 116163 320785 688968 ↑1030239  
2005年10月14日
今天 变化 近一星期 变化 近一个月 变化 近三个月 变化
92488 130322 364165 775426 ↑944181  
2005年10月13日

有句俗话说,苍蝇不叮无缝的蛋。网络安全迄今为止还是一种在发展中的技术,罗马不是一天建成的,它所表现出的漏洞和隐患可和其被应用的程度形成正比。但就如那位安全专家所说,在任何系统里,最不安全的因素都是人,与此相对应的是,在任何系统里,能够弥补技术漏洞的因素也是人。技术漏洞被人利用,责任最终也在人。以下十个戒律要牢记在心。

戒律一 :不要随意在网站填写真实信息

网站的“保密”承诺并不完全可靠,如果不是十分必要,尽量少让人知道你的“底细”。

戒律二:不要相信电子邮件

正规的网站不会用“索要”的方式让你发给它东西,而会让你去它的网站做相关操作。

戒律三:不要在公用电脑里进行个人信息输入

黑客在技术上可以在电脑中安装能记录你一切操作的软件,而且这现在已经让很多人身受其害。

戒律四:不要打开不明来源邮件的附件

这些附件也许看上去只是一个普通的txt文件或者图片文件,但是危险就隐藏在其中。

戒律五:不要打开陌生人发送的文件和链接

文件不行,但只是一个链接应该没问题吧?不,这样想就大错特错了。许多恶意代码巧妙地隐藏在一些网页之中。

戒律六:不要随意访问陌生网站

对于你不了解的网站,特别是那些色情网站,随意访问是一种很危险的举动。有些网站会强制修改你的浏览器设置。

戒律七:不要轻易安装软件

记住,它花费这么大心力教你做的事情一定是对它有好处的。

戒律八:在线交易操作需反复确认

在按“确定”之前,一定要反复确认自己的交费金额。

戒律九:重要邮件要加密

有时候,一些比较重要的信息不得不通过电子邮件进行发送,这种情况如果不能避免,就一定要进行加密。

戒律十:企业内部核心网络与外网必须“物理性”分开

所谓物理断开,就是内网和外网之间没有任何线路连接,这才是真正安全的企业财务信息网络管理方法

通过下面 10 步来保护 IIS:1.为IIS 应用程序和数据专门安装一个NTFS 设备。如果有可能,不要允许IUSER(或其它任何匿名用户名)去访问任何其它设备。如果应用程序因为匿名用户无法访问其它设备上的程序而出了问题,马上使用Sysinternals 的FileMon 检测出哪个文件无法访问,并吧这个程序转移到IIS 设备上。如果无法做到这些,就允许IUSER 访问且只能访问这个文件。

   2.在设备上设置NTFS 权限:

  Developers = Full(所有权限)

  IUSER = Read and execute only(读和执行权限)

  System and admin = Full(所有权限)

  3.使用一个软件_blank">防火墙,确认没有终端用户能够访问 IIS 计算机上的除了 80 端口之外的其它端口。

   4.使用Microsoft 工具锁定计算机:IIS Lockdown和UrlScan.

  5.启用IIS 事件日志。除了使用IIS 事件日志之外,如果有可能的话,尽量也对_blank">防火墙启用事件日志。

  6.把日志文件从默认的存储位置移走,并保证对它们的备份。为日志文件建立一个重复的拷贝,以确保这个放在第二位置的拷贝是可用的。

  7.在计算机上启用Windows 审核,因为当我们试图去追踪那些攻击者的行为的时候,我们总是缺少足够的数据。通过使用审核日志,甚至有可能拥有一个脚本来进行可疑行为的审核,这个脚本随后会向管理员发送一个报告。这听起来好像有点走极端了,不过如果对你的组织来说安全性非常重要的话,这样做是最好的选择。建立审核制度来报告任何失败帐户登录行为。另外,同IIS日志文件一样,把它的默认存储位置(c:\winnt\system32\config\secevent.log)改到另外一个地方,并确保它有一个备份和一个重复的拷贝。

  8.一般来说,尽你所能的查找安全方面的文章(从不同的地方),并按照它们进行实践。在IIS和安全实践方面,它们说的通常被你懂得的要好一些,而且不要只信服其他人(比如说我)告诉你的东西。

  9.订阅一份IIS 缺陷列表邮件,并坚持按时对它进行阅读。其中一个列表是Internet Security Systems(Internet 安全系统)的X-Force Alerts and Advisories

  10.最后,确保你定期的对Windows 进行了更新,并检验补丁是否被成功的安装了。

#pragma pack(4)
#define WIN32_LEAN_AND_MEAN
#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>

#define ICMP_ECHO 8
#define ICMP_ECHOREPLY 0

#define ICMP_MIN 8 // minimum 8 byte icmp packet (just header)

/* The IP header */
typedef struct iphdr {
unsigned int h_len:4; // length of the header
unsigned int version:4; // Version of IP
unsigned char tos; // Type of service
unsigned short total_len; // total length of the packet
unsigned short ident; // unique identifier
unsigned short frag_and_flags; // flags
unsigned char ttl;
unsigned char proto; // protocol (TCP, UDP etc)
unsigned short checksum; // IP checksum

unsigned int sourceIP;
unsigned int destIP;

}IpHeader;

//
// ICMP header
//
typedef struct _ihdr {
BYTE i_type;
BYTE i_code; /* type sub code */
USHORT i_cksum;
USHORT i_id;
USHORT i_seq;
/* This is not the std header, but we reserve space for time */
ULONG timestamp;
}IcmpHeader;

#define STATUS_FAILED 0xFFFF
#define DEF_PACKET_SIZE 32
#define MAX_PACKET 1024

#define xmalloc(s) HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,(s))
#define xfree(p) HeapFree (GetProcessHeap(),0,(p))

void fill_icmp_data(char *, int);
USHORT checksum(USHORT *, int);
void decode_resp(char *,int ,struct sockaddr_in *);

void Usage(char *progname){

fprintf(stderr,"Usage:\n";
fprintf(stderr,"%s <host> [data_size]\n",progname);
fprintf(stderr,"datasize can be up to 1Kb\n";
ExitProcess(STATUS_FAILED);

}
int main(int argc, char **argv){

WSADATA wsaData;
SOCKET sockRaw;
struct sockaddr_in dest,from;
struct hostent * hp;
int bread,datasize;
int fromlen = sizeof(from);
int timeout = 1000;
char *dest_ip;
char *icmp_data;
char *recvbuf;
unsigned int addr=0;
USHORT seq_no = 0;

if (WSAStartup(MAKEWORD(2,1),&wsaData) != 0){
fprintf(stderr,"WSAStartup failed: %d\n",GetLastError());
ExitProcess(STATUS_FAILED);
}

if (argc <2 ) {
Usage(argv[0]);
}
sockRaw = WSASocket (AF_INET,
SOCK_RAW,
IPPROTO_ICMP,
NULL, 0,0);

if (sockRaw == INVALID_SOCKET) {
fprintf(stderr,"WSASocket() failed: %d\n",WSAGetLastError());
ExitProcess(STATUS_FAILED);
}
bread = setsockopt(sockRaw,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,
sizeof(timeout));
if(bread == SOCKET_ERROR) {
fprintf(stderr,"failed to set recv timeout: %d\n",WSAGetLastError());
ExitProcess(STATUS_FAILED);
}
timeout = 1000;
bread = setsockopt(sockRaw,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,
sizeof(timeout));
if(bread == SOCKET_ERROR) {
fprintf(stderr,"failed to set send timeout: %d\n",WSAGetLastError());
ExitProcess(STATUS_FAILED);
}
memset(&dest,0,sizeof(dest));

hp = gethostbyname(argv[1]);

if (!hp){
addr = inet_addr(argv[1]);
}
if ((!hp) && (addr == INADDR_NONE) ) {
fprintf(stderr,"Unable to resolve %s\n",argv[1]);
ExitProcess(STATUS_FAILED);
}

if (hp != NULL)
memcpy(&(dest.sin_addr),hp->h_addr,hp->h_length);
else
dest.sin_addr.s_addr = addr;

if (hp)
dest.sin_family = hp->h_addrtype;
else
dest.sin_family = AF_INET;

dest_ip = inet_ntoa(dest.sin_addr);

if (argc >2) {
datasize = atoi(argv[2]);
if (datasize == 0)
datasize = DEF_PACKET_SIZE;

}
else
datasize = DEF_PACKET_SIZE;

datasize += sizeof(IcmpHeader);

icmp_data = xmalloc(MAX_PACKET);
recvbuf = xmalloc(MAX_PACKET);

if (!icmp_data) {
fprintf(stderr,"HeapAlloc failed %d\n",GetLastError());
ExitProcess(STATUS_FAILED);
}


memset(icmp_data,0,MAX_PACKET);
fill_icmp_data(icmp_data,datasize);

while(1) {
int bwrote;

((IcmpHeader*)icmp_data)->i_cksum = 0;
((IcmpHeader*)icmp_data)->timestamp = GetTickCount();

((IcmpHeader*)icmp_data)->i_seq = seq_no++;
((IcmpHeader*)icmp_data)->i_cksum = checksum((USHORT*)icmp_data,
datasize);

bwrote = sendto(sockRaw,icmp_data,datasize,0,(struct sockaddr*)&dest,
sizeof(dest));
if (bwrote == SOCKET_ERROR){
if (WSAGetLastError() == WSAETIMEDOUT) {
printf("timed out\n";
continue;
}
fprintf(stderr,"sendto failed: %d\n",WSAGetLastError());
ExitProcess(STATUS_FAILED);
}
if (bwrote < datasize ) {
fprintf(stdout,"Wrote %d bytes\n",bwrote);
}
bread = recvfrom(sockRaw,recvbuf,MAX_PACKET,0,(struct sockaddr*)&from,
&fromlen);
if (bread == SOCKET_ERROR){
if (WSAGetLastError() == WSAETIMEDOUT) {
printf("timed out\n";
continue;
}
fprintf(stderr,"recvfrom failed: %d\n",WSAGetLastError());
ExitProcess(STATUS_FAILED);
}
decode_resp(recvbuf,bread,&from);
Sleep(1000);

}
return 0;

}
/*
The response is an IP packet. We must decode the IP header to locate
the ICMP data
*/
void decode_resp(char *buf, int bytes,struct sockaddr_in *from) {

IpHeader *iphdr;
IcmpHeader *icmphdr;
unsigned short iphdrlen;

iphdr = (IpHeader *)buf;

iphdrlen = iphdr->h_len * 4 ; // number of 32-bit words *4 = bytes

if (bytes < iphdrlen + ICMP_MIN) {
printf("Too few bytes from %s\n",inet_ntoa(from->sin_addr));
}

icmphdr = (IcmpHeader*)(buf + iphdrlen);

if (icmphdr->i_type != ICMP_ECHOREPLY) {
fprintf(stderr,"non-echo type %d recvd\n",icmphdr->i_type);
return;
}
if (icmphdr->i_id != (USHORT)GetCurrentProcessId()) {
fprintf(stderr,"someone else’s packet!\n";
return ;
}
printf("%d bytes from %s:",bytes, inet_ntoa(from->sin_addr));
printf(" icmp_seq = %d. ",icmphdr->i_seq);
printf(" time: %d ms ",GetTickCount()-icmphdr->timestamp);
printf("\n";

}


USHORT checksum(USHORT *buffer, int size) {

unsigned long cksum=0;

while(size >1) {
cksum+=*buffer++;
size -=sizeof(USHORT);
}

if(size ) {
cksum += *(UCHAR*)buffer;
}

cksum = (cksum >> 16) + (cksum & 0xffff);
cksum += (cksum >>16);
return (USHORT)(~cksum);
}
/*
Helper function to fill in various stuff in our ICMP request.
*/
void fill_icmp_data(char * icmp_data, int datasize){

IcmpHeader *icmp_hdr;
char *datapart;

icmp_hdr = (IcmpHeader*)icmp_data;

icmp_hdr->i_type = ICMP_ECHO;
icmp_hdr->i_code = 0;
icmp_hdr->i_id = (USHORT)GetCurrentProcessId();
icmp_hdr->i_cksum = 0;
icmp_hdr->i_seq = 0;

datapart = icmp_data + sizeof(IcmpHeader);
//
// Place some junk in the buffer.
//
memset(datapart,’E', datasize – sizeof(IcmpHeader));

}

计算机安全组织美国系统网络安全协会(SANS Institute)本周公布了2004年度前二十位网络安全隐患排行榜。事实上这一排行榜是由两部分组成,其中包括10项Windows安全隐患以及10项UNIX及Linux相关安全隐患。

  SANS的主管阿兰·帕勒表示,该机构发布这一排行榜是为了给企业和组织提供参考,促使系统管理员再次确认这些安全隐患在自己管理的系统中已经妥善解决。他说:“当你告诉系统管理员去测试上千个漏洞时,企业就几乎陷入停滞了,所以我们每年都要挑出危害最大的20个安全隐患发布。”

  SANS的排行榜是结合了全球多名安全研究专家和公司的意见和建议而得出的,其中包括美国国家基础设施保护中心(National Infrastructure Protection Center)和英国国家基础设施协同中心(National Infrastructure Security Coordination Centre)等重要部门。今年已经是SANS第五次公布年度安全隐患排行榜。除了公布安全隐患名单,SANS还同时发布了上百页的文档,对这一类安全隐患进行了详细的描述,并提供了具体的解决方案。

  排在Windows安全隐患第一位的是Web服务器和服务(Web servers and services),而排在Unix安全隐患第一位的则是BIND域名系统(BIND domain name systems)。此外还有很多安全隐患首次入围,这样的安全隐患在Windows列表中包括排名第7位的文件共享(file sharing applications)和第10位的即时信息(instant messaging)。负责排行榜的主管罗斯·帕特尔表示:“专家们都为文件共享和点对点文件传输这一安全隐患感到忧虑,因为它们易于操作并且应用非常广泛。”

  在Windows列表中排名第6的Web浏览器(Web browsers)同样是一个热门话题,帕特尔表示:“专家们对于Web浏览器的讨论最为热烈。今年年初,由于IE浏览器中发现了多个严重漏洞,甚至有专家建议用户停止使用这一浏览器。”

  美国系统网络安全协会公布的安全隐患排行榜:

  Windows十大安全隐患:

  1 Web服务器和服务(Web Servers & Services )

  2 工作站服务(Workstation Service)

  3 Windows远程访问服务(Windows Remote Access Services)

  4 微软SQL服务器(Microsoft SQL Server)

  5 Windows 认证(Windows Authentication)

  6 Web浏览器(Web Browsers)

  7 文件共享(File-Sharing Applications)

  8 LSAS Exposures

  9 电子邮件客户端(Mail Client)

  10 即时信息(Instant Messaging)

  Unix十大安全隐患:

  1 BIND域名系统(BIND Domain Name System)

  2 Web服务器(Web Server)

  3 认证(Authentication)

  4 版本控制系统(Version Control Systems )

  5 电子邮件传输服务(Mail Transport Service)

  6 简单网络管理协议(Simple Network Management Protocol)

  7 开放安全连接通讯层(Open Secure Sockets Layer)

  8 企业服务NIS/NFS 配置不当(Misconfiguration of Enterprise Services NIS/NFS)

  9 数据库(Databases)

  10 内核(Kernel)