自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 资源 (4)
  • 收藏
  • 关注

原创 也不是真的,也只是想一下

<br />1.禁止shell脚本运行<br />这看起来是一个无所谓的事,运行一个脚本能怎样,实际上运行脚本并不是说脚本能实现多强的功能,可怕之处在于它<br />的粘合作用。在允许脚本运行的情况下,即使你想了一些办法禁止了用户修改init.rc文件,实际上用户还是可以通过脚本将自定义的程序粘合进系统从而实现自动启动的,一旦有用户自己定义的程序自动启动了,它就可以派生出任意多的进程,后果就是系统被他占有了。比如用户可以在运行的系统上执行ps,随意得到一个自动启动的程序,记为/bin/ABC,那么用

2010-10-24 14:20:00 3074

原创 流量负载均衡的分层

<br />关于网络的负载均衡也是分层次的,曾经想过使用linux的bonding功能来做OpenVPN的tun网卡的负载均衡,在主机上启动多个OpenVPN实例从而得到多个tun网卡,然后将多个tun网卡bond到一个bonding上,可后来一想就不合适了,因为bonding所做的是链路层的负载均衡,所有的bonding中的网卡使用同一个IP地址,这就和OpenVPN的使用不符合了,知道了这件事后,我决定修改bonding的源代码,在数据包发送到真实tun网卡之前重新设置ip地址或者重新做snat,结果还

2010-10-24 14:18:00 4860

原创 网络服务器预防dos攻击的层次

web服务器在处理请求的时候会涉及三个层次,第一个层析是tcp连接的层次,第二个层次是http请求的层次,第三个层次是业务处理的层次,每个层次都可能存在dos攻击,所要作的预防措施就是每个更低的层次未决之前不为其分配上层资源,具体来说就是,tcp三次握手没有完成就不为之分配连接所需的内存资源,这个通过syn cookie可以完成,syn cookie的linux实现中顺便携带了一个时间参数可以很好的处理超时,三次握手虽然完成了,但是http请求没有发到之前不为之指派处理进程,从完成三次握手到收到http请求

2010-10-24 14:17:00 4070

原创 tcp的半连接攻击和全连接攻击--TCP_DEFER_ACCEPT

<br />半连接攻击是一种针对协议栈的攻击,或者说是一中针对主机的攻击,皮之不存毛将焉附,主机一旦被攻击而耗尽了内存资源,用户态的应用程序也将无法运行。TCP半连接攻击可以通过syn cookie机制或者syn中继机制等进行防范,对于tcp服务来讲还有一种可以称为“全连接攻击”的攻击类型,这种攻击是针对用户态运行的tcp服务器的,当然,它可能间接地导致主机瘫痪。所谓的全连接攻击说的就是客户端仅仅“连接”到服务器,然后再也不发送任何数据,直到服务器超时后处理或者耗尽服务器的处理进程。为何不发送任何数据呢?因

2010-10-20 20:57:00 13129

原创 apt-get和pkgsrc

<br />apt-get(简称apt)是debian上必不可少的程序,有了它你几乎可以仅仅安装一个仅仅带了apt的系统即可,任何东西都可以随时安装。pkgsrc是BSD的程序,它的意义和apt一样。然而它们不同,pkgsrc下载的是源码,它可以为你的系统即时编译应用程序,而apt下载的是二进制文件,它仅仅是安装(复制到/usr/local/bin或者别的什么地方)。因此我们可以看出,pkgsrc这种方式更具有可扩展性,只要有源码,我们可以定制编译,然而apt却不能提供这种特性,好在apt源为几乎每个系统都

2010-10-16 14:58:00 3583

原创 路面上的坑--系统API的兼容性

<br />任何人都不希望路面上有坑,对于应用程序也是一样。系统API或者说任何层次的接口都定义了上层可以操作的集合,事实上我们经常听说“XX无关性”就是这个道理。在linux上,ls程序可以从2.6.1内核的机器上复制到2.6.35机器上仍然能用,我们说2.6.1到2.6.35内核提供了系统调用兼容性,也就是说,系统调用铺就了一条没有坑的路,如果一个应用程序,比如X从2.6.1内核的机器上复制到2.6.35机器上不能运行了,那么这条道路上就有了一些坑,我们修改程序X就是在填补这些坑...<br /> 

