当前位置: > Linux服务器 > ftp >

日志轮换/日志管理/VSFTP服务

时间:2015-04-21 19:52来源:www.it.net.cn 作者:IT网
第一、日志轮换
    logrotate 日志轮换的工具
    日志存放的地方: /var/log/*

    常见的日志文件:
        /var/log/messages
        /var/log/wtmp
        /var/log/btmp

    轮换工具的配置文件: /etc/logrotate.conf

/var/log/wtmp {   <---需要轮换的日志的据对路径
    monthly    <---采用每个月轮换一次的设定
    minsize 1M  <----日志轮换的时候日志文件必须不少于1M,尽管轮换的时间到了,如果文件达不到1M也不去轮换
    create 0664 root utmp  <----新建的日志文件权限是什么?拥有者是谁,组是谁?
    rotate 1
}

    size  512k   <---尽管轮换的时间还没到,如果日志文件达到512kb,也进行轮换

###########################################################
2、要求对系统的/var/log/btmp日志进行日志轮换的设定要求:
        a、轮换的周期为1天
        b、轮换的版本数为2,也就是 你最多只能看到btmp btmp.1 btmp.2
        c、新日志文件属于root:utmp拥有,权限为660
        d、新日志轮换之后,在/var/log/message上记录一条日志记录,标题为“btmp logrotate”,日志内容为“ all rotation successfully”
修改文件 /etc/logrotate.conf
增加
/var/log/btmp
{
    daily
    create 0660 root utmp
    rotate 2
}

修改文件/etc/logrotate.d/syslog
增加
/var/log/btmp
{
    sharedscripts
    postrotate
        logger -t "btmp logrotate" "all rotation successfully! "
    endscript
}

############################################################

测试的例子:

/var/log/wtmp {
    monthly
    size 20k
    create 0664 mary utmp
    rotate 2
}

修改后,手工触发:
logrotate /etc/logrotate.conf
logrotate -f /etc/logrotate.conf 

验证:ll /var/log/wtmp*



vim /etc/logrotate.d/syslog


/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
    sharedscripts  <----  执行脚本的开始标志
    postrotate   <---日志轮换之后需要执行的脚本
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
        /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript   <---与postrotate一对
}


如果是轮换前执行脚本:
    prerotate / endscript



第二、日志管理

    syslogd 
    软件包:sysklogd

    配置文件:
    /etc/syslog.conf  <---syslogd的主配置文件,存放的是syslogd记录日志的规则

    /etc/sysconfig/syslog  <---保存一些启动的参数

    字段的配置格式:设备.日志级别    动作


设备:
auth,     <---pam_pwd 产生的日志
authpriv  <---包括权限信息、用户登录的一些信息
cron    <---负责管理cron,at等日志信息的设备
daemon  <---xinetd 产生的日志
kern    <---内核产生的日志
lpr    <---打印服务产生的日志
mail    <---邮件产生日志
mark    <---syslogd内部功能,主要产生一个时间chuo
news    <---新闻组服务产生的日志
security (same as auth),  
syslog  <---syslogd本身产生的日志信息
user   <---用户程序产生的日志信息
uucp   <---文件拷贝服务产生的日志
local0 through local7.  <---程序自定义的日志设备

日志级别:

debug  <---产生的日志信息是最多一个
info    <---一般信息的日志,最常用的
notice    <---最具有重要性的普通条件的信息
warning <---预警的信息
warn (same as  warning)
err    <----阻止某个功能模块或者子系统不能正常工作的信息
error (same as err),
crit    <----阻止整个系统或者整个软件不能正常的信息
alert   <----需要马上修改的信息
emerg    <----内核崩溃等严重错误
panic (same as emerg).
none    <---什么也不记录
    日志的级别 从上往下级别从低到高涨,级别越低记录的信息越多,
    级别底的日志信息包括级别高的信息

#会记录 uucp,news两个设备产生的crit级别,以及包括crit更高级别的信息(alert,emerg)
uucp,news.crit                                          /var/log/spooler


#所以设备产生的info级别的信息,但除了mail,authpriv,cron的所有的记录以外,都记录在messages
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
      ^   


# authpriv设备所有级别的日志信息都记录到/var/log/secure
authpriv.*                                              /var/log/secure


# 用户自定义的设备
local7.*                                                /var/log/boot.log


#只包括mail设备产生的info级别的日志,但不包括任何级别的日志都记录到/var/log/mymail.log
mail.=info             /var/log/mymail.log

#把kern设备产生的info级别,以及包括info级别以上的级别(notice .... emerg)都记录,但除了err级别的日志
kern.info;kern.!err          /var/adm/kernel-info


例子:
vim /etc/ssh/sshd_config   
#SyslogFacility AUTHPRIV
SyslogFacility LOCAL6

vim /etc/syslog.conf  《--添加以下一行
local6.*                                                /var/log/mysshd.log

重启两个服务:
service syslog restart
service sshd restart



动作字段:

    /filename.log  <---常规的日志文件
    username    <---用户名,例如root,那么日志就会现是在root登录的所有终端,多个用户名用逗号分隔
    terminal   《--例如写成 /dev/tty2  <---
    @hostname   <---主机名字,把日志发送到远程的日志服务器

日志测试命令:
[root@dns ~]# logger -t "test_log" "this is log content! "  《--通常用在shell脚本
[root@dns ~]# cat /var/log/messages
Nov 30 13:07:54 dns test_log: this is log content!
日期        主机名 日志的标题    日志的内容


远程日志服务:

    vim /etc/sysconfig/syslog

    服务端的配置:
-m 是够开启mark日志信息 ,-m 0 就是关闭这个功能, -m 120 就是每隔120分钟就产生一个时间信息
-r 是否允许接受远程发送过来的日志信息
-x 是否把IP转换成域名,-x不解析IP地址

    启用接收远程发送过来的日志:
SYSLOGD_OPTIONS="-r -m 0"

shell> service syslog restart


    日志客户端的配置:
vim /etc/syslog.conf
*.*             @dns.upl.com     《---把客户端的所有设备(除了mark外)的所有级别的日志都发送到dns.upl.com的远程服务器上

vim /etc/hosts
10.1.1.20        dns.upl.com

service syslog restart   





第三、vsftp服务

1、介绍
    ftp:文件传输协议
    两种模式:
        主动模式:默认情况下,ftp开了21端口,用来接受控制命令,服务器会用20端口主动去连接客户端的一个>1024的端口,进行数据传输
        被动模式:ftp开放21端口,用来接受控制命令,进行数据传输的时候,客户端会告诉服务器打开一个>1024的端口,然后客户端主动去连接服务器

    主动模式的缺点:如果客户端工作在内部网络,ftp服务器就无法直接与客户端进行数据传输


    软件包: yum install vsftpd -y

    主配置文件: /etc/vsftpd/vsftpd.conf





验证主动模式:

    service vsftpd restart
第一终端:
[root@dns vsftpd]# ftp 10.1.1.20
Connected to 10.1.1.20.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (10.1.1.20:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> passive
Passive mode off.
ftp> ls
。。。。。

第二个终端:
[root@dns ~]# netstat -nt | grep :20 | grep TIME_W
tcp        0      0 10.1.1.20:20                10.1.1.20:50783             TIME_WAIT  
                  ^证明了服务器用了20端口发送数据



验证被动模式:

第一个终端:
[root@dns vsftpd]# telnet 10.1.1.20 21
Trying 10.1.1.20...
Connected to dns.upl.com (10.1.1.20).
Escape character is '^]'.
220 (vsFTPd 2.0.5)
USER ftp
331 Please specify the password.
PASS
230 Login successful.
PASV
227 Entering Passive Mode (10,1,1,20,204,127)


第二个终端:
[root@dns ~]# nc -p 7889   10.1.1.20 $((204*256+127))
            参数说明 : -p 打开本地一个没有使用的>1024的端口用于建立连接
                    10.1.1.20就是你要与它建立连接的目标机器
                    $((204*256+127)) 计算出你要连接10.1.1.20的哪个端口
       


第三个终端:验证服务器的确监听了$((204*256+127))这个端口
[root@dns ~]# netstat -ntl | grep 52351
tcp        0      0 10.1.1.20:52351             0.0.0.0:*                   LISTEN


第一个终端:

LIST   <---发送一个列表指令
150 Here comes the directory listing.
226 Directory send OK.


第二个终端: 看到ftp服务器传过来的列表数据

-rwxr-xr-x    1 0        0             462 Sep 14 08:52 shell_1.txt
-rw-r--r--    1 0        0             453 Sep 14 08:47 shell_1.txt~



2、配置文件参数的说明:

shell> cat vsftpd.conf | grep -v ^# | grep -v ^$
anonymous_enable=YES   <---允许匿名登录
local_enable=YES    <---yes就允许本地用户登录
write_enable=YES    <---允许本地用户登录之后拥有写的权限
local_umask=022        <---建立文件或者目录的权限掩码
dirmessage_enable=YES    <---是否启用目录说明 .message
xferlog_enable=YES    <---是否记录上传和下载的日志
connect_from_port_20=YES    <---设定ftp工作模式的为主动模式
xferlog_std_format=YES    <---日志采用标准格式
listen=YES        <---yes ,代表采用stand_alone的形式启动,no就是把监听的任务托管给xinetd的服务
pam_service_name=vsftpd    <---是否支持pam模块
userlist_enable=YES    <---是否启动用户列表功能
tcp_wrappers=YES    <---是否支持tcpwraper


3、配置实例

    实例1:实现匿名登录只允许下载
        涉及的参数:
            anonymous_enable=YES       

        直接安装软件包,启动vsftpd服务就行了
        service vsftpd restart
       
        验证: ftp 10.1.1.20
            使用ftp匿名帐号,这个ftp匿名帐号可以在/etc/passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
            《---默认匿名登录之后,就已经锁定在/var/ftp目录下
            <---注意: /sbin/nologin这个默认shell不允许用户登录系统,包括本地登录,还有远程登录,但允许ftp登录
            <---/bin/false <---不能远程登录,本地登录,也不能ftp登录,对匿名帐号不生效
   

    实例2:实现匿名帐号上传的功能

        涉及的参数:
            anonymous_enable=YES
            anon_upload_enable=YES <---允许匿名上传普通文件
            anon_mkdir_write_enable=YES <--允许匿名创建文件夹

    重启服务,登录验证上传功能,你会发现上传失败!!!
       
[root@dns vsftpd]# ftp 10.1.1.20
Connected to 10.1.1.20.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (10.1.1.20:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put /etc/fstab        
local: /etc/fstab remote: /etc/fstab
227 Entering Passive Mode (10,1,1,20,40,149)
553 Could not create file.    <----上传失败的原因

原因:
    1、/var/ftp目录,对于ftp这个帐号没有写的权限
[root@dns pub]# ll -d /var/ftp
drwxr-xr-x 3 root root 4096 09-14 16:53 /var/ftp

    假如你把/var/ftp修改权限
    chmod 777 /var/ftp  之后,你发现连登录也不行

    结论:ftp匿名登录的目录不能具有777的权限,所以需要修改回去755
        chmod 755 /var/ftp

解决办法: chmod 777 /var/ftp/pub
        在匿名登录的那个目录下创建一个子目录,并给777权限


    验证: cd pub
        put /etc/vsftpd/vsftpd.conf /pub/vsftpd.conf
150 Ok to send data.
226 File receive OK.
4448 bytes sent in 6.8e-05 seconds (6.4e+04 Kbytes/s)  《---说明成功了

    尝试下载刚上传的文件vsftpd.conf,你会发现下载失败. 原因和解决办法看例子3
ftp> get vsftpd.conf
local: vsftpd.conf remote: vsftpd.conf
227 Entering Passive Mode (10,1,1,20,124,248)
550 Failed to open file.

    例子3:允许匿名下载刚上传的文件

    解决办法1:
        接着例子2,多添加一个参数
anon_world_readable_only=NO  <---允许匿名下载不是全世界都能读的文件
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
   
    解决办法2:
        接着例子2,添加一个参数:
        anon_umask=022    ---》 如果是这样些的话,上传文件后,权限自动为644
        anon_umask=0222        ——》 444,别忘了前面的那个0   

anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022


思考题: man vsftpd.conf 看看哪个参数能够允许匿名帐号删除文件

    例子4:实现普通帐号登录  (默认就有这个功能)
local_enable=YES
write_enable=YES
local_umask=022       



226 Directory send OK.
ftp> cd /etc/
250 Directory successfully changed.
ftp> get passwd
local: passwd remote: passwd
227 Entering Passive Mode (10,1,1,20,57,131)
150 Opening BINARY mode data connection for passwd (2685 bytes).
226 File send OK.
2685 bytes received in 0.00019 seconds (1.4e+04 Kbytes/s)  <--登录之后,可以随便切换工作目录,默认登录之后是用户的家目录


    例子5:限制普通用户登录的活动范围,只让他在登录目录下活动
在例子4的基础上,添加一个参数:

    chroot_local_user=YES


    例子6:禁用某个普通帐号登录ftp
   
    解决方法1:
        usermod -s /bin/false tom
[root@dns test]# ftp 10.1.1.20
Connected to 10.1.1.20.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (10.1.1.20:root): tom
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.

    解决方法2:
        确定参数: userlist_enable=YES

        把不允许登录的帐号卸载/etc/vsftpd/user_list
            每行一个

        这里的例子就是在最后一行添加tom



    如果我先把原来的user_list变成一个白名单,也就是出现在这个文件里的用户名才允许登录ftp,这时候就需要修改参数:
        userlist_deny=NO  《--默认值是YES,YES就代表 user_list是黑名单



    例子7:统一普通用户登录之后都在同一个目录

    local_root=/ftp
        为了让普通帐号能够上传,给予适当的权限 chmod 777 /ftp

    如果是想更改匿名用户的默认登录目录:
        方法1: usermod -d /ftp ftp
        方法2: anon_root=/ftp


    例子8:让某些用能够切换到别的工作目录,而别的用户都锁定在登录目录

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list  《--默认文件不存在

vim  /etc/vsftpd/chroot_list  《--把允许切换工作目录的帐号名字写在里面,一行一个
tom

service vsftpd restart
ftp 10.1.1.20
ftp> pwd
257 "/ftp"
   
    例子9: 记录上传和下载的具体日志
xferlog_std_format=YES
xferlog_file=/var/log/vsftpd.log
(责任编辑:IT)
------分隔线----------------------------