2008-09-29
不了解ARP的同学,看下面来自http://www.oxid.it/的演示:
全屏显示
简单点儿说:之所以有ARP攻击是因为ARP协议本身设计的缺陷。网络设备在动态更新系统的ARP表时,会被恶意欺骗。ARP协议是在2层设备(数据链路层:交换机)之间传递的协议,ARP包可以在整个“冲突域”中传递。而一般而言,一个冲突域就是一个子网。VLAN就是设计用来隔离“冲突域”的,所以VLAN可以隔离ARP攻击。简单点说,就是不要和攻击者在一个子网。可惜不是所有的IDC都提供单独的子网(VLAN)给用户,因为划分子网会浪费IP地址。
解决ARP攻击,有几种方法:
第一:使用独立的VLAN(子网)。VLAN(子网)实际上划分了一个ARP安全域,在这个VLAN里的机器之间逻辑上是互相信任的,VLAN将其他不不信任、不安全的设备隔离在ARP协议发挥作用的区域之外,这样便可以不用担心“邻居”中毒而受到连累。这是最保险的做法。但是,假如自家VLAN(网段)里有机器中毒进行攻击,则网络仍然会乱作一团。
第二:网关与服务器双双使用静态ARP记录。之前写过一篇《防止ARP中间人攻击的一个技巧 》提到过。简单的点儿说就是在网关(路由器)上设定服务器网卡的MAC,在服务器上设定网关的MAC为静态。这样,路由器和服务器就不会再更新对应的ARP记录,就不会被欺骗。这个方法可以隔离每一台设备,而不用划VLAN(划子网浪费IP),比较适合单设备托管的用户。然而,绝大多数ISP都不会为用户做MAC绑定。而对于设备比多的用户,网关绑定MAC后,每次设备换IP都需要ISP重新设定MAC绑定,比较麻烦;而使用了某些用到ARP机制的应用,在绑定的环境下,则可能会运行不起来,比如HA集群中的failover切换。
第三,被动侦测,以毒攻毒。之前写过一篇关于send_arp 的blog,其中无意间提到过这个方法。就是使用send_arp程序,纠正错误的ARP记录。之所以说是以毒攻毒,是因为send_arp程序本身就是一个利用ARP协议缺陷的程序。
另外,需要说明的是。有些ISP以端口保护为技术手段,认为可以阻止ARP攻击,实际上,这种技术是不能完全阻止ARP攻击的。
端口保护(有的称为PVLAN,不知道是不是相同的技术)之后,交换机上的端口下连接的设备只能和网关通信,不可以和“邻居”通信。这样可以起到一定的保护作用。但是,你的“邻居”,仍然是可以访问你的网关的(你们是同一个网关)。它只要欺骗网关,告诉网关你的MAC地址为一个错误的地址,或者干脆改成自己的MAC,那么,你的服务器就会断网,因为网关发给你的服务器的包,发到了错误的MAC地址上。
解决办法,就以毒攻毒。使用send_arp,强制让网关更新关于你的ARP(MAC)记录:send_arp 你的IP地址 你绑定该IP网络接口的MAC 你网关的IP 你网关的MAC
这个命令十分有用。管理员可能都会有这么一种经历,将一个IP地址调整到另一台服务器上的时候,会有一段时间这个IP是不通的。这个时候,这个工具又可以发挥作用了:使用相同的命令格式。
需要说明的是,send_arp命令是不需要必须在本地运行的,在网一网段(VLAN)内的任意主机上执行即可。
解决问题的基本思想是在同网段的机器上,执行两个send_arp,一个是发给网关的,一个是发给被攻击的主机的。
实际上,可以写一个角本,放在本地,使用crontab每两分钟运行一次,假如被ARP攻击,则自行通知网关更新相应的ARP记录。
首先将网关MAC绑定成静态:将下面的命令添加到/etc/rc.local
arp -s 网关IP 网关MAC
cat /opt/cron/moniter_gw.sh
#!/bin/bash
# gw_ip=网关地址
# gw_hw=网关MAC
gw_ip=192.168.0.1
local_ip=192.168.0.45
local_hw= 00:14:78:07:23:00
if ping -c1 -w5 ${gw_ip} ; do
:
else
/usr/local/bin/send_arp ${local_ip} ${local_hw} ${gw_ip} ${gw_hw}
done
crontab :
*/2 * * * * /bin/bash /opt/cron/moniter_gw.sh
send_arp.c下载 。
Tags: ant arp , arp , ARP攻击 , ARP攻击解决办法 , send_arp
Filed under Linux , 软件介绍 | Comments (1)
2008-09-28
我们的/srv/分区相当的大,图片服务器的就更大了。
所以是不能允许对这个分区的文件进行(locate)索引的,即使系统使用的renice +19的方式运行,也是仍然是对系统资源的浪费。一来浪费CPU资源,二来浪费硬盘I/O,三,会使updatedb的数据库巨大,规划不当的话会使/var分区满掉(或者/分区满掉,假如var不是单独分区的话)。
使用cfengine更新了所有系统的配置文件,排除了对/srv分区的索引。
#/etc/updatedb.conf
PRUNEFS = “auto afs iso9660 sfs udf”
PRUNEPATHS = “/afs /media /net /sfs /tmp /udev /var/spool/cups /var/spool/squid /var/tmp /srv /mnt”
Tags: centos , Linux , locate , performance , updatedb
Filed under Linux , SHELL , 性能相关 | Comments (0)
2008-09-27
前两天买了两本书,其中一本《高性能网站建设指南》,看了一眼之后,便一发不可收拾,一直看到深夜三点,一口气看完。
对于系统管理员和前端开发、设计工程师来说,书中的技术非常实用。
作者在这本书中分享了14项需要丰富的实践经验才可以积累和获得的技巧,看得我激动不已。
第二天,发现公司技术部有N本这样的书,早上 博文视点 的人刚送过来的,说是和他们搞了个什么合作。世上就真有这么巧的事儿。
随便在公司的邮件列表里推荐了一下,结果已经有两个人拥有这本书,N个人好过,反应相当强烈,一致好评,于是维护给做系统管理和开发、设计的朋友们看看。
书封面写着“前端工程师技能精髓”,不过系统管理员看看也是相当有好处的,至少有三项,是跟后端服务器配置相关的。
笔记备忘一下书中技巧:
规则1:减少http请求
规则2:使用内容分发网络(CDN)
规则3:添加Expries头
规则4:压缩输出
规则5:将样式表放在顶站
规则6:将脚本放在底部
规则7:避免CSS表达式
规则8:使用外部JavaScript和CSS
规则9:减少DNS查询
规则10:简单JavaScript
规则11:避免重定向
规则12:移除重复脚本
规则13:配置Etag
规则14:使用Ajax可缓存
从网上,看到对此技巧的补充,将14条法规,扩展到22条,虽然吹毛求疵,但也算是精益求精(有人说系统管理人员和程序员都是完美主义者,对事情总是精益求精是有道理的),也整理如下:
规则15:Flush the header
规则16:Split static content Across Multiple Hostname
规则17:Reduce the size of cookies
规则18:Host static content on a Different Top-level Domain
规则19:Minify css
规则20:Use GET for XHR
规则21:Avoid Iframe
规则22:Optimize Images
Tags: high performance , performance
Filed under Linux | Comments (3)
2008-09-27
今天要将自己的备份,从一个ftp导到另一个ftp里去。还好可以登录其中一台服务器。
本来想使用lftp的mirror功能,无耐只能登录“local”,不能登录remote,而lftp的mput貌似依然不支持put目录。(谁知道有什么参数可以用来put目录?)
还好有wput可以使用。
然而在wput( wput /home/myname ftp://ftpusername:password@ip/myname )的时候,发现文件名、目录名中包含的空格和汉字,总是报错。
于是有了下面的方法:
$find /home/myname -type f >> ~/list.txt
$while read i ; do wput “$i” ftp://ftpusername:password@ip/myname ; done < ~/list.txt
这样就支持了空格,不再报错。shell内部的处理,还真是复杂。
Tags: wput , wput不支持汉字 , wput不支持空格 , wput支持汉字 , wput支持空格 , 汉字 , 空格
Filed under Linux , SHELL , 软件介绍 , 随便写写 | Comments (0)
2008-09-27
Tags: 神州七号
Filed under 其它技术 , 随便写写 | Comments (0)
2008-09-26
Firefox升级到3.0.2之后,发现原来保存的密码都不能用了,而且也不能重新保存……
找 木溪 帮忙,试了很多种方法,网上找了很久,终于找到问题:原来是3.0.2将存密码的文件编码由ANSI转换成了UTF-8,造成了编码错误。
解决办法,就是找到密码保存文件signons3.txt(在 系统盘:\Documents and Settings\xxxx\Application Data\Mozilla\Firefox\Profiles\xxxxx.default目录下),用常用的编辑器打开,另存为UTF-8编码覆盖原来的文件即可。
已经验证过,可行。
Tags: firefox , firefox 3.0.2 , 保存密码 , 密码 , 密码保存
Filed under Linux , 其它技术 , 软件介绍 | Comments (0)
2008-09-17
top:
* A: PID = Process Id
* E: USER = User Name
* H: PR = Priority
* I: NI = Nice value
* O: VIRT = Virtual Image (kb)
* Q: RES = Resident size (kb)
* T: SHR = Shared Mem size (kb)
* W: S = Process Status
* K: %CPU = CPU usage
* N: %MEM = Memory usage (RES)
* M: TIME+ = CPU Time, hundredths
b: PPID = Parent Process Pid
c: RUSER = Real user name
d: UID = User Id
f: GROUP = Group Name
g: TTY = Controlling Tty
j: P = Last used cpu (SMP)
p: SWAP = Swapped size (kb)
l: TIME = CPU Time
r: CODE = Code size (kb)
s: DATA = Data+Stack size (kb)
u: nFLT = Page Fault count
v: nDRT = Dirty Pages count
y: WCHAN = Sleeping in Function
z: Flags = Task Flags <sched.h>
* X: COMMAND = Command name/line
Flags field:
0×00000001 PF_ALIGNWARN
0×00000002 PF_STARTING
0×00000004 PF_EXITING
0×00000040 PF_FORKNOEXEC
0×00000100 PF_SUPERPRIV
0×00000200 PF_DUMPCORE
0×00000400 PF_SIGNALED
0×00000800 PF_MEMALLOC
0×00002000 PF_FREE_PAGES (2.5)
0×00008000 debug flag (2.5)
0×00024000 special threads (2.5)
0×001D0000 special states (2.5)
0×00100000 PF_USEDFPU (thru 2.4)
进程的优先级和nice级别
进程优先级是一个决定进程被CPU执行优先顺序的参数,内核会根据需要调整这个值。Nice值是一个对优先权的限制。进程优先级的值不能低于nice值。(nice值越低优先级越高)
进程优先级是无法去手动改变的,只有通过改变nice值去间接的调整进程优先级。如果一个进程运行的太慢了,你可以通过指定一个较低的nice值去为它分配更多的CPU资源。当然,这意味着其他的一些进程将被分配更少的CPU资源,运行更慢一些。Linux支持nice值的范围是19(低优先级)到-20(高优先级),默认的值是0。如果需要改变一个进程的nice值为负数(高优先级),必须使用su命令登陆到root用户。下面是一些调整nice值的命令示例,
以nice值-5开始程序xyz
#nice –n -5 xyz
改变已经运行的程序的nice值
#renice level pid
将pid为2500的进程的nice值改为10
#renice 10 2500
vmstat:
·process(procs)
r:等待运行时间的进程数量
b:处在不可中断睡眠状态的进程
w:被交换出去但是仍然可以运行的进程,这个值是计算出来的
·memoryswpd:虚拟内存的数量
free:空闲内存的数量
buff:用做缓冲区的内存数量
·swap
si:从硬盘交换来的数量
so:交换到硬盘去的数量
·IO
bi:向一个块设备输出的块数量
bo:从一个块设备接受的块数量
·system
in:每秒发生的中断数量, 包括时钟
cs:每秒发生的context switches的数量
·cpu(整个cpu运行时间的百分比)
us:非内核代码运行的时间(用户时间,包括nice时间)
sy:内核代码运行的时间(系统时间)
id:空闲时间,在Linux 2.5.41之前的内核版本中,这个值包括I/O等待时间;
wa:等待I/O操作的时间,在Linux 2.5.41之前的内核版本中这个值为0
iostat:
%user:user level(应用)的CPU占用率情况
%nice:加入nice优先级的user level的CPU占用率情况
%sys:system level(内核)的CPU占用情况
%idle:空闲的CPU资源情况
Device:块设备名
Tps:设备每秒进行传输的数量(每秒的I/O请求)。多个单独的I/O请求可以被组成一个传输操作,因为一个传输操作可以是不同的容量。
Blk_read/s, Blk_wrtn/s:该设备每秒读写的块的数量。块可能为不同的容量。
Blk_read, Blk_wrtn:自系统启动以来读写的块设备的总量。
块可能为不同的容量。块的大小一般为1024、2048、4048byte。可通过tune2fs或dumpe2fs获得:
# tune2fs -l /dev/hda1|grep ‘Block size’
Block size: 4096
# dumpe2fs -h /dev/hda1|grep ‘Block size’
dumpe2fs 1.35 (28-Feb-2004)
Block size: 4096
Tags: bash , FreeBSD , iostat , Linux , man top , SHELL , top , vmstat
Filed under FreeBSD , Linux , SHELL | Comments (1)
2008-09-16
9月11号,我们的新版后台v5上线 了。
说实话,之前,我们技术部的同学们战斗了无数个工作日、非工作日。虽然内测的时候,测出来不少问题,公测的时候,也有不少的bug,但是对于我们来说,已经是个喜人的成果。
先看一下新后台的载图:
新后台一上线,网上的评论立刻蜂拥而至,褒贬不一。整体是赞扬多于批评吧!我们依然保持“绿色”、“简洁”的风格,”清新”而又不失丰富。
Tags: blogbus , blogbus v5
Filed under 随便写写 | Comments (1)
2008-09-16
Nikon D700
ThinkPad T400
Nikon D80
UMPC
google_phone_by_dogorgod
Gphone
trek
trek
法拉利概念车
法拉利概念车
现代机器人
现代机器人
现代机器人
现代机器人
Tags: 电子产品
Filed under 其它技术 , 图片 , 随便写写 | Comments (0)
2008-09-15
#echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
Tags: arp , cluster node , 集群节点
Filed under Linux | Comments (0)