第一、日志轮换 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) |