2010-10-16 14:40:00 3323

原创 汤因比的《历史研究》所感之二

<br />1.历史是否是宿命论的,是否一切历史进程终将幻灭,汤恩比用一个例子揭示了这个问题,那就是车轮和车辆,局部和整体的调和,车轮虽然在轮回然而却带来了车辆的前进,虽然春去秋来花开花落,可是花却成长了...<br />2.汤恩比认为历史的发展是自决比例的增加,进一步自决是少数的优秀个体带动的,多数的个体只是机械的模仿,这也许也是80/20原则的体现。汤恩比用人体论证了这个原则,人体80%的任务在于心脏,肺的运作,然而却只能带来20%的心理活动,或者说是创造力,汤恩比将这个原则用于文明。拥有一个创造性

2010-10-14 21:09:00 3396

原创 UDP_CORK,TCP_CORK以及TCP_NODELAY

<br />这三个选项十分有意思,并且困扰了很多人。特别是cork选项,它到底和nodelay有什么区别,到底怎样影响了Nagle算法。在tcp的实现中(特指linux内核的协议栈实现),cork和nodelay非常让人看不出区别,这一块的实现非常复杂,看内核实现之前最好先明白它们大概在说什么,否则很容易迷失的。<br />     所谓的cork就是塞子的意思,形象地理解就是用cork将连接塞住,使得数据先不发出去,等到拔去塞子后再发出去,而nodelay事实上是为了禁用Nagle算法,Nagle算法

2010-10-14 20:47:00 12859

原创 TCP和UDP在网络层实现的不同--基于linux内核

<br />由于4层协议实现复杂度的不对称性,导致3层协议实现也不易统一,换句话说就是同样的3层协议比如IP要为不同的4层协议提供不同的实现,这是因为我们熟知的4层协议分为流和数据报两种类型,流式协议比如tcp在4层就处理了大量的逻辑,比如分段等等,而数据报协议比如 udp却不处理这些,因此当它们被交付到3层的时候,针对于分段来讲,3层逻辑对tcp需要作的事就很少了,而对udp就要有大量的工作要做,这就导致了对于tcp来说,只需要调用简单的ip_queue_xmit即可,而对于udp来说,就需要调用更复杂的

2010-10-13 20:36:00 5459

一个iptables的stateless NAT模块实现

如果你在寻找Linux上配置诸如Cisco设备上的static双向NAT的方法,这个或许就是你想要的; what?你觉得它完不成PAT?是的,它不行。但是想做PAT为何不使用现有的iptables实现呢?它可以自动为你解决元组唯一性问题。不要从概念上分析,事实上,static双向NAT是完全对称的,一对一的 ,也只有在BOX两边的网络在拓扑级别是完全对等的情形下,这种NAT或许才是有用的,Cisco设备经常处在这样的位置,比如一个很大的stub节点的出口位置,比如两个domain的中间位置... 我将名字取为STATIC-2-WAY-NAT,比较长也比较怪,完全不符合UNIX的小写短名传统,我的想法是:这样可以少写很多的帮助信息,因为名字就是自解释的。

2014-12-27

模块化的nf-HiPAC

原版的nf-hipac需要为内核打patch,且只支持较低版本的内核,构建起来相对比较麻烦。 模块化后的nf-hipac可以直接作为内核可加载模块编译,且适配了高版本的Linux内核。为了移植工作简化,去掉了和iptables模块的联动支持!

2014-11-21

配置文件还有一些other

代码和配置iptables配置文件,还有一些别的东西

2010-04-16

关于linux内核以及其他个人体会的文集

本文集是我用将近两年的时间写成的,大多数文章是关于linux内核的,另外还有一些我自己对计算机的理解,还有一些历史,音乐方面的东西。适合于对linux内核思想感兴趣的阅读,文章偏重于对于思想的理解。

2009-09-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除