日志管理、FTP、NFS、samba服务与数据同步

1、描述rsyslog日志服务,并提供带web展示的日志服务器

syslog是日志收集存储系统,负责记录遵守此服务的内核、程序的日志信息。可以理解为编年体的日志记录信息,一般记录为:“日期时间,主机,进程:事件”。syslog不仅可以记录本地的系统日志,也可以通过tcp, udp协议记录远程主机的程序日志信息。

syslog:系统日志,是一种服务,有两个进程
syslogd:记录应用程序相关的日志
klogd:记录相关的日志

rsyslog:是syslog的升级版,使用多线程并发记录本地或远程日志,支持存储日志信息在MySQL,PGSQL, Oracle等RDBMS中。同时拥有强大的过滤器功能,可以对日志中任意内容进行过滤。

rsyslog是CentOS 6以后的系统使用的日志系统,与之前的syslog日志系统相比,具有以下优点:
支持多线程
支持TCP、SSL、TLS、RELP等协议
强大的过滤器,可实现过滤日志信息中的任意部分
支持自定义输出格式
适用于企业级别日志记录需求
模块化

[root@localhost yum.repos.d]# yum -y install mariadb-server         #准备数据库
MariaDB [(none)]> grant all on Syslog.* to 'loguser'@'192.168.79.%' identified by 'sigeling';       #进行授权,使对应主机可以使用loguser远程访问Syslog的所有内容。Syslog表是rsyslog-mysql软件包中的sql脚本生成的

[root@centos7 ~]# yum -y install rsyslog-mysql.x86_64       #安装rsyslog-mysql
[root@centos7 ~]# mysql -uloguser -h192.168.79.47 -psigeling < /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql                     #远程导入sql脚本,生成Syslog库和对应的表
[root@centos7 ~]# vim /etc/rsyslog.conf
#### MODULES ####
$Modload ommysql                #支持mysql模块
$ModLoad imtcp                      #支持tcp协议通信
$InputTCPServerRun 514             #监听tcp514端口
#### RULES ####
*.*                                                     :ommysql:192.168.79.47,Syslog,loguser,sigeling      #配置规则,所有设施的所有级别日志都存入远程数据库服务器中
[root@centos7 ~]# systemctl restart rsyslog.service  
[root@localhost ~]# yum -y install httpd php php-mysql php-gd       #另一台主机搭建lap环境
[root@localhost ~]# gzip -d loganalyzer-3.6.5.tar.gz                    #安装loganalyzer
[root@localhost ~]# tar -xf loganalyzer-3.6.5.tar 
[root@localhost ~]# cp /root/loganalyzer-3.6.5 ./ -r
[root@localhost /var/www/html/]# ln -s loganalyzer-3.6.5/src/ loganalyzer
[root@localhost ~]# cd loganalyzer
[root@localhost loganalyzer]# touch config.php                  #创建配置文件,并改权限为666,之后直接访问http://HOST:port/loganalyzer即可,根据loganalyzer提供的步骤进行
[root@localhost loganalyzer]# chmod 666 config.php

2、描述vsftpd工作原理并以虚拟用户的方式提供ftp服务

文件传输协议FTP:
File Transfer Protocol早期的三个应用级协议之一
基于C/S架构
双通道协议:数据和命令连接
数据传输格式:二进制(默认)和文本
两种模式:服务器角度
主动(PORT Style):服务器主动连接
命令(控制):客户端:随机端口—>服务器:tcp21
数据:客户端:随机端口—>服务器:tcp20
被动(PASV style):客户端主动连接
命令(控制):客户端:随机端口—>服务器:tcp21
数据:客户端:随机端口—>服务器:随机端口
服务器被动模式数据端口示例:
227 Entering Passive Mode (172,16,0,1,224,59)
服务器数据端口为:224*256+59
用户认证方式:
匿名用户:ftp、anonymous,对应Linux用户ftp
系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow
虚拟用户:特定服务的专用用户,独立的用户/密码文件

