Linux日志清理工具:Logclean-ng编译
2015-11-26 21:43
555 查看
《黑客大曝光》在攻击Unix章节,有提到linux日志清理工具Logclean-ng,给的评价也挺高的。正好手头上有需要,就下载下来玩一下。
开始以为按照说明编译就可以了,后来发现其实有个小坑的。在这里记录一下,可能有些朋友会用得到。
Logclean-ng的源码下载地址:https://packetstormsecurity.com/files/46742/logclean-ng_1.0.tar.gz.html。Logclean-ng工具建立在一个用来简化编写日志清理程序的函数库上,这个函数库是Liblogclean。在后续编译Logclean-ng之前,要先编译Liblogclean这个库。
我在kali虚拟机(32位和64位的需要修改的地方略有不同)上演示一下。
32位系统演示
首先进入Liblogclean文件夹,编译Liblogclean这个库,来看下可能遇到的错误:
![](http://img.blog.csdn.net/20151126195523194)
从图中可以看到(注意红框里的内容),是某个结构体中的成员变量有问题。先看下logs_wtmp.c中出错的代码,发现引用了头文件utmp.h。我们来看下linux源码中对应头文件该结构体的定义。
utmp.h文件在/usr/include下面,打开发现如下图所示:
![](http://img.blog.csdn.net/20151126195524048)
接下来找到bits/utmp.h(在/usr/include/i386-linux-gnu/bits文件夹下面),查看结构体utmp的定义如下所示:
![](http://img.blog.csdn.net/20151126195525155)
注意红色下划线的部分,结构体这个变量的定义与Liblogclean库中的定义有差别,修改一下即可。这是因为版本更新的原因。后续在64位系统下出现编译问题也有部分是因为版本不兼容导致的。
将logs_wtmp.c源代码中的save.__unused修改为save.__glibc_reserved之后,再次编译Liblogclean,即可编译成功。
接下来返回到logclean-ng_1.0文件夹下面,编译logclean-ng_1.0。如下图所示,已经编译成功:
![](http://img.blog.csdn.net/20151126195526356)
运行一下试试:
![](http://img.blog.csdn.net/20151126195527386)
32位下已经OK了,继续编译64位下的logclean-ng吧。
64位系统演示
先按照32位系统下编译Liblogclean这个库的方法,来看下可能遇到的错误:
![](http://img.blog.csdn.net/20151126204115886)
按照提示,我们修改一下Makefile文件中的编译参数,在CFLAGS中加入-fPIC。经过我的测试,凡是涉及到编译的地方,都需要在Makefile中的CFLAGS加入-fPIC这个编译选项。涉及到ncrypt和libmix中的Makefile文件。进入libmix文件夹,首先执行make clean,然后执行make,可以发现已经编译成功,在目录下生成了所需要的动态链接库。然后返回上级目录,编译Liblogclean。记得参照32位编译所描述的将logs_wtmp.c源代码中的save.__unused修改为save.__glibc_reserved之后再进行编译。发现出现如下错误:
![](http://img.blog.csdn.net/20151126204117243)
为了解决这个问题,需要进行几步操作之后再进行编译。为何这样做在这里有说明。
编译之前进行如下操作:
编译成功后再修改回来:
最后一步和之前32位编译的类似。好了,到此就编译成功了。如下图所示:
![](http://img.blog.csdn.net/20151126204118929)
继续运行一下:
![](http://img.blog.csdn.net/20151126204120268)
32位和64位编译该工具的步骤就到此为止了。至于logclean-ng如何使用,可以看help说明,也可以参考《黑客大曝光》中的说明。
开始以为按照说明编译就可以了,后来发现其实有个小坑的。在这里记录一下,可能有些朋友会用得到。
Logclean-ng的源码下载地址:https://packetstormsecurity.com/files/46742/logclean-ng_1.0.tar.gz.html。Logclean-ng工具建立在一个用来简化编写日志清理程序的函数库上,这个函数库是Liblogclean。在后续编译Logclean-ng之前,要先编译Liblogclean这个库。
我在kali虚拟机(32位和64位的需要修改的地方略有不同)上演示一下。
32位系统演示
首先进入Liblogclean文件夹,编译Liblogclean这个库,来看下可能遇到的错误:
从图中可以看到(注意红框里的内容),是某个结构体中的成员变量有问题。先看下logs_wtmp.c中出错的代码,发现引用了头文件utmp.h。我们来看下linux源码中对应头文件该结构体的定义。
utmp.h文件在/usr/include下面,打开发现如下图所示:
接下来找到bits/utmp.h(在/usr/include/i386-linux-gnu/bits文件夹下面),查看结构体utmp的定义如下所示:
注意红色下划线的部分,结构体这个变量的定义与Liblogclean库中的定义有差别,修改一下即可。这是因为版本更新的原因。后续在64位系统下出现编译问题也有部分是因为版本不兼容导致的。
将logs_wtmp.c源代码中的save.__unused修改为save.__glibc_reserved之后,再次编译Liblogclean,即可编译成功。
接下来返回到logclean-ng_1.0文件夹下面,编译logclean-ng_1.0。如下图所示,已经编译成功:
运行一下试试:
32位下已经OK了,继续编译64位下的logclean-ng吧。
64位系统演示
先按照32位系统下编译Liblogclean这个库的方法,来看下可能遇到的错误:
按照提示,我们修改一下Makefile文件中的编译参数,在CFLAGS中加入-fPIC。经过我的测试,凡是涉及到编译的地方,都需要在Makefile中的CFLAGS加入-fPIC这个编译选项。涉及到ncrypt和libmix中的Makefile文件。进入libmix文件夹,首先执行make clean,然后执行make,可以发现已经编译成功,在目录下生成了所需要的动态链接库。然后返回上级目录,编译Liblogclean。记得参照32位编译所描述的将logs_wtmp.c源代码中的save.__unused修改为save.__glibc_reserved之后再进行编译。发现出现如下错误:
为了解决这个问题,需要进行几步操作之后再进行编译。为何这样做在这里有说明。
编译之前进行如下操作:
cd /usr/lib/gcc/x86_64-linux-gnu/4.9
cp crtbeginT.o crtbeginT.orig.o
cp crtbeginS.o crtbeginT.o
编译成功后再修改回来:
cd /usr/lib/gcc/x86_64-linux-gnu/4.9
cp crtbeginT.orig.o crtbeginT.o
rm crtbeginT.orig.o
最后一步和之前32位编译的类似。好了,到此就编译成功了。如下图所示:
继续运行一下:
32位和64位编译该工具的步骤就到此为止了。至于logclean-ng如何使用,可以看help说明,也可以参考《黑客大曝光》中的说明。
相关文章推荐
- 使用Centos6.3-32bit + vsftpd 来搭建FTP服务器
- Linux_ISCSI服务器
- Linux内核笔记--内存管理之用户态进程内存分配
- centos7安装vncserver
- 基于int的Linux的经典系统调用实现
- linux应用编程笔记(12)信号量详解及互斥编程
- Perf -- Linux下的系统性能调优工具
- centos 部署内容
- linux 远程工具
- Linux Performance Analysis and Tools(Linux性能分析和工具)
- linux python pip 安装
- syslinux
- 安装完成ubuntu系统后的基本的相关配置---Linux总结笔记
- Linux后台运行过程查看
- 原来今天是感恩节-Linux基础继续&MySQL和PHP
- pxelinux.0
- 将Centos的yum源更换为国内的阿里云源
- linux 根据当前日期获取上个季度的第一天和最后一天
- Linux 根据当前日期获取上个月的第一天和最后一天
- 【鸟哥的linux私房菜-学习笔记】DHCP运作原理