第一、日志轮换
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
日志轮换/日志管理/VSFTP服务,尚观Day09
最新推荐文章于 2021-05-09 06:57:15 发布