[root@localhost ~]# yum -y install vsftpd               #安装vsftpd软件包
[root@localhost ~]# vim /etc/vsftpd/vusers.txt          #创建虚拟用户文件,奇数行为用户名,偶数行为密码
test1
pass
test2
pass
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# db_load -T -t hash -f vusers.txt vusers.db         #对上面创建的虚拟用户文件进行hash计算,生成库文件vusers.db
[root@localhost vsftpd]# chmod 600 vusers.db            #降低库文件的权限保证安全
[root@localhost vsftpd]# useradd -d /var/ftproot -s /sbin/nologin vuser         #服务器端创建新的用户用作映射(匿名用户等在客户端登录时在服务端以该用户的身份进行操作)
[root@localhost vsftpd]# chmod +rx /var/ftproot/    
[root@localhost vsftpd]# chmod -w /var/ftproot/
[root@localhost vsftpd]# mkdir /var/ftproot/upload
[root@localhost vsftpd]# setfacl -m u:vuser:rwx /var/ftproot/upload         #配置vuser用户在ftproot目录下的权限
[root@localhost tmp]# vim /etc/pam.d/vsftpd.db              #在pam验证模块中对vsftpd相关验证做配置
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf        #更改配置文件
guest_enable=YES                    
guest_username=vuser                #指定访问用户的身份
pam_service_name=vsftpd.db      #指定pam验证模块文件
[root@localhost vsftpd]# mkdir /etc/vsftpd/vusers.d/            #创建目录用于存放不同用户的权限配置文件
[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers.d/
[root@localhost vusers.d]# vim test1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

[root@localhost vusers.d]# systemctl restart vsftpd
[root@localhost vusers.d]# ss -ntl
LISTEN     0      32          :::21                      :::*  
[root@centos7 vsftpd]# lftp 192.168.79.37           #连接ftp
lftp 192.168.79.37:~> test1
Unknown command `test1'.
lftp 192.168.79.37:~> login
Usage: login  []
lftp 192.168.79.37:~> login test1 pass
lftp [email protected]:~> 
lftp [email protected]:~> 
lftp [email protected]:~> ls
drwxrwxr-x    2 0        0               6 Aug 25 15:55 upload
lftp [email protected]:/> 

3、部署nfs、samba并提供Windows用户访问

[root@localhost ~]# yum -y install nfs-utils rpcbind            #安装nfs
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# vim /etc/exports                            #指定本地何目录允许何主机以何权限访问
/backup/ 192.168.79.0/24(ro)

[root@localhost ~]# vim /etc/fstab
192.168.79.47:/backup/ /data/backup/ nfs ro 0 0         
[root@localhost ~]# mount -a                    #加载fstab文件
[root@localhost backup]# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/sda2               31G  3.7G   27G  13% /
devtmpfs               895M     0  895M   0% /dev
tmpfs                  910M     0  910M   0% /dev/shm
tmpfs                  910M   10M  900M   2% /run
tmpfs                  910M     0  910M   0% /sys/fs/cgroup
/dev/sda3               31G   37M   31G   1% /data
/dev/sda5               20G   33M   20G   1% /home
/dev/sda1              4.0G  174M  3.9G   5% /boot
tmpfs                  182M     0  182M   0% /run/user/0
/dev/sr0                11G   11G     0 100% /media
192.168.79.47:/backup   30G  3.5G   27G  12% /data/backup
[root@localhost ~]# yum -y install samba            #安装samba
[root@localhost ~]# 
[root@localhost ~]# vim /etc/samba/smb.conf     #更改配置文件
[smbshare]
        comment = test
        path = /tmp/test
        write list = @admins root
        create mask = 0664
        directory mask = 0775
[root@localhost ~]# systemctl restart smb nmb
[root@localhost ~]# groupadd -r admins          #创建admins组
[root@localhost ~]# groupadd -r admins          
[root@localhost ~]# useradd -s /sbin/nologin -G admins testuser         #创建testuser用户,不允许登录,属于admins组
[root@localhost ~]# smbpasswd -a testuser           #使用smbpasswd工具对testuser进行加密
New SMB password:
Retype new SMB password:
Added user testuser.
[root@localhost ~]# mkdir /tmp/test             #创建要共享的目录
[root@localhost ~]# chgrp admins /tmp/test      #更改共享目录属组
[root@localhost ~]# chmod 2775 /tmp/test
[root@localhost ~]# semanage fcontext -a -t samba_share_t '/tmp/test(/.*)?'             #更改selinux权限,开放samba_share
[root@localhost ~]# restorecon -vvFR /tmp/test/         #保存selinux配置

[root@localhost backup]# mount -o username=testuser //192.168.79.47/smbshare /tmp           #使用用户testuser进行挂载
Password for testuser@//192.168.79.47/smbshare:  ********

4、在两台服务器上部署inotify+rsync同步服务器A上的/data/backup目录至服务器B

[root@localhost ~]# vim /etc/rsyncd.conf 
uid = root
gid = root
use chroot = no
max connections = 0
ignore errors
exclude = lost+found/
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
reverse lookup =no
hosts allow = 192.168.79.0/24
[backup]
path = /data/backup/
comment = backup
read only = no
auth users = rsyncuser
secrets file = /etc/rsync.pass


[root@localhost ~]# echo "rsyncuser:sigeling" > /etc/rsync.pass
[root@localhost ~]# chmod 600 /etc/rsync.pass
[root@localhost ~]# mkdir /data/backup/ -p
[root@localhost ~]# rsync --daemon              #以守护进程的方式运行

[root@localhost data]# echo 'sigeling' > /etc/rsync.pass
[root@localhost data]# chmod 600 /etc/rsync.pass
[root@localhost data]# rsync -avz --password-file=/etc/rsync.pass /data/ [email protected]::backup            #推送数据
[root@localhost ~]# vim inotify_rsync.sh 
#!/bin/bash
SRC='/data/backup'
DEST='[email protected]::backup'
inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w %f' -e create,delete
,moved_to,close_write ${SRC} |while read DATE TIME DIR FILE;do
FILEPATH=${DIR}${FILE}
rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST && echo "At ${TIME
} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.l
og
done

你可能感兴趣的:(日志管理、FTP、NFS、samba服务与数据同步)