免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: gunguymadman
打印 上一主题 下一主题

一个在Linux系统下的入侵响应案例 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-09-27 14:00 |只看该作者
就是不错!加精吧

牛人!!!

论坛徽章:
0
12 [报告]
发表于 2007-09-27 14:19 |只看该作者
好贴,加  jing ba !

论坛徽章:
0
13 [报告]
发表于 2007-09-27 14:25 |只看该作者
顶一下
D
D
D

论坛徽章:
0
14 [报告]
发表于 2007-09-27 16:29 |只看该作者

一个文件完整性检查的好脚本

讲到安全,送大家一个文件完整性检查的脚本。
此脚本用于可保文件内容的md5校验和及以文件stat信息以及与生成的校验数据进行对比,找好更动过的文件。脚本如下:
#!/usr/bin/perl

#

#用法:

#genmd5.pl --basedir=/etc --chksumfile=etc-chksum.dat

#genmd5.pl --basedir /private/etc --compare

use strict;

use Digest::MD5;

use IO::File;
use File::Find ();

use Getopt::Long;

#设置默认值

my $chksumfile = 'chksums.dat';
my $compare = 0;
my $basedir = '/etc';

use vars qw/*name *dir *prune/;
*name   = *File::Find::name;
*dir    = *File::Find::dir;
*prune  = *File::Find::prune;

GetOptions("chksumfile=s" => \$chksumfile,
           "compare" => \$compare,
           "basedir=s" => \$basedir);

my $chksumdata = {};

if ($compare)
{
    loadchksumdata($chksumfile);
}

my $outfile = '';

if (!$compare)
{
    $outfile = IO::File->new($chksumfile,"w");
}

File::Find::find({wanted => \&wanted}, $basedir);

if ($compare)
{
    foreach my $file (keys %{$chksumdata})
    {
        print STDERR "Couldn't find $file, but have the info on record\n";
    }
}

sub loadchksumdata
{
    my ($file) = @_;

    open(DATA,$file) or die "Cannot open check sum file $file: $!\n";
    while(<DATA>)
    {
        chomp;
        my ($filename,$rest) = split(/:/,$_,2);
        $chksumdata->{$filename} = $_;
    }
    close(DATA);
}

sub wanted {
    next unless (-f $name);

    my $fileinfo = genchksuminfo($name);

    if ($compare)
    {
        if (exists($chksumdata->{$name}))
        {
            if ($chksumdata->{$name} ne $fileinfo)
            {
                print STDERR "Warning: $name differs from that on record\n";
                gendiffreport($chksumdata->{$name}, $fileinfo);
            }
            delete($chksumdata->{$name});
        }
        else
        {
            print STDERR "Warning: Couldn't find $name in existing records\n";
        }
    }
    else
    {
        printf $outfile ("%s\n",$fileinfo);
    }
}

sub gendiffreport
{
    my ($orig,$curr) = @_;

    my @fields = qw/filename chksum device inode mode nlink uid gid size mtime ctime/;

    my @origfields = split(/:/,$orig);
    my @currfields = split(/:/,$curr);

    for(my $i=0;$i<scalar @origfields;$i++)
    {
        if ($origfields[$i] ne $currfields[$i])
        {
            print STDERR "\t$fields[$i] differ; was $origfields[$i],
                             now $currfields[$i]\n"
;
        }
    }

}

sub genchksuminfo
{
    my ($file) = @_;

    my $chk = Digest::MD5->new();

    my (@statinfo) = stat($file);

    $chk->add(@statinfo[0,1,2,3,4,5,7,9,10]);
    $chk->addfile(IO::File->new($file));
    return sprintf("%s:%s:%s",
                   $file,$chk->hexdigest,
                   join(':',@statinfo[0,1,2,3,4,5,9,10]));
}

用以下命令生成校验数据:
[root@supersun securety]# ./getsum.pl --basedir=/etc/ --chksumfile=etc-chksum.dat
etc-chksum.dat格式如下:
/etc/bluetooth/hcid.conf:c3fb848b5e2f57e3cd65ecd8dd766724:769:1627930:33188:1:0:0:1153336356:1163469800
/etc/bluetooth/pin:81bdf50f2025f988490024cfbd36ffb8:769:1627931:33152:1:0:0:1153336356:1163469800
校验文件:
[root@supersun securety]# ./getsum.pl --basedir=/etc --compare --chksumfile=etc-chksum.dat
Warning: /etc/fstab differs from that on record
        chksum differ; was 253f53fef12b9e6fa7bc2cb3556427de,
                             now a8506e1f2ff5e5dcb08d93b64b1be235
        inode differ; was 1629160,
                             now 1627820
        size differ; was 1187075582,
                             now 1190012212
        mtime differ; was 1187075582,
                             now 1190012212
原文请参见:http://www.ibm.com/developerworks/aix/library/au-satsystemvalidity/index.html
                                                                                           Tags: 系统管理 linux perl 文件完整性  校验

[ 本帖最后由 coldrainsunc 于 2007-9-27 16:34 编辑 ]

论坛徽章:
0
15 [报告]
发表于 2007-09-27 16:34 |只看该作者
记得安装模块啊:
cpan Digest::MD5;

论坛徽章:
0
16 [报告]
发表于 2007-09-27 18:21 |只看该作者
写的好棒

论坛徽章:
0
17 [报告]
发表于 2007-09-28 14:51 |只看该作者
鼎一下楼主~~~~~~~

论坛徽章:
0
18 [报告]
发表于 2007-10-17 11:09 |只看该作者
又是一个被蠕虫给做掉的倒霉蛋

论坛徽章:
0
19 [报告]
发表于 2007-12-24 17:14 |只看该作者
恩,不错,希望以后多一些这样的实际案例文章...

论坛徽章:
0
20 [报告]
发表于 2007-12-29 23:27 |只看该作者

强人哪
好好学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP