1问题描述
昨天刚向实验室的同学公开一个movie帐户,其实是想大家都能telnet,或ssh上,有空玩玩。没想到有人就用这个帐号在ftp上删除了文件。
首先vsftp默认只有上下传记录,根本没有本地用户的删除或建目录的操做。这个在lastlog里也不会有痕迹。所以对公开账号千万不能同时是本地账号。如果是本地账号,那也要控制该账号确定文件的删除修改权限。不要让该用户对其他文件有破坏性权限。这种控制会积累很多管理漏洞,所以最好就是给虚拟用户,或者ftp只能使用匿名账号(当然,这个管理员可以灵活控制自己的使用权限)。
因此在开放用户账号时要考虑日志的决定存在,不能出现这种漏空监控。
出现这种问题的关键就是日志与服务没有绝对一致。比如ftp本来只是用来上传或下载,这里却还给了管理文件的权限,而vsftp对管理文件的却没有监控,太失败了。
2 相关知识
查阅vsftp的参数手册才知道是自己太无知。
vsftpd与log有关的选项:
vsftpd_log_file
xferlog_enable
xferlog_std_format
xferlog_file
dual_log_enable
syslog_enable
log_ftp_protocol
no_log_lock
这里主要要到下面几个参数控制
log_ftp_protocol
如果启用, 假若选项 xferlog_std_format 没有启用, 所有的 FTP 请求和应答都会被记录. 此选项将对调试很有用.
默认: YES
dual_log_enable
如果启用, 将生成两个相似的日志文件, 默认在 /var/log/xferlog 和 /var/log/vsftpd.log 目录下. 前者是 wu-ftpd 类型的传输日志, 可以用于 标准工具分析. 后者是 vsftpd 自己类型的日志.
xferlog_enable
如果启用, 将会维护一个日志文件, 用于详细记录上载和下载. 默认情况下, 这个日志文件是 /var/log/vsftpd.log. 但是也可以通过配置文件中的 vsftpd_log_file 选项来指定.
默认: NO(但是在示例设置中启用了这个选项)
xferlog_std_format
如果启用, 传输日志文件将以标准 xferlog 的格式书写, 如同 wu-ftpd 一样. 这可以用于重新使用传输统计生成器. 然而, 默认格式更注重可读性. 此格式的日志文件默认为 /var/log/xferlog, 但是您也可以通过 xferlog_file 选项来设定.
默认: NO
3 解决方法
这里只给出日志这块的参数设置
##################log settings###################
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# You may override where the log file goes if you like. The default is shown
# below.
xferlog_file=/var/log/xferlog
#
#log in two files /var/log/xferlog and /var/log/vsftpd.log
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
#log time setting
use_localtime=YES
#
###################end of log####################
4 结果
Xferlog内容如下
---------------------------------------------------------------------------------------------------------------------
Wed Apr 18 06:41:29 2007 1 202.116.130.248 0 /pub/upload/kernel.rpm b _ i a root ftp 0 * i
Wed Apr 18 06:43:27 2007 1 202.116.130.248 0 /pub/sun b _ o a root ftp 0 * c
Tue May 1 15:03:37 2007 1 202.116.130.242 45662 /mnt/d/movie/linux partition.JPG b _ i r movie ftp 0 * c
Vsftpd.log内容如下
----------------------------------------------------------------------------------------------------------------------
Tue May 1 15:03:21 2007 [pid 23969] CONNECT: Client "202.116.130.242"
Tue May 1 15:03:21 2007 [pid 23968] [movie] OK LOGIN: Client "202.116.130.242"
Tue May 1 15:03:37 2007 [pid 23970] [movie] OK UPLOAD: Client "202.116.130.242", "/mnt/d/movie/linux partition.JPG", 45662 bytes, 824.60Kbyte/sec
Tue May 1 15:05:12 2007 [pid 23970] [movie] OK DELETE: Client "202.116.130.242", "/mnt/d/movie/linux partition.JPG"
这样xferlog则专门记录上下传信息,对ftp而言,这些信息是有绝对统计意义的。而系统管理员,有时为了满足不同用户的需求,可能会开发一些特殊的账号,怎么以ftp登录从系统的角度来管理监控,vsftpd.log就可以详细供证了。
不过,我还是建议服务的专一性,这样才能减轻管理负担。
对于日志的分析----
eagerlinuxer
《
用
AWStats
对
VSFTP
日志进行统计》。先看这个图,估计你就有动力去做了。
http://awstats.sourceforge.net/awstats.ftp.html
如果没有特别要求,可以用sed和awk结合使用,比如
sed -n '/[a]{1} _ [i]{1}/p' xferlog过滤结果后再针对ip过滤等,熟练使用sed,awk可以对数据进行很多有用的处理和分析。
参考
1etony vsftpd.conf 联机手册 http://fanqiang.chinaunix.net/app/ftp/2005-06-24/3337.shtml
3man vsftpd.conf----推荐
当同时对一个目录或文件有多种服务控制时,就要考虑服务之间的权限复核,即是一种服务的权限对于同一账号不能有不同访问权限。首先目录或文件的自身权限是权限控制的基础,其次不同服务自身还可以加载访问权限(一般相对原始权限提高)。