有位女性,对在同公司上班的某位男职员,突然采取了疏远的态度,并对他很冷淡。而这位男职员,也好象有意与她唱反调,对她也采取冷淡的态度。公司上司发现两人冷战后,就把男职员叫来,忠告他说:“我希望你能改变对女同事的态度,否则就会没有人理你。”可是,没过多久,这两位男女职员就一起去拜访上司,告诉他说:“我们决定结婚了。”着实令上司大跌眼镜。从这个例子可以看出,男女两人过去故意疏远,只是一种做戏的表现,而实际生活中这样的例子很多。
女性对意中人故意采取疏远的态度,原因是不想让别人知道自己的真心。实际上,女性对某位男性产生好感时,会极力隐瞒自己的真情,而采取完全相反的态度。何况,男女双方都在同一家公司上班,这件事若是被其他同事知道,会造成很多困扰。所以,他们采取了疏远的方式。
由此可见,如果与你正在交往过程中的女性,突然对某位男士冷淡起来,或开始说这位男士的坏话,你就该怀疑他们之间的关系了,说不定你的女友已对他有好感。假如你的女友对这位男士不关心,就不会采取这种不自然的态度。假如她真的讨厌他,那她反而会在表面上对他友好。因为,一般来说,女性都会有意识地隐藏自己对他人的真实感情。所以,你心仪的女孩子突然疏远你的时候,往往正是你进攻的大好机会呢。
女性对意中人故意采取疏远的态度,原因是不想让别人知道自己的真心。实际上,女性对某位男性产生好感时,会极力隐瞒自己的真情,而采取完全相反的态度。何况,男女双方都在同一家公司上班,这件事若是被其他同事知道,会造成很多困扰。所以,他们采取了疏远的方式。
由此可见,如果与你正在交往过程中的女性,突然对某位男士冷淡起来,或开始说这位男士的坏话,你就该怀疑他们之间的关系了,说不定你的女友已对他有好感。假如你的女友对这位男士不关心,就不会采取这种不自然的态度。假如她真的讨厌他,那她反而会在表面上对他友好。因为,一般来说,女性都会有意识地隐藏自己对他人的真实感情。所以,你心仪的女孩子突然疏远你的时候,往往正是你进攻的大好机会呢。
一个男孩深恋一个女孩,但他一直不敢向女孩直言求爱。女孩对他也颇?有情意,却也是始终难开玉口。两人试探着,退缩着,亲近着,疏远着—— 不要嘲笑他们的懦弱,也许初恋的人都是如此拒绝和畏惧失败吧。
一天晚上,男孩精心制作了一张卡片,在卡片上精心书写了多年藏在心里的话,但他思前想后,就是不敢把卡片亲手交给女孩。他握着这张卡片, 愁闷至极,到饭店喝了些酒,竟然微微壮了胆子,却找女孩。
女孩一开门,便闻见扑鼻的酒气。看男孩虽然不象喝醉了的样子,但是微醉着的脸,心中便有一丝隐隐的不快。
“怎么这时候才来?有什么事么?”
“来看看你。”
“我有什么好看的!”女孩没好气地把他领进屋。
男孩把卡片在口袋里揣摸了许久,硬硬的卡片竟然有些温热和湿润了,可他还是不敢拿出来。面对女孩含嗔的脸,他心中充溢着春水般的柔波,那柔波在明媚的阳光下,一漾一漾的,一颤一颤的。
他们漫长地沉默着。也许是因为情绪的缘故,女孩的话极少。
桌上的小钟表指向了11点钟。
“我累了。”女孩娇嫩地伸腰,慢条斯理地整理着案上的书本,不经意的神情中流露出辞客的意思。
男孩突然灵机一动。他百无聊赖地翻着一本大字典,又百无聊赖地把字典放到一边。过了一会儿,他在纸上写下一个“罂”字问女孩:“哎,你说这个字念什么?”
“ying”女孩奇怪地看着他,“怎么了?”
“是读‘yao'吧。”他说。
“是‘ying'。”
“我记得就是‘yao'。我自打认识这个字起就这么读它。”
“你一定错了。”女孩冷淡地说。他真是醉了。她想。
男孩有点无所适从。过了片刻,他涨红着脸说:“我想一定念‘yao'。
不信。我们可以查查,呃,查查字典。”
他的话竟然有些结巴了。
“没必要,明天再说吧。你现在可以回去休息了。”女孩站起来。 “查查字典好吗?”他轻声说,口气含着一丝恳求的味道。
女孩心中一动。但转念一想:他真是醉得不浅。于是,柔声哄道:“是念‘yao',不用查字典,你是对的。回去休息,好吗?”
“不,我不对我不对!”男孩急得几乎要流下泪来,“我求求你,查查字典,好吗?”
看着他胡闹的样子,女孩想:他真是醉得不可收拾。她绷起了小脸:
“你再不走我就生气了,今后再也不会理你!”
“好,我走,我走。”男孩急忙站起来,向门外缓缓走去。“我走后,你查查字典,好吗?”
“好的。”女孩答应道。她简直想笑出来。
男孩走出了门。
女孩关灯睡了。
然而女孩还没有睡着,就听见有人敲她的窗户。轻轻地,有节奏地叩击着。“谁?”女孩在黑暗中坐起身。
“你查字典了吗?”窗外是男孩的声音。
“神经病!”女孩喃喃骂道。而后她沉默了。
“你查字典了吗?”男孩又问。
“你走吧,你怎么这么顽固。”
“你查字典了吗?”男孩依旧不停地问。
“我查了!”女孩高声说,“你当然错了,你从始到终都是错的!”
“你没骗我吗?”
“没有。鬼才骗你呢。”
男孩很久很久没有说话。
“保重。”这是女孩听见男孩说的最后一句话。
当男孩的脚步声渐渐消逝之后,女孩仍旧在偎被坐着。她睡不着。“你查字典了吗?”她忽然想起男孩着句话,便打开灯,翻开字典。
在“罂”字的那一页,睡卧着那张可爱的卡片。上面是再熟悉不过的字体:“我愿用整个生命去爱你,你允许吗?”
她什么都明白了。
“第二天我就去找他。”她想。那一夜,她辗转未眠。
第二天,她一早出门,但是她没见到男孩。男孩躺在太平间里。他死了。 他以为她拒绝了他,离开女孩后又喝了很多酒,结果真的醉了,车祸而死。 女孩无泪。
她打开字典,找到“罂”字。里面的注释是:“罂粟,果实球形,未成熟时,果实中有白桨,是制鸦片的原料。”
罂粟是一种极美的花,且是一种极好的药,但用之不当时,竟然也可以是致命的毒品,人生中一些极美珍贵的东西,如果不好好留心和把握,便常常失之交臂,甚至一生难得再遇再求。有时这些逝去的美好会变成一把锋利的刀子,一刀一刀地在你心上剜出血来。
命运的无常和叵测,有谁能够明了和预知呢?
“你查字典了吗?”
如果有人这样询问你,你一定要查一查字典。或许你会发现:你一直以为对的某个字,其实是错误的。或者还有另一种读法。
一天晚上,男孩精心制作了一张卡片,在卡片上精心书写了多年藏在心里的话,但他思前想后,就是不敢把卡片亲手交给女孩。他握着这张卡片, 愁闷至极,到饭店喝了些酒,竟然微微壮了胆子,却找女孩。
女孩一开门,便闻见扑鼻的酒气。看男孩虽然不象喝醉了的样子,但是微醉着的脸,心中便有一丝隐隐的不快。
“怎么这时候才来?有什么事么?”
“来看看你。”
“我有什么好看的!”女孩没好气地把他领进屋。
男孩把卡片在口袋里揣摸了许久,硬硬的卡片竟然有些温热和湿润了,可他还是不敢拿出来。面对女孩含嗔的脸,他心中充溢着春水般的柔波,那柔波在明媚的阳光下,一漾一漾的,一颤一颤的。
他们漫长地沉默着。也许是因为情绪的缘故,女孩的话极少。
桌上的小钟表指向了11点钟。
“我累了。”女孩娇嫩地伸腰,慢条斯理地整理着案上的书本,不经意的神情中流露出辞客的意思。
男孩突然灵机一动。他百无聊赖地翻着一本大字典,又百无聊赖地把字典放到一边。过了一会儿,他在纸上写下一个“罂”字问女孩:“哎,你说这个字念什么?”
“ying”女孩奇怪地看着他,“怎么了?”
“是读‘yao'吧。”他说。
“是‘ying'。”
“我记得就是‘yao'。我自打认识这个字起就这么读它。”
“你一定错了。”女孩冷淡地说。他真是醉了。她想。
男孩有点无所适从。过了片刻,他涨红着脸说:“我想一定念‘yao'。
不信。我们可以查查,呃,查查字典。”
他的话竟然有些结巴了。
“没必要,明天再说吧。你现在可以回去休息了。”女孩站起来。 “查查字典好吗?”他轻声说,口气含着一丝恳求的味道。
女孩心中一动。但转念一想:他真是醉得不浅。于是,柔声哄道:“是念‘yao',不用查字典,你是对的。回去休息,好吗?”
“不,我不对我不对!”男孩急得几乎要流下泪来,“我求求你,查查字典,好吗?”
看着他胡闹的样子,女孩想:他真是醉得不可收拾。她绷起了小脸:
“你再不走我就生气了,今后再也不会理你!”
“好,我走,我走。”男孩急忙站起来,向门外缓缓走去。“我走后,你查查字典,好吗?”
“好的。”女孩答应道。她简直想笑出来。
男孩走出了门。
女孩关灯睡了。
然而女孩还没有睡着,就听见有人敲她的窗户。轻轻地,有节奏地叩击着。“谁?”女孩在黑暗中坐起身。
“你查字典了吗?”窗外是男孩的声音。
“神经病!”女孩喃喃骂道。而后她沉默了。
“你查字典了吗?”男孩又问。
“你走吧,你怎么这么顽固。”
“你查字典了吗?”男孩依旧不停地问。
“我查了!”女孩高声说,“你当然错了,你从始到终都是错的!”
“你没骗我吗?”
“没有。鬼才骗你呢。”
男孩很久很久没有说话。
“保重。”这是女孩听见男孩说的最后一句话。
当男孩的脚步声渐渐消逝之后,女孩仍旧在偎被坐着。她睡不着。“你查字典了吗?”她忽然想起男孩着句话,便打开灯,翻开字典。
在“罂”字的那一页,睡卧着那张可爱的卡片。上面是再熟悉不过的字体:“我愿用整个生命去爱你,你允许吗?”
她什么都明白了。
“第二天我就去找他。”她想。那一夜,她辗转未眠。
第二天,她一早出门,但是她没见到男孩。男孩躺在太平间里。他死了。 他以为她拒绝了他,离开女孩后又喝了很多酒,结果真的醉了,车祸而死。 女孩无泪。
她打开字典,找到“罂”字。里面的注释是:“罂粟,果实球形,未成熟时,果实中有白桨,是制鸦片的原料。”
罂粟是一种极美的花,且是一种极好的药,但用之不当时,竟然也可以是致命的毒品,人生中一些极美珍贵的东西,如果不好好留心和把握,便常常失之交臂,甚至一生难得再遇再求。有时这些逝去的美好会变成一把锋利的刀子,一刀一刀地在你心上剜出血来。
命运的无常和叵测,有谁能够明了和预知呢?
“你查字典了吗?”
如果有人这样询问你,你一定要查一查字典。或许你会发现:你一直以为对的某个字,其实是错误的。或者还有另一种读法。
多体谅你身边最爱你的人
[ 2007-03-25 05:23:34 | 作者: lzis ]
丈夫
有时,他是你最大的孩子
脱下西装后,容许他换一张脸
容许他总是关不住牙膏盖子......
容许他老是要努力暗示后
才记得你的生日
其实,在坚强的外表下他的内心
也需要你小小的纵容和溺爱
妻子
换个角色做做看
是否你要求她的
总是和要求***一样理所当然
偶尔 换你拿起奶瓶
偶尔 换你穿上围裙
柴米油盐之外
多给她一点关怀 体谅
和甜言蜜语吧!
孩子
他的小手
将来是怎样的大手?
要求他成绩单上的数字
也教他欣赏大自然的法则
鼓励他必须坚强
也要他有一颗柔软的心
和他说话,不止用到嘴也用到了耳:
在他长大之前和他站的一样高看世界
父母
珍惜,在来得及的时候
孩子的哭声总比父母的叹息
得到更多的疼惜
你不会忘记孩子放学时间
却忽略父母盼你回家的殷切
物质弥补不了精神的寂寞
最重要的是
多一点时间给父母
手足
stand by me 站在我这边
以为爸爸对哥哥偏心一点
妈妈对妹妹疼爱一点
其实中氖直扯际侨?BR>血浓于水的亲情
总在最需要的时候
他们就站在我这边
情人
爱有多少,付出也要有多少
爱情不是单行道
他(她)的好更不是理所当然
生气时,想想他(她)的可爱
抱怨时,想想他(她)的委屈
冷战时,想想他(她)的温暖
两人都懂得付出,爱就会久远
毕竟,真心相爱并不容易,不要轻言别离
送心爱的人回家,哪里都顺路!
朋友
有时像一阵雾
有时像一片云
孤独时的思念
生活中的良师益友
相识于不经意间
重逢在危难之时
没有朋友的牵挂
纵有家财万贯
也是一条孤单的鱼
有时,他是你最大的孩子
脱下西装后,容许他换一张脸
容许他总是关不住牙膏盖子......
容许他老是要努力暗示后
才记得你的生日
其实,在坚强的外表下他的内心
也需要你小小的纵容和溺爱
妻子
换个角色做做看
是否你要求她的
总是和要求***一样理所当然
偶尔 换你拿起奶瓶
偶尔 换你穿上围裙
柴米油盐之外
多给她一点关怀 体谅
和甜言蜜语吧!
孩子
他的小手
将来是怎样的大手?
要求他成绩单上的数字
也教他欣赏大自然的法则
鼓励他必须坚强
也要他有一颗柔软的心
和他说话,不止用到嘴也用到了耳:
在他长大之前和他站的一样高看世界
父母
珍惜,在来得及的时候
孩子的哭声总比父母的叹息
得到更多的疼惜
你不会忘记孩子放学时间
却忽略父母盼你回家的殷切
物质弥补不了精神的寂寞
最重要的是
多一点时间给父母
手足
stand by me 站在我这边
以为爸爸对哥哥偏心一点
妈妈对妹妹疼爱一点
其实中氖直扯际侨?BR>血浓于水的亲情
总在最需要的时候
他们就站在我这边
情人
爱有多少,付出也要有多少
爱情不是单行道
他(她)的好更不是理所当然
生气时,想想他(她)的可爱
抱怨时,想想他(她)的委屈
冷战时,想想他(她)的温暖
两人都懂得付出,爱就会久远
毕竟,真心相爱并不容易,不要轻言别离
送心爱的人回家,哪里都顺路!
朋友
有时像一阵雾
有时像一片云
孤独时的思念
生活中的良师益友
相识于不经意间
重逢在危难之时
没有朋友的牵挂
纵有家财万贯
也是一条孤单的鱼
盐的欺骗在咖啡里舞蹈
[ 2007-03-25 05:22:01 | 作者: lzis ]
他和她的相识是在一个晚会上,那时的她年轻美丽,身边有很多的追求者,而他却是一个很普通的人。因此,当晚会结束,他邀请她一块去喝咖啡的时侯,她很吃惊,然而,出于礼貌,她还是答应了。
坐在咖啡馆里,两个人之间的气氛很是尴尬,没有什么话题,她只想尽快结束。但是当小姐把咖啡端上来的时候,他却突然说:“麻烦你拿点盐过来,我喝咖啡习惯放点盐。”当时,她愣了,小姐也愣了,大家的目光都集中到了他身上,以至于他的脸都红了。
小姐把盐拿过来了,他放了点进去,慢慢地喝着。她是好奇心很重的女子,于是很好奇地问他:“你为什么要加盐呢?”他沉默了一会,很慢的几乎是一字一顿地说:“小时候,我家住在海边,我老是在海里泡着,海浪打过来,海水涌进嘴里,又苦又咸。现在,很久没回家了,咖啡里加盐,就算是想家的一种表现吧。”她突然被打动了,因为,这是她第一次听到男人在她面前说想家,想家的男人必定是顾家的男人,而顾家的男人必定是爱家的男人。她忽然有一种倾诉的欲望,跟他说起了远在千里之外的故乡,气氛渐渐的变得融洽起来,两个人聊了很久,并且她没有拒绝他送她回家。
再以后,两个人频繁地约会,她发现他实际上是一个很好的男人,大度、细心、体贴,符合她所欣赏的所有的优秀男人应该具有的特性。她暗自庆幸,幸亏当时的礼貌,才没有和他擦肩而过。她带他去遍了城里的每家咖啡馆,每次都是她说:“请拿些盐来好吗?我的朋友喜欢咖啡里加盐。”再后来,就像童话书里所写的一样,“王子和公主结婚了,从此过着幸福的生活。”他们确实过得很幸福,而且一就是四十多年,直到他前不久得病去世。
故事似乎要结束了,如果没有那封信的话。
那封信是他临终前写的,是写给她的:“原谅我一直都欺骗了你,还记得第一次请你喝咖啡吗?当时气氛差极了,我很难受,也很紧张,不知怎么想的,竟然对小姐说拿些盐来,其实我不加盐的,当时既然说出来了,只好将错就错了。没想到竟然引起了你的好奇心,这一下,让我喝了半辈子的加盐的咖啡。有好多次,我都想告诉你,可我怕你会生气,更怕你会因此离开我。现在我终于不怕了,死人总是很容易被原谅的,对不对?今生得到你是我最大的幸福,如果有来生,我还希望能娶到你,只是,我可不想再喝加盐的咖啡了,咖啡里加盐,你不知道,那味道,有多难喝!”信的内容让她吃惊,也让她有种被欺骗的感觉。然而,他不知道,她多想告诉他:“她是多么高兴,有人为了她,能够做出这样的一生一世的欺骗。”
坐在咖啡馆里,两个人之间的气氛很是尴尬,没有什么话题,她只想尽快结束。但是当小姐把咖啡端上来的时候,他却突然说:“麻烦你拿点盐过来,我喝咖啡习惯放点盐。”当时,她愣了,小姐也愣了,大家的目光都集中到了他身上,以至于他的脸都红了。
小姐把盐拿过来了,他放了点进去,慢慢地喝着。她是好奇心很重的女子,于是很好奇地问他:“你为什么要加盐呢?”他沉默了一会,很慢的几乎是一字一顿地说:“小时候,我家住在海边,我老是在海里泡着,海浪打过来,海水涌进嘴里,又苦又咸。现在,很久没回家了,咖啡里加盐,就算是想家的一种表现吧。”她突然被打动了,因为,这是她第一次听到男人在她面前说想家,想家的男人必定是顾家的男人,而顾家的男人必定是爱家的男人。她忽然有一种倾诉的欲望,跟他说起了远在千里之外的故乡,气氛渐渐的变得融洽起来,两个人聊了很久,并且她没有拒绝他送她回家。
再以后,两个人频繁地约会,她发现他实际上是一个很好的男人,大度、细心、体贴,符合她所欣赏的所有的优秀男人应该具有的特性。她暗自庆幸,幸亏当时的礼貌,才没有和他擦肩而过。她带他去遍了城里的每家咖啡馆,每次都是她说:“请拿些盐来好吗?我的朋友喜欢咖啡里加盐。”再后来,就像童话书里所写的一样,“王子和公主结婚了,从此过着幸福的生活。”他们确实过得很幸福,而且一就是四十多年,直到他前不久得病去世。
故事似乎要结束了,如果没有那封信的话。
那封信是他临终前写的,是写给她的:“原谅我一直都欺骗了你,还记得第一次请你喝咖啡吗?当时气氛差极了,我很难受,也很紧张,不知怎么想的,竟然对小姐说拿些盐来,其实我不加盐的,当时既然说出来了,只好将错就错了。没想到竟然引起了你的好奇心,这一下,让我喝了半辈子的加盐的咖啡。有好多次,我都想告诉你,可我怕你会生气,更怕你会因此离开我。现在我终于不怕了,死人总是很容易被原谅的,对不对?今生得到你是我最大的幸福,如果有来生,我还希望能娶到你,只是,我可不想再喝加盐的咖啡了,咖啡里加盐,你不知道,那味道,有多难喝!”信的内容让她吃惊,也让她有种被欺骗的感觉。然而,他不知道,她多想告诉他:“她是多么高兴,有人为了她,能够做出这样的一生一世的欺骗。”
我珍藏着一枚钮扣,天蓝色,圆圆的。有时坐在小窗前,把蓝扣子放在掌心,在明月的清辉下端详,蓝扣子泛着柔润动人的光泽,宛若一个晶莹的蓝色梦幻。
梦幻里,是那段已逝去多年的少年故事。
那年我考上了镇里的初中,见到了许多新鲜的面孔。那时我酷爱着绘画,便用破笔头逐一将这些面孔涂抹到我粗糙的画纸上。现在看来,自然是画得奇形怪状,乌七八糟,但那时却博得了同学们的许多喝彩。因为那时我已稍稍懂得了如何突出特征,因而时常有一些“传神之笔”。比如将鼻子画得高大如烟囱,同学们就知道是高鼻子唐广宁,将嘴画得阔如脸盆,无疑是大嘴孙小泉了。我几乎每天都要完成一幅“杰作”,趁大家去买午饭的时候,用唾沫粘在教室后面的墙壁上,大家回到教室便有了很好的笑料。倘若画的是他本人,那自然便黄了脸,在别人的调笑声中扯下来撕个粉碎。有几个女生因此好几天对我都是呲牙咧嘴横眉冷对。好在并没有人告到班主任那儿去,因为那时我的考试成绩从来都是第一,班主任跟我关系相当好,背地里叫我喊他大哥,虽然他已有五十几了。
没有多久,班上六十余人差不多都已在我的画亮了相,最后便剩下白子惠。白子惠是一个文静的女孩,时常穿一件旧式的淡蓝色碎花衬衣,袖口还有两块补丁。
她是个让我为难的女孩。那张白皙的小脸实在是标致极了,我回头捕捉“特征”的时候,时常痴痴地看得呆了。我花了整整一个上午画出她的头像,可我实在捕捉不到半点令人发笑的地方。最后我用红墨水染红了她的小嘴,红红的墨水渗出唇外,“她”便像刚喝了鲜血似的,狰狞而恐怖。
吃午饭的时候,大家自然是又闹又笑,大拍我的马屁。白子惠则静静地坐着,读着宋词。
要是别人,一定会将画像扯下来,可是白子惠没有。上课铃响了,老师的脚步声近了,白子惠依然静静地坐在那儿。我慌忙跑了过去,在众人的哄笑声里扯下了它。这是我第一次狼狈不堪自作自受。扭头看白子惠时,她正抿着小嘴偷偷地笑。
那天下了晚自习,我还在攻一道数学题。高鼻子唐广宁这时开始翻别人的抽屉了。过了一会儿,他喊我:快过来瞧瞧,白子惠画了你的像哩。我好奇地跑过去,果然见到白子惠抽屉里有一本厚厚的画稿,画了山水花鸟,还有班上的许多女孩,而男孩只画了我一个,而且还题了一首小诗,只是诗的第六行缺了第一个字:“魏时枫叶/红到今否/青山白云低处/谁在无言/最最难忘/□不曾随流去/你可在枝头/瑟瑟发愁。”我读得摸头不知脑,唐广宁却叫了起来:“缺的那个字一定是‘爱’,你把每行第一个字串起来,就是‘魏红青谁最爱你’,哈哈,白子惠爱上你啦!”我说你别胡说别胡说,心中却有一种甜甜的感觉。唐广宁忽然又冒出一句:“要是缺的那个字是‘恨’呢?”我的笑脸一时僵住了。
我不得不承认,她的画比我强多了。她似乎在无意中将每个人美化了许多,使得一个个看上去都是那么善良而友好。而我却总是有意地将别人加以丑化。唐广宁安慰我:白子惠把你画得这么帅,缺的那个字是“爱”的可能性更大。
初二时,我和白子惠同桌,我便很认真地跟她学起绘画来。有一次学校举办绘画大赛,她似乎不太关心,我偷偷地将她的一幅画连同我的数件作品交了上去,没想到她得了一等奖,而我居然落了选。
学校奖给她一支画笔和一盒中国画颜料,她却送给了我,说:我以后怕是不会再画画了。我听不明白,糊里糊涂地接受了。
渐渐地我发现我去买午饭时白子惠总没有离开教室,而我买了饭回到教室时她却已捧着一缸凉开水在慢慢地喝。再后来,我怀疑她总没有吃午饭,问她,她却说早吃过了。有好几次天并不热,我却看见她白皙的脸上渗出汗来,下午上课时便昏睡在课桌上,一副无精打采的样子。老师问一些很简单的问题,她也常回答得丢三拉四。
后来,我便多买了一份午饭,放在她的桌上。她坚决不肯吃,我便说用饭来换她的画稿。她便吃一顿午饭,给我两张画稿。这样没多久,那本画稿便几乎全部放进了我的抽屉,只有画着我头像的那张画稿,她还保存着。
那天后排的唐广宁正在吸墨水,我不小心猛地靠了一下,那墨水瓶便从书堆上倒下来,溅了白子惠一身。
我立即表示说要买一件新的赔她。她说不必了不必了,后来便穿了一身更旧的衣服。那一定是她姐姐穿过的。
那时街上流行红裙子。我想,白子惠穿上红裙子一定更加漂亮。
我暗暗地筹钱,先是卖了新凉鞋,后来又半价处理了新华字典。
14岁生日那天我并没有声张,因为我怕花掉半分钱。但晚上的时候,要好的同学还是带了礼物来看我。小小的宿舍里弥漫着蛋糕的清香,红红的烛光映红了许多天真的脸……我打开录音机,大家便在流行歌曲中大叫大嚷地闹开了。
这时,我忽然发现白子惠微笑着站在门口,我立刻迎了上去。她缓缓低下头,用力地扯下了她上衣正中的一颗蓝扣子,递给我,轻轻地说:祝你生日快乐!我伸手接扣子的时候,顺势握住她的手,那只手是多么的小巧光滑,还在微微地颤动呢!明月的清辉勾勒出她亮丽柔美的曲线。她的脸,在红红的烛光中,显得异常的娇艳动人。我静静地看着她,她也静静地看着我。
那时刻,我仿佛听到了一种成长的声音,14岁呵,我的14岁!男同学还在大抢蛋糕,只有唐广宁扭过头偷偷看了我们一眼……
第二天,我发现我的课桌上摆放着已卖出的新华字典和那双新凉鞋。唐广宁说是白子惠帮我赎回来的。
而白子惠却一整天没来上课。
我有一种预感:白子惠可能要退学了。
我用节省的钱以及部分生日礼物,再加上半箩筐好话,才从服装店换回一条红裙子。
白子惠最后一次来学校了。她把所有的书都送给了周围的同学。送给我的最多,其中有那本宋词。她只带走了那张画着我的画稿。
她走出校门的时候,我追了上去,硬把那条红裙子塞给了她。
那年下了一场罕见的大雨,洪水几乎淹死了我们那块平原上所有的庄稼。听人说,洪水之后,白子惠跟随着父母姐弟迁回了四川老家,是一个叫做蓬溪的地方。
后来,我离开镇中学到县城念高中了,而唐广宁留了校教地理。他是校长的儿子,成绩臭得很,地理教到现在也还不知尼罗河与亚马孙河谁更长。但和我关系不错,有一次他写信给我,说白子惠给我来信了,他拆看了,里面还有一张照片,是微笑着的白子惠穿着红裙子,美得很哩。他叫我有空去取。我立即请了假,找到唐广宁时,他却说不见了,还陪我找了整整一上午,结果啥也没找到。问他信中的内容,他支支吾吾说记不得了。
后来我怀疑是唐广宁把信和照片藏了起来,因为他也一直喜欢着白子惠呢。现在想一想,也许白子惠根本就没有寄来信和照片,只是唐广宁认认真真跟我开了个玩笑吧。
这些年来,每逢我生日的时候,我便会倚在门口,呆呆地出神,期盼明月的清辉里能走来穿着红裙子的白子惠。然而总没有,有的只是那枚蓝扣子在我的掌心泛着柔润动人的光泽。
我还在画画,一直画着同一幅画。画上白子惠穿着红裙子,微微地笑着。旁边还题有一首小诗:那粒蓝扣子/从谁的心窝蹦出/落在我的相思里/从此孤寂/穿红裙的女孩/坐在蓬溪/可还读着宋词。
梦幻里,是那段已逝去多年的少年故事。
那年我考上了镇里的初中,见到了许多新鲜的面孔。那时我酷爱着绘画,便用破笔头逐一将这些面孔涂抹到我粗糙的画纸上。现在看来,自然是画得奇形怪状,乌七八糟,但那时却博得了同学们的许多喝彩。因为那时我已稍稍懂得了如何突出特征,因而时常有一些“传神之笔”。比如将鼻子画得高大如烟囱,同学们就知道是高鼻子唐广宁,将嘴画得阔如脸盆,无疑是大嘴孙小泉了。我几乎每天都要完成一幅“杰作”,趁大家去买午饭的时候,用唾沫粘在教室后面的墙壁上,大家回到教室便有了很好的笑料。倘若画的是他本人,那自然便黄了脸,在别人的调笑声中扯下来撕个粉碎。有几个女生因此好几天对我都是呲牙咧嘴横眉冷对。好在并没有人告到班主任那儿去,因为那时我的考试成绩从来都是第一,班主任跟我关系相当好,背地里叫我喊他大哥,虽然他已有五十几了。
没有多久,班上六十余人差不多都已在我的画亮了相,最后便剩下白子惠。白子惠是一个文静的女孩,时常穿一件旧式的淡蓝色碎花衬衣,袖口还有两块补丁。
她是个让我为难的女孩。那张白皙的小脸实在是标致极了,我回头捕捉“特征”的时候,时常痴痴地看得呆了。我花了整整一个上午画出她的头像,可我实在捕捉不到半点令人发笑的地方。最后我用红墨水染红了她的小嘴,红红的墨水渗出唇外,“她”便像刚喝了鲜血似的,狰狞而恐怖。
吃午饭的时候,大家自然是又闹又笑,大拍我的马屁。白子惠则静静地坐着,读着宋词。
要是别人,一定会将画像扯下来,可是白子惠没有。上课铃响了,老师的脚步声近了,白子惠依然静静地坐在那儿。我慌忙跑了过去,在众人的哄笑声里扯下了它。这是我第一次狼狈不堪自作自受。扭头看白子惠时,她正抿着小嘴偷偷地笑。
那天下了晚自习,我还在攻一道数学题。高鼻子唐广宁这时开始翻别人的抽屉了。过了一会儿,他喊我:快过来瞧瞧,白子惠画了你的像哩。我好奇地跑过去,果然见到白子惠抽屉里有一本厚厚的画稿,画了山水花鸟,还有班上的许多女孩,而男孩只画了我一个,而且还题了一首小诗,只是诗的第六行缺了第一个字:“魏时枫叶/红到今否/青山白云低处/谁在无言/最最难忘/□不曾随流去/你可在枝头/瑟瑟发愁。”我读得摸头不知脑,唐广宁却叫了起来:“缺的那个字一定是‘爱’,你把每行第一个字串起来,就是‘魏红青谁最爱你’,哈哈,白子惠爱上你啦!”我说你别胡说别胡说,心中却有一种甜甜的感觉。唐广宁忽然又冒出一句:“要是缺的那个字是‘恨’呢?”我的笑脸一时僵住了。
我不得不承认,她的画比我强多了。她似乎在无意中将每个人美化了许多,使得一个个看上去都是那么善良而友好。而我却总是有意地将别人加以丑化。唐广宁安慰我:白子惠把你画得这么帅,缺的那个字是“爱”的可能性更大。
初二时,我和白子惠同桌,我便很认真地跟她学起绘画来。有一次学校举办绘画大赛,她似乎不太关心,我偷偷地将她的一幅画连同我的数件作品交了上去,没想到她得了一等奖,而我居然落了选。
学校奖给她一支画笔和一盒中国画颜料,她却送给了我,说:我以后怕是不会再画画了。我听不明白,糊里糊涂地接受了。
渐渐地我发现我去买午饭时白子惠总没有离开教室,而我买了饭回到教室时她却已捧着一缸凉开水在慢慢地喝。再后来,我怀疑她总没有吃午饭,问她,她却说早吃过了。有好几次天并不热,我却看见她白皙的脸上渗出汗来,下午上课时便昏睡在课桌上,一副无精打采的样子。老师问一些很简单的问题,她也常回答得丢三拉四。
后来,我便多买了一份午饭,放在她的桌上。她坚决不肯吃,我便说用饭来换她的画稿。她便吃一顿午饭,给我两张画稿。这样没多久,那本画稿便几乎全部放进了我的抽屉,只有画着我头像的那张画稿,她还保存着。
那天后排的唐广宁正在吸墨水,我不小心猛地靠了一下,那墨水瓶便从书堆上倒下来,溅了白子惠一身。
我立即表示说要买一件新的赔她。她说不必了不必了,后来便穿了一身更旧的衣服。那一定是她姐姐穿过的。
那时街上流行红裙子。我想,白子惠穿上红裙子一定更加漂亮。
我暗暗地筹钱,先是卖了新凉鞋,后来又半价处理了新华字典。
14岁生日那天我并没有声张,因为我怕花掉半分钱。但晚上的时候,要好的同学还是带了礼物来看我。小小的宿舍里弥漫着蛋糕的清香,红红的烛光映红了许多天真的脸……我打开录音机,大家便在流行歌曲中大叫大嚷地闹开了。
这时,我忽然发现白子惠微笑着站在门口,我立刻迎了上去。她缓缓低下头,用力地扯下了她上衣正中的一颗蓝扣子,递给我,轻轻地说:祝你生日快乐!我伸手接扣子的时候,顺势握住她的手,那只手是多么的小巧光滑,还在微微地颤动呢!明月的清辉勾勒出她亮丽柔美的曲线。她的脸,在红红的烛光中,显得异常的娇艳动人。我静静地看着她,她也静静地看着我。
那时刻,我仿佛听到了一种成长的声音,14岁呵,我的14岁!男同学还在大抢蛋糕,只有唐广宁扭过头偷偷看了我们一眼……
第二天,我发现我的课桌上摆放着已卖出的新华字典和那双新凉鞋。唐广宁说是白子惠帮我赎回来的。
而白子惠却一整天没来上课。
我有一种预感:白子惠可能要退学了。
我用节省的钱以及部分生日礼物,再加上半箩筐好话,才从服装店换回一条红裙子。
白子惠最后一次来学校了。她把所有的书都送给了周围的同学。送给我的最多,其中有那本宋词。她只带走了那张画着我的画稿。
她走出校门的时候,我追了上去,硬把那条红裙子塞给了她。
那年下了一场罕见的大雨,洪水几乎淹死了我们那块平原上所有的庄稼。听人说,洪水之后,白子惠跟随着父母姐弟迁回了四川老家,是一个叫做蓬溪的地方。
后来,我离开镇中学到县城念高中了,而唐广宁留了校教地理。他是校长的儿子,成绩臭得很,地理教到现在也还不知尼罗河与亚马孙河谁更长。但和我关系不错,有一次他写信给我,说白子惠给我来信了,他拆看了,里面还有一张照片,是微笑着的白子惠穿着红裙子,美得很哩。他叫我有空去取。我立即请了假,找到唐广宁时,他却说不见了,还陪我找了整整一上午,结果啥也没找到。问他信中的内容,他支支吾吾说记不得了。
后来我怀疑是唐广宁把信和照片藏了起来,因为他也一直喜欢着白子惠呢。现在想一想,也许白子惠根本就没有寄来信和照片,只是唐广宁认认真真跟我开了个玩笑吧。
这些年来,每逢我生日的时候,我便会倚在门口,呆呆地出神,期盼明月的清辉里能走来穿着红裙子的白子惠。然而总没有,有的只是那枚蓝扣子在我的掌心泛着柔润动人的光泽。
我还在画画,一直画着同一幅画。画上白子惠穿着红裙子,微微地笑着。旁边还题有一首小诗:那粒蓝扣子/从谁的心窝蹦出/落在我的相思里/从此孤寂/穿红裙的女孩/坐在蓬溪/可还读着宋词。
危险无处不在 账号防盗防骗小经验
[ 2007-03-25 04:13:32 | 作者: sun ]
最近盗号很猖獗,大家一定要小心看管自己的账号!这里有一些小技巧希望大家能注意下。
1、公共场所上网、下机前,务必重起电脑
相信现在网吧电脑都100%安装了还原系统,重起电脑基本可以杜绝菜鸟级别的盗号手段。
2、上网过程中,坚决不打开别人发你的不明链接
记得有一次,正跟玩魔力的朋 友QQ聊天。他莫名其妙的让我去某网址看照片。我正犹豫的时候,他紧接着发过来一句“千万别开那网页,有病毒!我电脑已经感染了……”
上网,不要浏览乱七八糟的网站,尤其是现在的一些卖虚拟财产的网站,广告价格特别便宜,其实就是引人上当。如果你上网感觉不明原因的电脑运行慢了,立刻重起电脑。
3、不要随便陷入“网恋”
“网恋”骗号,损失的不只是物质财富,还有感情。网络,只是一个虚拟的世界,不要过于想入非非。账号尽量不要告诉别人,特别是异性,除非你绝对相信他!
4、账号、密码错位输入
比如你的账号是ABcdEFG,你输入的时候先输入cd,再用鼠标把光标移动盗最前面输入AB,再用鼠标把光标移动盗 最后输入 EFG。这种方法可以让大多数木马失效。
1、公共场所上网、下机前,务必重起电脑
相信现在网吧电脑都100%安装了还原系统,重起电脑基本可以杜绝菜鸟级别的盗号手段。
2、上网过程中,坚决不打开别人发你的不明链接
记得有一次,正跟玩魔力的朋 友QQ聊天。他莫名其妙的让我去某网址看照片。我正犹豫的时候,他紧接着发过来一句“千万别开那网页,有病毒!我电脑已经感染了……”
上网,不要浏览乱七八糟的网站,尤其是现在的一些卖虚拟财产的网站,广告价格特别便宜,其实就是引人上当。如果你上网感觉不明原因的电脑运行慢了,立刻重起电脑。
3、不要随便陷入“网恋”
“网恋”骗号,损失的不只是物质财富,还有感情。网络,只是一个虚拟的世界,不要过于想入非非。账号尽量不要告诉别人,特别是异性,除非你绝对相信他!
4、账号、密码错位输入
比如你的账号是ABcdEFG,你输入的时候先输入cd,再用鼠标把光标移动盗最前面输入AB,再用鼠标把光标移动盗 最后输入 EFG。这种方法可以让大多数木马失效。
十招准确检测出间谍软件
[ 2007-03-25 04:13:22 | 作者: sun ]
1.在使用某种商业软件或免费软件的工具检查之前,尽可能的将机器清理干净。运行防病毒软件或反间谍软件扫描,一旦发现一些异常的项目立即清除。有关这一主题的内容在网络上有许多。需要注意的是,在进入下一步之前,专家们强烈建议使用并运行一种以上的杀毒、反间谍软件扫描以便达到彻底清理。
2.建立一个检查点或者对系统作备份。如果你使用的是Windows XP,那再方便不过了,这样很快就能建立一个系统恢复点(依次打开:开始菜单――帮助和支持――使用系统还原恢复你对系统的改变,然后点击创建一个还原点的按钮)。当然还有其他的方法(对于那些使用Windows家族其他操作系统的人来说是唯一的方法)就是创建一整套系统的备份,包括系统状态信息(如果其他办法都不可行的话,你可以使用NTBackup.exe文件;他包含了所有Windows新版本的信息)。这样的话,万一在接下来的步骤中出了差错,还可以将您的系统恢复到前一个正确的状态。
3.关闭所有不必要的应用程序。一些反间谍软件从电脑运行的所有线程和注册表中查找不正常迹象,因此先退出所有应用程序再启动反间谍程序运行检查,可以节省大量时间。
4.运行反间谍程序。在这一步,我使用了Hijack This这个软件。将下载回来的Zip文件解压到你想要的目录,然后双击HijackThis.exe这个执行文件,会跳出一个带有提示“Do a system scan and save a logfile.”的窗口。默认状态下,日志文件会保存在“我的文档”中,我发现在保存的日志文件名称中加入日期和时间信息很有用,这样的话,一个名为hijackthis.log的文件就改名为hijackthis-yymmdd:hh.mm.log(hh.mm是24小时制的几点几分)。这样的话,以后你任何时候再次运行Hijack This(一旦开始运行,它会自动清空以前的日志),都不必担心丢失以前的日志。因此,时间标记不愧是个很好的方法,这对将来你的日志文件分析非常有用。
5.查看Hijack This结果窗口中显示的扫描结果。这个结果与写入日志文件的信息是相同的,并且你会发现在每一个项目的左边都有一个复选框。如果你核选了某些项目,按下“Fix Checked“按钮, Hijack This就可以将其彻底清除了。你会发现在那里有很多看上去秘密的文件,你可以对其进行快速扫描,以决定在这时采取何种操作。实际上,真正存在的问题是识别出哪些文件具有潜在的威胁,哪些是必须的,而哪些是无关紧要的。此时分析工具能够帮上我们的大忙。记住,现在不要关闭Hijack This的查找结果窗口,也不需要进行核选操作,因为在接下来的步骤中我们还会返回这个窗口。
具体方法
6.用Hijack This的日志分析程序运行你的日志文件。你可以使用 Help2Go Detective或者 Hijack This Analysis 这两个分析工具中的一个。如果两个软件都有的话,我个人倾向于Help2Go Detective,但这两个都值得一试。在Hijack This日志里,你会发现每一个入侵(线程)的特殊信息和相关处理建议,包括哪些可以保留,哪些可以删除(但却是无害的),哪些是可疑文件(或许应该删除,但是还需要进一步分析研究),以及哪些必须删除(因为确定是恶意病毒)。这时,你可疑检查所有被确认为恶意病毒的选项,或者与已知的间谍软件和广告软件有关的选项。
7.检查可疑项目(包括可选的激活项目)。有时你可以查看注册表名称或者相关文件和目录信息,来检查即使通过分析程序(使用Hijack This很明显发现的)也没有识别出的项目,这是可能是你故意安装或使用的程序的一部分。这些项目经常会被单独的遗留下来。如果检查程序和你人为的都没有发现这些项目,安全选项就会将它们备份然后删除(然而如果你采取了这个步骤,那么要挽救这种状况只有存储一份备份文件或者返回到前一个恢复状态。)如果你想知道你在查看的是什么文件,就进入下一个附加步骤,用google或其他搜索工具搜索项目的名称。在99%的情况下我都可以在两分钟或更少时间内作出批准与否的决定。只有一少部分项目,最显著的是dll文件不仅仅需要通过文件名的搜索验证来裁留。
8.在Hijack This结果窗口核选有害文件和不确定的可疑项目,然后按下“Fix checked”按钮。你也可以在结果窗口中滚动查看项目,并通过单击来高亮选择单独的项目,接着通过点击"Info on selected item…."(选中项目的信息……)来获取这些项目的额外信息。这时来查看这些信息比在上一步骤查看更合适,因为这时分析工具的速度更快而且面向对象更友好。
9.重启系统查看运行情况。如果系有统运行不正常现象,如应用程序不工作或变得异常,或者系统看上去不太对劲时,你需要决定是否需要返回到恢复状态或备份状态。如果Windows不能完成启动,在系统启动之初按下F8键,直到启动进入安全启动菜单,选择最后一次正确的配置。这样启动就没有问题了,系统启动之后你还需要退回到恢复点,或者恢复到在第二步备份的状态。如果你接收这个选项的话,就不需要保存改动了,可以直接越过第10步。
10.最后再运行依次Hijack This扫描:重复步骤4,但是需要注意更改保存日志文件的日期标签。你可以扫描结果来确定移动的项目已经被彻底清除,或者只需保存你电脑状态的快照,快速清除就可以了(这样会对下一次进行同样的操作产生一个有意义的参照状态)。
存储过程之外:SQL注入深入防御
[ 2007-03-25 04:12:59 | 作者: sun ]
几年以前,对开发者提及”SQL注入”或者要求采取一个”深入防御”的措施,你大概会遭白眼。如今,越来越多的人听过”SQL注入”攻击而且开始关注这些攻击出现带来的潜在危险,但是大多数开发者仍然欠缺如何防止SQL注入攻击的知识,而当问及他们的应用软件如何防御SQL注入时,他们通常回答:“很简单,只要使用存储过程”。我们可以预见的是,使用存储过程对于你的防御策略来说是非常好的开端,但是仅此一步却不够。你需要采用一个深入防御策略。
如果你不熟悉SQL注入攻击和它们对你的应用软件的潜在危险,请参考MSDN的文章 “SQLInjection” (http://msdn2.microsoft.com/en-us/library/ms161953.aspx)。
仅仅依赖存储过程而无法执行一个深入防御的问题在于你真的只指望存储过程开发者为你提供安全。类似于下面SQLServer代码用来鉴别一个用户的存储过程非常常见:
Alter PROCEDURE LoginUser
(
@UserID [nvarchar](12),
@Password [nvarchar](12)
)
AS
Select * FROM Users Where UserID = @UserID AND Password = @Password
RETURN
这个存储过程看起来非常安全,但是考虑一下这个:
Alter PROCEDURE LoginUser
(
@UserID [nvarchar](12),
@Password [nvarchar](12)
)
AS
EXECUTE (‘Select * FROM Users Where UserID = ‘’’ + @UserID + ‘’’
AND Password = ‘’’ + @Password + ‘’’’)
RETURN
通过创建一个特别的SQL声明,而且把它放到存储过程代码的EXECUTE函数中,我们真的可以生成一个存储过程SQL注入。当你使用控制代码来写存储过程的时候,这个更加容易,它在Microsoft SQL Server 2005中以新的方式支持:
[Microsoft.SqlServer.Server.SqlProcedure]
public static void LoginUser(SqlString userId, SqlString password)
{
using (SqlConnection conn = new SqlConnection(“context connection=true”))
{
SqlCommand selectUserCommand = new SqlCommand();
selectUserCommand.CommandText = “Select * FROM Users Where UserID = ‘”
+ userId.Value + “’ AND Password = ‘” + password.Value + “’”;
selectUserCommand.Connection = conn;
conn.Open();
SqlDataReader reader =
selectUserCommand.ExecuteReader();
SqlContext.Pipe.Send(reader);
reader.Close();
conn.Close();
}
}
甚至就算你是写存储过程的那个人,你通常不能确定其他人会在你后面在应用软件配置以后改变代码。关于Web应用这尤其可能,而这也是为什么一个需要一个深入防御策略。
明显地,这个问题的解决是采用一个深入防御策略。你应该继续使用存储过程和参数化任何有必要的查询,但是你也应该设法建立你的深入防御策略来保证传给这些存储过程的的参数和查询的验证。在我们上面的用户鉴定例子中,“bobsmith”可能是一个有效的用户ID,但是“Select * FROM tblCreditCards”或许不是。对于验证用户输入使用你的深入防御策略的一个好的方式是对它采用规范化的表达规则。你能使用在System.Web.UI.WebControls名字空间中的RegularExpressionValidator控制寻找来验证Web表格数据,而且你可以使用在theSystem.Text.RegularExpressions 名字空间中Regex类寻找来验证任何类别的文字数据。这里有一个Web表格的例子,在把用户输入传递给数据库前对它进行验证。
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
// We allow only alphanumeric input
Regex allowRegex = new Regex(“^[a-zA-Z0-9]*$”);
if ((!allowRegex.IsMatch(textBoxUserId.Text))
|| (!allowRegex.IsMatch(textBoxPassword.Text)))
{
labelErrorMessage.Text =
“Invalid user ID or password.”;
return;
}
else
{
// Call the login stored procedure
…
}
}
}
一个更加彻底的深入防御策略是使用一个允许输入联合模式(也被认为是“优选名单”)和拒绝输入模式(或者称为”黑名单”)。用户的输入必须匹配优选名单模式(或者说至少一个优选名单模式,如果不多于一个的话)而且不和黑名单模式匹配(或者说任何黑名单模式)。如果在你的允许输入表中允许类似省略号这样的非字符输入,在深度防御策略中,你应该明确的使用黑名单模式。
// We allow alpha characters, spaces,
and apostrophes as inputRegex allowRegex = new Regex(@“^[a-zA-Z\s\’]*$”);
// But we disallow common SQL functions
Regex disallowRegex = new Regex(“(union|select|drop|delete)”);
if ((!allowRegex.IsMatch(textBoxLastName.Text)) ||
(disallowRegex.IsMatch(textBoxLastName.Text)))
{
labelErrorMessage.Text = “Invalid name.”;
return;
}
最后,我们必须论及加入损害控制到你的深入防御策略。如果一个黑客真的找到了一个对你的数据库执行SQL命令的途径,他可能会造成什么样的损害呢?如果你的应用程序作为一个管理员用户连接到数据库,象Microsoft SQL Server的”sa”用户,损害甚至会很严重。他不仅仅能看表中的数据,他也能增加他自己的新数据或者改变已经存在数据的值。设想一个在线购物站点,所有的商品项目价格标成低于一个美分。他能够增加新的用户或者删除已经存在用户。他能删除行,表或者甚至整个数据库。你能通过应用最少权限原则到你的深入防御策略减轻这个风险:使你的应用软件作为一个只有足够执行必需动作的许可,而没有其它更多的许可。如果你的应用程序只是从一个数据库中读数据,去掉数据库用户插入,更新和删除的许可。如果应用程序只需要对一个产品目录数据库进行存取(举例来说),确保用户不能存取定购历史数据库。永远不要指定”sa”或者任何管理员用户作为数据库用户。
通过采用一个深入防御策略,你可以避免大一个SQL注入攻击导致你应用程序的多数或者所有的损害。就很多原因包括提高安全来说,使用存储过程是一个很好的主意,但是一定不要依赖它们提供你所有的安全。总是验证用户输入,而且采用最少权限原则来减小一个成功的攻击能引起的损害。
关于作者
Bryan Sullivan是SPI Dynamics 一个Web应用软件安全产品公司的开发经理。Bryan管理DevInspect 和 QAInspect Web 安全产品,这些产品帮助程序员在整个开发和测试过程中维护应用程序的安全。他在Georgia Tech获得本科学位,而且有11年信息技术产业工作经验。他也对AVDL有所贡献,这已经成为应用软件安全行业的一个标志。
如果你不熟悉SQL注入攻击和它们对你的应用软件的潜在危险,请参考MSDN的文章 “SQLInjection” (http://msdn2.microsoft.com/en-us/library/ms161953.aspx)。
仅仅依赖存储过程而无法执行一个深入防御的问题在于你真的只指望存储过程开发者为你提供安全。类似于下面SQLServer代码用来鉴别一个用户的存储过程非常常见:
Alter PROCEDURE LoginUser
(
@UserID [nvarchar](12),
@Password [nvarchar](12)
)
AS
Select * FROM Users Where UserID = @UserID AND Password = @Password
RETURN
这个存储过程看起来非常安全,但是考虑一下这个:
Alter PROCEDURE LoginUser
(
@UserID [nvarchar](12),
@Password [nvarchar](12)
)
AS
EXECUTE (‘Select * FROM Users Where UserID = ‘’’ + @UserID + ‘’’
AND Password = ‘’’ + @Password + ‘’’’)
RETURN
通过创建一个特别的SQL声明,而且把它放到存储过程代码的EXECUTE函数中,我们真的可以生成一个存储过程SQL注入。当你使用控制代码来写存储过程的时候,这个更加容易,它在Microsoft SQL Server 2005中以新的方式支持:
[Microsoft.SqlServer.Server.SqlProcedure]
public static void LoginUser(SqlString userId, SqlString password)
{
using (SqlConnection conn = new SqlConnection(“context connection=true”))
{
SqlCommand selectUserCommand = new SqlCommand();
selectUserCommand.CommandText = “Select * FROM Users Where UserID = ‘”
+ userId.Value + “’ AND Password = ‘” + password.Value + “’”;
selectUserCommand.Connection = conn;
conn.Open();
SqlDataReader reader =
selectUserCommand.ExecuteReader();
SqlContext.Pipe.Send(reader);
reader.Close();
conn.Close();
}
}
甚至就算你是写存储过程的那个人,你通常不能确定其他人会在你后面在应用软件配置以后改变代码。关于Web应用这尤其可能,而这也是为什么一个需要一个深入防御策略。
明显地,这个问题的解决是采用一个深入防御策略。你应该继续使用存储过程和参数化任何有必要的查询,但是你也应该设法建立你的深入防御策略来保证传给这些存储过程的的参数和查询的验证。在我们上面的用户鉴定例子中,“bobsmith”可能是一个有效的用户ID,但是“Select * FROM tblCreditCards”或许不是。对于验证用户输入使用你的深入防御策略的一个好的方式是对它采用规范化的表达规则。你能使用在System.Web.UI.WebControls名字空间中的RegularExpressionValidator控制寻找来验证Web表格数据,而且你可以使用在theSystem.Text.RegularExpressions 名字空间中Regex类寻找来验证任何类别的文字数据。这里有一个Web表格的例子,在把用户输入传递给数据库前对它进行验证。
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
// We allow only alphanumeric input
Regex allowRegex = new Regex(“^[a-zA-Z0-9]*$”);
if ((!allowRegex.IsMatch(textBoxUserId.Text))
|| (!allowRegex.IsMatch(textBoxPassword.Text)))
{
labelErrorMessage.Text =
“Invalid user ID or password.”;
return;
}
else
{
// Call the login stored procedure
…
}
}
}
一个更加彻底的深入防御策略是使用一个允许输入联合模式(也被认为是“优选名单”)和拒绝输入模式(或者称为”黑名单”)。用户的输入必须匹配优选名单模式(或者说至少一个优选名单模式,如果不多于一个的话)而且不和黑名单模式匹配(或者说任何黑名单模式)。如果在你的允许输入表中允许类似省略号这样的非字符输入,在深度防御策略中,你应该明确的使用黑名单模式。
// We allow alpha characters, spaces,
and apostrophes as inputRegex allowRegex = new Regex(@“^[a-zA-Z\s\’]*$”);
// But we disallow common SQL functions
Regex disallowRegex = new Regex(“(union|select|drop|delete)”);
if ((!allowRegex.IsMatch(textBoxLastName.Text)) ||
(disallowRegex.IsMatch(textBoxLastName.Text)))
{
labelErrorMessage.Text = “Invalid name.”;
return;
}
最后,我们必须论及加入损害控制到你的深入防御策略。如果一个黑客真的找到了一个对你的数据库执行SQL命令的途径,他可能会造成什么样的损害呢?如果你的应用程序作为一个管理员用户连接到数据库,象Microsoft SQL Server的”sa”用户,损害甚至会很严重。他不仅仅能看表中的数据,他也能增加他自己的新数据或者改变已经存在数据的值。设想一个在线购物站点,所有的商品项目价格标成低于一个美分。他能够增加新的用户或者删除已经存在用户。他能删除行,表或者甚至整个数据库。你能通过应用最少权限原则到你的深入防御策略减轻这个风险:使你的应用软件作为一个只有足够执行必需动作的许可,而没有其它更多的许可。如果你的应用程序只是从一个数据库中读数据,去掉数据库用户插入,更新和删除的许可。如果应用程序只需要对一个产品目录数据库进行存取(举例来说),确保用户不能存取定购历史数据库。永远不要指定”sa”或者任何管理员用户作为数据库用户。
通过采用一个深入防御策略,你可以避免大一个SQL注入攻击导致你应用程序的多数或者所有的损害。就很多原因包括提高安全来说,使用存储过程是一个很好的主意,但是一定不要依赖它们提供你所有的安全。总是验证用户输入,而且采用最少权限原则来减小一个成功的攻击能引起的损害。
关于作者
Bryan Sullivan是SPI Dynamics 一个Web应用软件安全产品公司的开发经理。Bryan管理DevInspect 和 QAInspect Web 安全产品,这些产品帮助程序员在整个开发和测试过程中维护应用程序的安全。他在Georgia Tech获得本科学位,而且有11年信息技术产业工作经验。他也对AVDL有所贡献,这已经成为应用软件安全行业的一个标志。
9种方法诊断Windows 2003的IPsec问题
[ 2007-03-25 04:12:42 | 作者: sun ]
在你的局域网内实现用IPsec保护网络通信后,尽管你每一步都是认真按照技术文档来进行的,你还是不确信自己在网络上的通信没有被监听。怎样才能确定IPsec已经真正将你的电脑的网络通信信息加密了呢?
让我们来看看怎样确定一切运转正常,然后-你应当在进程中发现问题-查看检修IPsec的大图-相关的认证问题。在进程中,我会指出一些Windows Server 2003中内置的工具。当你确实发现网络通信信息没有被加密的时候,可以用这些工具来诊断出IPsec出现的问题。(但是注意,文中我讲到的技术并不适用于一些特殊的IPsec设备,比如IPsec卡以及基于IPsec的VPN。)
1.检查IPsec是否在工作
即使你已经成功地配置了IPsec,它也可能出现很多错误。当Windows XP或者Windows Server 2003连不上网的时候,你可以确定是出了什么问题。不幸的是,没有什么类似的情况可以让你知道IPsec的状态。根据IPsec的配置,出问题的时候,你或者会连不上网或者是-这种情况更普遍也更不容易察觉-网络可以照常使用,但是信息没有加密。当你确信你的网络通信信息已经被加密时,却发现它完全处在不安全的状态,想象一下,这将多么令人震惊。
检查IPsec是否在工作的最快方法就是用网络监视器捕捉到达以及发出计算机的数据包,检查它们是否有被加密。Windows 2003自带网络监视器,你可以打开控制面板的添加/删除程序来安装它以及访问windows组件。安装网络监视器之后,选择捕捉菜单中的“开始”来开始捕捉数据包。然后,执行一些普通的操作,比如浏览另一台电脑上的共享文件夹等,通过类似操作来生成网络活动并产生数据。最后,选择捕捉菜单中的“停止”和“查看”。
图1显示了在计算机没有使用IPsec情况下对两个数据包的捕捉结果。在协议栏你可以看到很多协议。右边是计算机使用IPsec情况下的捕获情况
。可以看到,列表中只有一项协议:压缩安全负载(ESP)。当windows 2003 计算机使用默认IPsec政策时,载数据包捕获过程中只会出现ESP和互联网控制信息协议(ICMP)。ICMP会出现是因为默认IPsec策略允许ICMP 通信。因此,如果捕捉数据包的时候看到很多协议,你就有理由断定IPsec没有正常起作用。
几乎所有的IPsec问题都是因为在互联网密钥交换(IKE)认证阶段出现了认证问题而引起的。当两台计算机试图建立安全连接(SA)的时候,他们通过特定的过程来授予对方身份识别凭证。IKE是协商SA形式的算法。身份识别认证可以是事先共享的密钥,数字证书或者Kerbero安全认证。Windows 2003默认的IPsec策略使用Kerberos安全认证。绝大多数情况下,检修IPsec故障就意味着检修认证的进程。
2.重新启动IPsec服务
一旦你确定IPsec没有工作,你应当首先重新启动IPsec服务。这将完全清零IKE协商的状态。IPsec在策略有重大更改后不起作用的这种情况下,该措施通常都能够恢复IPsec的功能。该方案有两个优点:一是不需要重启服务器,另一个是用很短的时间就可以实现。通过执行如下Net命令,你可以在Windows 2003计算机上立刻重启IPsec服务。
net stop policyagent
net start policyagent
现在,再次执行捕捉数据包的程序,或者运行我下文要讲到的Netsh命令测试。
3.在时间日志中诊断IKE问题
如果重启IPsec服务不能解决故障,你可以继续检查安全时间日志。网络登录日志监听各个SA的建立和删除。如果你启用了监听登录事件策略的成功失败监听,这些事件就会被记录在日志中。一切运转正常的时候,成功代码显示为541,542和543。然而,我们讨论的是IPsec不工作的时候该怎么办,所以我们要找失败代码,表1中显示了各个失败代码。图2显示的是失败事件547。
SA事件记录有一个问题是这些事件很快会填满你的日志。如果你只是要监听登录事件而不想让安全事件填满IKE条目的话,你可以创建 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Audit\DisableIKE Audits subkey然后把它的值设为1来停止IKE监听。
4.使用共享密钥认证
由于它是依靠共享字符串而不是诸如Kerberos或者证书那样更复杂的方法,共享密钥认证方法能够很有效的使IPsec工作起来。当然,如果你已经使用共享密钥,但还是出现故障的话,你应该核实一下每台计算机上事先共享的密钥是否匹配。如果你的事先共享密钥有错误,IPsec是不会工作的。
如果用共享密钥认证方法可以使IPsec工作,你就会知道该检查Kerberos或者证书认证机制了。在默认的IPsec策略中,从共享密钥认证方式切换到Kerberos安全认证方式需要执行以下几个步骤:
1.关闭所有的IPsec可能应用到的Active Directory(AD)服务
2.点击“开始”,“运行”,然后输入gpedit.msc来开始编辑本地策略。
3.进入路径 计算机配置\系统设置\安全设置\IP安全策略的组策略对象编辑节点。
4.右键点击导致故障的策略然后选择”属性“
5.在规则标签中,选择过滤列表中“所有IP通信”,并点击“编辑”。
6.在“编辑规则属性”对话框中,选择“认证方法”标签然后单击“添加”来添加新的认证方法。
7.选择“使用该字符串发报”按钮并输入一个事先共享的密钥。然后单击“确定”。
8.使用“认证方法”标签中的“上移”按钮来把事先共享密钥移到列表顶端。
这些说明是假设你没怎么定制IPsec策略的。总的来说,你应当总是创建新的策略而不要编辑已经存在的策略。但是,在当前这种情况下,你只是添加一种认证方法,解决故障之后,可以将它降级。变换到共享密钥认证方法会显著的简化认证过程,所以它很有可能使IPsec对你的网络起作用。
5.确定哪种IPsec策略是有效的
IPsec不工作很有可能是因为网络上的计算机被指定了互补兼容的策略。例如,一个策略可能试图使用证书认证,然而其他策略则只接受共享密钥认证。有两种方法来确定当前主导的是哪种IPsec策略。第一种方法是用IP安全监听器。如图3所示,内置的微软管理平台(MMC)IP安全监听器替代了Windows2000的Ipsecmon.exe功能。它能确定当前计算机上哪种策略是起作用的。
第二种方法是运行Netsh命令 netsh ipsec dynamic show all|more 从命令行得到相同的信息。该命令将所有的IPsec信息放到剪切板上。你可以把该信息粘贴到文本文档中,如图4所示。在文本中,可以看到一个策略应用到了本地级别(例如,客户端:只响应)以及通过AD应用(例如,服务器:安全请求)。一旦你得到了这些信息,你就可以很快发现IPsec不工作的原因是:或者计算机没有指定策略,或者指定了不兼容的策略。解决策略不兼容问题之后,IPsec可能就正常工作了。
6.检查Kerberos认证的问题
Kerberos认证依靠AD。如果产生了Kerberos问题,很可能跟计算机帐户的问题有关。你可能需要重置计算机帐户的密码或者重启计算机帐户。如果继续有故障,可能就需要将Kerberos网络通信与域控制器(DC)上的IPsec隔离。运行命令 netsh ipsec dynamic set config ipsecexempt value=0Win2000容许Kerberos认证通信,但是Windows2003不容许。该Netsh命令强制Windows2003如Win2000一样操作。
7.检查证书认证的问题
如果基于证书的认证系统有问题,很大可能是如下三种情况之一:没有安装证书,证书过期,或者证书撤销列表(CRL)不完整。默认的IPsec证书有效期是2年,这对大多数忘了该有效期的组织来说都足够长了。不像一些证书模板,默认情况下,IPsec证书模板没有设置成自动注册模式。
确定证书认证到底是上述哪种问题的最简便方法就是打开本地计算机的证书存储器。你也可以使用内置MMC证书工具来请求一个新的IPsec证书。当你创建了内置MMC证书来检查已安装的IPsec证书的过期数据时,需要确认你选择了“计算机帐户”选项,如图5所示。如果选择的是“我的用户帐户”或者“服务器帐户”选项的话,你就无法在定位到该找的IPsec 证书。
从长远角度来看,最好的解决方法是创建一个支持自动注册(仅限于Windows2003 企业版)的新的IPsec模板。这样,IPsec证书就可以自动更新,并且只要你选择了自动更新选项你就不需要记住IPsec证书有效期是2年了。
证书正在使用时,IPsec检查CRL来确定证书是否已被废除。IPsec要花一定的时间来做这个检查,并且很有可能在得到结果之前,系统就被关闭了。可以运行 netsh ipsec dynamic set config strongcrlcheck 0 来取消CRL检查。
8.检查是否所有人都使用客户端策略
IPsec的新的管理员有时候对网络上的所有计算机都应用客户端(只响应)策略,然后纳闷为什么没有加密任何信息。对开始生效的IPsec来说,搭档中的一个需要请求使用IPsec的策略。如果所有的主机都指定的是客户端(只响应)策略,那么没有主机会请求使用IPsec。要解决该问题,可以在计算机上激活各种服务器策略中的一个,然后运行GPU更新。
9.检查IKE日志
如果所有的前述措施都没有解决IKE问题,你就不得不按照更详细的步骤来决定方案。这种情况下,你需要有互联网安全连接和密钥管理协议RFC 2408和IKE RFC 2409(ISAKMP)方面的更进一步的知识。运行 netsh ipsec dynamic set config ikelogging 1来开始追踪IKE的协商。可以将ikelogging的值增加至7(记录所有可能的数据)来增加记录下来的信息量。IKE跟踪日志位于\%systemroot%\Debug\Oakley.log,可以用文本编辑器来查看。需要注意的是,记录文档的内容很密集,刚接触IPsec的人很可能很快就受不了了。
慎用自定义
Windows2003带的IPsec策略是可以直接使用的。只有你自定义它们使用基于证书或者基于共享密钥的认证系统的时候,才会产生问题。如果需要修改IPsec的认证方法,你应该创建新策略而不是对已存在的策略进行修改。只要遵从这个建议,在调查各种突然出现的问题时,都能够迅速切换到起作用的配置上。
让我们来看看怎样确定一切运转正常,然后-你应当在进程中发现问题-查看检修IPsec的大图-相关的认证问题。在进程中,我会指出一些Windows Server 2003中内置的工具。当你确实发现网络通信信息没有被加密的时候,可以用这些工具来诊断出IPsec出现的问题。(但是注意,文中我讲到的技术并不适用于一些特殊的IPsec设备,比如IPsec卡以及基于IPsec的VPN。)
1.检查IPsec是否在工作
即使你已经成功地配置了IPsec,它也可能出现很多错误。当Windows XP或者Windows Server 2003连不上网的时候,你可以确定是出了什么问题。不幸的是,没有什么类似的情况可以让你知道IPsec的状态。根据IPsec的配置,出问题的时候,你或者会连不上网或者是-这种情况更普遍也更不容易察觉-网络可以照常使用,但是信息没有加密。当你确信你的网络通信信息已经被加密时,却发现它完全处在不安全的状态,想象一下,这将多么令人震惊。
检查IPsec是否在工作的最快方法就是用网络监视器捕捉到达以及发出计算机的数据包,检查它们是否有被加密。Windows 2003自带网络监视器,你可以打开控制面板的添加/删除程序来安装它以及访问windows组件。安装网络监视器之后,选择捕捉菜单中的“开始”来开始捕捉数据包。然后,执行一些普通的操作,比如浏览另一台电脑上的共享文件夹等,通过类似操作来生成网络活动并产生数据。最后,选择捕捉菜单中的“停止”和“查看”。
图1显示了在计算机没有使用IPsec情况下对两个数据包的捕捉结果。在协议栏你可以看到很多协议。右边是计算机使用IPsec情况下的捕获情况
。可以看到,列表中只有一项协议:压缩安全负载(ESP)。当windows 2003 计算机使用默认IPsec政策时,载数据包捕获过程中只会出现ESP和互联网控制信息协议(ICMP)。ICMP会出现是因为默认IPsec策略允许ICMP 通信。因此,如果捕捉数据包的时候看到很多协议,你就有理由断定IPsec没有正常起作用。
几乎所有的IPsec问题都是因为在互联网密钥交换(IKE)认证阶段出现了认证问题而引起的。当两台计算机试图建立安全连接(SA)的时候,他们通过特定的过程来授予对方身份识别凭证。IKE是协商SA形式的算法。身份识别认证可以是事先共享的密钥,数字证书或者Kerbero安全认证。Windows 2003默认的IPsec策略使用Kerberos安全认证。绝大多数情况下,检修IPsec故障就意味着检修认证的进程。
2.重新启动IPsec服务
一旦你确定IPsec没有工作,你应当首先重新启动IPsec服务。这将完全清零IKE协商的状态。IPsec在策略有重大更改后不起作用的这种情况下,该措施通常都能够恢复IPsec的功能。该方案有两个优点:一是不需要重启服务器,另一个是用很短的时间就可以实现。通过执行如下Net命令,你可以在Windows 2003计算机上立刻重启IPsec服务。
net stop policyagent
net start policyagent
现在,再次执行捕捉数据包的程序,或者运行我下文要讲到的Netsh命令测试。
3.在时间日志中诊断IKE问题
如果重启IPsec服务不能解决故障,你可以继续检查安全时间日志。网络登录日志监听各个SA的建立和删除。如果你启用了监听登录事件策略的成功失败监听,这些事件就会被记录在日志中。一切运转正常的时候,成功代码显示为541,542和543。然而,我们讨论的是IPsec不工作的时候该怎么办,所以我们要找失败代码,表1中显示了各个失败代码。图2显示的是失败事件547。
SA事件记录有一个问题是这些事件很快会填满你的日志。如果你只是要监听登录事件而不想让安全事件填满IKE条目的话,你可以创建 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Audit\DisableIKE Audits subkey然后把它的值设为1来停止IKE监听。
4.使用共享密钥认证
由于它是依靠共享字符串而不是诸如Kerberos或者证书那样更复杂的方法,共享密钥认证方法能够很有效的使IPsec工作起来。当然,如果你已经使用共享密钥,但还是出现故障的话,你应该核实一下每台计算机上事先共享的密钥是否匹配。如果你的事先共享密钥有错误,IPsec是不会工作的。
如果用共享密钥认证方法可以使IPsec工作,你就会知道该检查Kerberos或者证书认证机制了。在默认的IPsec策略中,从共享密钥认证方式切换到Kerberos安全认证方式需要执行以下几个步骤:
1.关闭所有的IPsec可能应用到的Active Directory(AD)服务
2.点击“开始”,“运行”,然后输入gpedit.msc来开始编辑本地策略。
3.进入路径 计算机配置\系统设置\安全设置\IP安全策略的组策略对象编辑节点。
4.右键点击导致故障的策略然后选择”属性“
5.在规则标签中,选择过滤列表中“所有IP通信”,并点击“编辑”。
6.在“编辑规则属性”对话框中,选择“认证方法”标签然后单击“添加”来添加新的认证方法。
7.选择“使用该字符串发报”按钮并输入一个事先共享的密钥。然后单击“确定”。
8.使用“认证方法”标签中的“上移”按钮来把事先共享密钥移到列表顶端。
这些说明是假设你没怎么定制IPsec策略的。总的来说,你应当总是创建新的策略而不要编辑已经存在的策略。但是,在当前这种情况下,你只是添加一种认证方法,解决故障之后,可以将它降级。变换到共享密钥认证方法会显著的简化认证过程,所以它很有可能使IPsec对你的网络起作用。
5.确定哪种IPsec策略是有效的
IPsec不工作很有可能是因为网络上的计算机被指定了互补兼容的策略。例如,一个策略可能试图使用证书认证,然而其他策略则只接受共享密钥认证。有两种方法来确定当前主导的是哪种IPsec策略。第一种方法是用IP安全监听器。如图3所示,内置的微软管理平台(MMC)IP安全监听器替代了Windows2000的Ipsecmon.exe功能。它能确定当前计算机上哪种策略是起作用的。
第二种方法是运行Netsh命令 netsh ipsec dynamic show all|more 从命令行得到相同的信息。该命令将所有的IPsec信息放到剪切板上。你可以把该信息粘贴到文本文档中,如图4所示。在文本中,可以看到一个策略应用到了本地级别(例如,客户端:只响应)以及通过AD应用(例如,服务器:安全请求)。一旦你得到了这些信息,你就可以很快发现IPsec不工作的原因是:或者计算机没有指定策略,或者指定了不兼容的策略。解决策略不兼容问题之后,IPsec可能就正常工作了。
6.检查Kerberos认证的问题
Kerberos认证依靠AD。如果产生了Kerberos问题,很可能跟计算机帐户的问题有关。你可能需要重置计算机帐户的密码或者重启计算机帐户。如果继续有故障,可能就需要将Kerberos网络通信与域控制器(DC)上的IPsec隔离。运行命令 netsh ipsec dynamic set config ipsecexempt value=0Win2000容许Kerberos认证通信,但是Windows2003不容许。该Netsh命令强制Windows2003如Win2000一样操作。
7.检查证书认证的问题
如果基于证书的认证系统有问题,很大可能是如下三种情况之一:没有安装证书,证书过期,或者证书撤销列表(CRL)不完整。默认的IPsec证书有效期是2年,这对大多数忘了该有效期的组织来说都足够长了。不像一些证书模板,默认情况下,IPsec证书模板没有设置成自动注册模式。
确定证书认证到底是上述哪种问题的最简便方法就是打开本地计算机的证书存储器。你也可以使用内置MMC证书工具来请求一个新的IPsec证书。当你创建了内置MMC证书来检查已安装的IPsec证书的过期数据时,需要确认你选择了“计算机帐户”选项,如图5所示。如果选择的是“我的用户帐户”或者“服务器帐户”选项的话,你就无法在定位到该找的IPsec 证书。
从长远角度来看,最好的解决方法是创建一个支持自动注册(仅限于Windows2003 企业版)的新的IPsec模板。这样,IPsec证书就可以自动更新,并且只要你选择了自动更新选项你就不需要记住IPsec证书有效期是2年了。
证书正在使用时,IPsec检查CRL来确定证书是否已被废除。IPsec要花一定的时间来做这个检查,并且很有可能在得到结果之前,系统就被关闭了。可以运行 netsh ipsec dynamic set config strongcrlcheck 0 来取消CRL检查。
8.检查是否所有人都使用客户端策略
IPsec的新的管理员有时候对网络上的所有计算机都应用客户端(只响应)策略,然后纳闷为什么没有加密任何信息。对开始生效的IPsec来说,搭档中的一个需要请求使用IPsec的策略。如果所有的主机都指定的是客户端(只响应)策略,那么没有主机会请求使用IPsec。要解决该问题,可以在计算机上激活各种服务器策略中的一个,然后运行GPU更新。
9.检查IKE日志
如果所有的前述措施都没有解决IKE问题,你就不得不按照更详细的步骤来决定方案。这种情况下,你需要有互联网安全连接和密钥管理协议RFC 2408和IKE RFC 2409(ISAKMP)方面的更进一步的知识。运行 netsh ipsec dynamic set config ikelogging 1来开始追踪IKE的协商。可以将ikelogging的值增加至7(记录所有可能的数据)来增加记录下来的信息量。IKE跟踪日志位于\%systemroot%\Debug\Oakley.log,可以用文本编辑器来查看。需要注意的是,记录文档的内容很密集,刚接触IPsec的人很可能很快就受不了了。
慎用自定义
Windows2003带的IPsec策略是可以直接使用的。只有你自定义它们使用基于证书或者基于共享密钥的认证系统的时候,才会产生问题。如果需要修改IPsec的认证方法,你应该创建新策略而不是对已存在的策略进行修改。只要遵从这个建议,在调查各种突然出现的问题时,都能够迅速切换到起作用的配置上。
怎么抵抗DDOS攻击
[ 2007-03-25 04:12:21 | 作者: sun ]
一、为何要DDOS?
随着Internet互联网络带宽的增加和多种DDOS黑客工具的不断发布,DDOS拒绝服务攻击的实施越来越容易,DDOS攻击事件正在成上升趋势。出于商业竞争、打击报复和网络敲诈等多种因素,导致很多IDC托管机房、商业站点、游戏服务器、聊天网络等网络服务商长期以来一直被DDOS攻击所困扰,随之而来的是客户投诉、同虚拟主机用户受牵连、法律纠纷、商业损失等一系列问题,因此,解决DDOS攻击问题成为网络服务商必须考虑的头等大事。
二、什么是DDOS?
DDOS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”,那么什么又是拒绝服务(Denial of Service)呢?可以这么理解,凡是能导致合法用户不能够访问正常网络服务的行为都算是拒绝服务攻击。也就是说拒绝服务攻击的目的非常明确,就是要阻止合法用户对正常网络资源的访问,从而达成攻击者不可告人的目的。虽然同样是拒绝服务攻击,但是DDOS和DOS还是有所不同,DDOS的攻击策略侧重于通过很多“僵尸主机”(被攻击者入侵过或可间接利用的主机)向受害主机发送大量看似合法的网络包,从而造成网络阻塞或服务器资源耗尽而导致拒绝服务,分布式拒绝服务攻击一旦被实施,攻击网络包就会犹如洪水般涌向受害主机,从而把合法用户的网络包淹没,导致合法用户无法正常访问服务器的网络资源,因此,拒绝服务攻击又被称之为“洪水式攻击”,常见的DDOS攻击手段有SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy Flood等;而DOS则侧重于通过对主机特定漏洞的利用攻击导致网络栈失效、系统崩溃、主机死机而无法提供正常的网络服务功能,从而造成拒绝服务,常见的DOS攻击手段有TearDrop、Land、Jolt、IGMP Nuker、Boink、Smurf、Bonk、OOB等。就这两种拒绝服务攻击而言,危害较大的主要是DDOS攻击,原因是很难防范,至于DOS攻击,通过给主机服务器打补丁或安装防火墙软件就可以很好地防范,后文会详细介绍怎么对付DDOS攻击。
三、被DDOS了吗?
DDOS的表现形式主要有两种,一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞,合法网络包被虚假的攻击包淹没而无法到达主机;另一种为资源耗尽攻击,主要是针对服务器主机的攻击,即通过大量攻击包导致主机的内存被耗尽或CPU被内核及应用程序占完而造成无法提供网络服务。
如何判断网站是否遭受了流量攻击呢?可通过Ping命令来测试,若发现Ping超时或丢包严重(假定平时是正常的),则可能遭受了流量攻击,此时若发现和你的主机接在同一交换机上的服务器也访问不了了,基本可以确定是遭受了流量攻击。当然,这样测试的前提是你到服务器主机之间的ICMP协议没有被路由器和防火墙等设备屏蔽,否则可采取Telnet主机服务器的网络服务端口来测试,效果是一样的。不过有一点可以肯定,假如平时Ping你的主机服务器和接在同一交换机上的主机服务器都是正常的,突然都Ping不通了或者是严重丢包,那么假如可以排除网络故障因素的话则肯定是遭受了流量攻击,再一个流量攻击的典型现象是,一旦遭受流量攻击,会发现用远程终端连接网站服务器会失败。
相对于流量攻击而言,资源耗尽攻击要容易判断一些,假如平时Ping网站主机和访问网站都是正常的,发现突然网站访问非常缓慢或无法访问了,而Ping还可以Ping通,则很可能遭受了资源耗尽攻击,此时若在服务器上用Netstat -na命令观察到有大量的SYN_RECEIVED、TIME_WAIT、FIN_WAIT_1等状态存在,而ESTABLISHED很少,则可判定肯定是遭受了资源耗尽攻击。还有一种属于资源耗尽攻击的现象是,Ping自己的网站主机Ping不通或者是丢包严重,而Ping与自己的主机在同一交换机上的服务器则正常,造成这种原因是网站主机遭受攻击后导致系统内核或某些应用程序CPU利用率达到100%无法回应Ping命令,其实带宽还是有的,否则就Ping不通接在同一交换机上的主机了。
当前主要有三种流行的DDOS攻击:
1、SYN/ACK Flood攻击:这种攻击方法是经典最有效的DDOS方法,可通杀各种系统的网络服务,主要是通过向受害主机发送大量伪造源IP和源端口的SYN或ACK包,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务,由于源都是伪造的故追踪起来比较困难,缺点是实施起来有一定难度,需要高带宽的僵尸主机支持。少量的这种攻击会导致主机服务器无法访问,但却可以Ping的通,在服务器上用Netstat -na命令会观察到存在大量的SYN_RECEIVED状态,大量的这种攻击会导致Ping失败、TCP/IP栈失效,并会出现系统凝固现象,即不响应键盘和鼠标。普通防火墙大多无法抵御此种攻击。
2、TCP全连接攻击:这种攻击是为了绕过常规防火墙的检查而设计的,一般情况下,常规防火墙大多具备过滤TearDrop、Land等DOS攻击的能力,但对于正常的TCP连接是放过的,殊不知很多网络服务程序(如:IIS、Apache等Web服务器)能接受的TCP连接数是有限的,一旦有大量的TCP连接,即便是正常的,也会导致网站访问非常缓慢甚至无法访问,TCP全连接攻击就是通过许多僵尸主机不断地与受害服务器建立大量的TCP连接,直到服务器的内存等资源被耗尽而被拖跨,从而造成拒绝服务,这种攻击的特点是可绕过一般防火墙的防护而达到攻击目的,缺点是需要找很多僵尸主机,并且由于僵尸主机的IP是暴露的,因此容易被追踪。
3、刷Script脚本攻击:这种攻击主要是针对存在ASP、JSP、PHP、CGI等脚本程序,并调用MSSQLServer、MySQLServer、Oracle等数据库的网站系统而设计的,特征是和服务器建立正常的TCP连接,并不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用,典型的以小博大的攻击方法。一般来说,提交一个GET或POST指令对客户端的耗费和带宽的占用是几乎可以忽略的,而服务器为处理此请求却可能要从上万条记录中去查出某个记录,这种处理过程对资源的耗费是很大的,常见的数据库服务器很少能支持数百个查询指令同时执行,而这对于客户端来说却是轻而易举的,因此攻击者只需通过Proxy代理向主机服务器大量递交查询指令,只需数分钟就会把服务器资源消耗掉而导致拒绝服务,常见的现象就是网站慢如蜗牛、ASP程序失效、PHP连接数据库失败、数据库主程序占用CPU偏高。这种攻击的特点是可以完全绕过普通的防火墙防护,轻松找一些Proxy代理就可实施攻击,缺点是对付只有静态页面的网站效果会大打折扣,并且有些Proxy会暴露攻击者的IP地址。
四、怎么抵御DDOS?
对付DDOS是一个系统工程,想仅仅依靠某种系统或产品防住DDOS是不现实的,可以肯定的是,完全杜绝DDOS目前是不可能的,但通过适当的措施抵御90%的DDOS攻击是可以做到的,基于攻击和防御都有成本开销的缘故,若通过适当的办法增强了抵御DDOS的能力,也就意味着加大了攻击者的攻击成本,那么绝大多数攻击者将无法继续下去而放弃,也就相当于成功的抵御了DDOS攻击。以下几点是防御DDOS攻击几点:
1、采用高性能的网络设备
首先要保证网络设备不能成为瓶颈,因此选择路由器、交换机、硬件防火墙等设备的时候要尽量选用知名度高、口碑好的产品。再就是假如和网络提供商有特殊关系或协议的话就更好了,当大量攻击发生的时候请他们在网络接点处做一下流量限制来对抗某些种类的DDOS攻击是非常有效的。
2、尽量避免NAT的使用
无论是路由器还是硬件防护墙设备要尽量避免采用网络地址转换NAT的使用,因为采用此技术会较大降低网络通信能力,其实原因很简单,因为NAT需要对地址来回转换,转换过程中需要对网络包的校验和进行计算,因此浪费了很多CPU的时间,但有些时候必须使用NAT,那就没有好办法了。
3、充足的网络带宽保证
网络带宽直接决定了能抗受攻击的能力,假若仅仅有10M带宽的话,无论采取什么措施都很难对抗现在的SYNFlood攻击,当前至少要选择100M的共享带宽,最好的当然是挂在1000M的主干上了。但需要注意的是,主机上的网卡是1000M的并不意味着它的网络带宽就是千兆的,若把它接在100M的交换机上,它的实际带宽不会超过100M,再就是接在100M的带宽上也不等于就有了百兆的带宽,因为网络服务商很可能会在交换机上限制实际带宽为10M,这点一定要搞清楚。
4、升级主机服务器硬件
在有网络带宽保证的前提下,请尽量提升硬件配置,要有效对抗每秒10万个SYN攻击包,服务器的配置至少应该为:P4 2.4G/DDR512M/SCSI-HD,起关键作用的主要是CPU和内存,若有志强双CPU的话就用它吧,内存一定要选择DDR的高速内存,硬盘要尽量选择SCSI的,别只贪IDE价格不贵量还足的便宜,否则会付出高昂的性能代价,再就是网卡一定要选用3COM或Intel等名牌的,若是Realtek的还是用在自己的PC上吧。
5、把网站做成静态页面
大量事实证明,把网站尽可能做成静态页面,不仅能大大提高抗攻击能力,而且还给黑客入侵带来不少麻烦,至少到现在为止关于HTML的溢出还没出现,看看吧!新浪、搜狐、网易等门户网站主要都是静态页面,若你非需要动态脚本调用,那就把它弄到另外一台单独主机去,免的遭受攻击时连累主服务器,当然,适当放一些不做数据库调用脚本还是可以的,此外,最好在需要调用数据库的脚本中拒绝使用代理的访问,因为经验表明使用代理访问你网站的80%属于恶意行为。
6、增强操作系统的TCP/IP栈
Win2000和Win2003作为服务器操作系统,本身就具备一定的抵抗DDOS攻击的能力,只是默认状态下没有开启而已,若开启的话可抵挡约10000个SYN攻击包,若没有开启则仅能抵御数百个,具体怎么开启,自己去看微软的文章吧!《强化 TCP/IP 堆栈安全》。
也许有的人会问,那我用的是Linux和FreeBSD怎么办?很简单,按照这篇文章去做吧!《SYN Cookies》。
7、安装专业抗DDOS防火墙
8、其他防御措施
以上几条对抗DDOS建议,适合绝大多数拥有自己主机的用户,但假如采取以上措施后仍然不能解决DDOS问题,就有些麻烦了,可能需要更多投资,增加服务器数量并采用DNS轮巡或负载均衡技术,甚至需要购买七层交换机设备,从而使得抗DDOS攻击能力成倍提高,只要投资足够深入。