一、描述rsyslog日志服务,并提供带web展现的日志服务器php
rsyslog日志服务简介html
日志的概念好理解,日志做用可用于排障和追溯审计的等mysql
一、rsyslog是一个C/S架构的服务,可监听于某套接字,帮其它主机记录日志信息,在linux系统中能够分类两个日志:linux
klogd:kernel,记录内核相关的日志ios
syslogd:service,记录应用程序的日志git
rsyslog:是CentOS 6之后的系统使用的日志系统,与以前的syslog日志系统相比,具备如下优势:github
支持多线程web
支持TCP、SSL、TLS、RELP等协议正则表达式
强大的过滤器,可实现过滤日志信息中的任意部分sql
支持自定义输出格式
适用于企业级别日志记录需求
模块化
先实现rsyslog存储在数据库中
安装包
yum install mariadb-server rsyslog-mysql(rsyslog与数据库交互的包)
加载ommysql模块写入rsyslog.conf配置文件
rpm -ql rsyslog-mysql
/usr/lib64/rsyslog/ommysql.so
/usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
加入一行。将日志保存至数据库一份
*.info;mail.none;authpriv.none;cron.none :ommysql:192.168.242.129,Syslog,test,centos
在数据库中建立帐号
grant all on Syslog.* to test@'%' identified by 'centos';
建立表 能够直接跑rsyslog-mysql包中的sql脚本,会自动生成rsyslog的数据库,导入完成后重启rsyslog服务便可
mysql -uroot -pcentos < /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
实现lamp及日志web方式日志
yum install httpd php php-mysql mariadb-server 。
下载loganalyzer https://loganalyzer.adiscon.com/downloads/loganalyzer-v4-1-7-v4-stable/
解压loganalyzer-4.1.7.tar.gz
进入loganalyzer目录。将源码src目录拷贝到httpd目录中
cp -r src/ /var/www/html/log命名成log目录
点击here进入页面
点击next
发现log目录中有一个config.php文件不存在
手动建立config.php文件,而且权限改为666
touch /var/www/html/log/config.php && chmod 666 /var/www/html/log/config.php
也可使用安装目录中的configure.sh脚本配置权限。注意。要在httpd的目录中,而configuer.sh在loganalyze目录。须要移动至httpd目录
若是仍是提示不可写入的话,可使用一下命令
[root@loganalyzer ~]# cd /var/www/html/loganalyzer
[root@loganalyzer ~]# touch config.php
[root@loganalyzer ~]# chown apache:apache config.php
[root@loganalyzer ~]# chmod 777 config.php
[root@loganalyzer ~]# chcon -h -t httpd_sys_script_rw_t /var/www/html/loganalyzer/config.php
http://yallalabs.com/linux/how-to-setup-loganalyzer-with-rsyslog-on-centos-7-rhel-7/ 参考网址
保持默认
source Type 选择mysql。select view 和table type 都保持默认
选择数据库名,代表,注意大小写区分。输入帐号及密码
安装完成
二、描述vsftpd工做原理并以虚拟用户的方式提供ftp服务
File Transfer Protocol 早期的三个应用级协议之一
基于C/S结构
双通道协议:数据和命令链接
数据传输格式:二进制(默认)和文本
两种模式:服务器角度
主动(PORT style):服务器主动链接
命令(控制):客户端:随机port --- 服务器:tcp21
数据:客户端:随机port ---服务器:tcp20
被动(PASV style):客户端主动链接
命令(控制):客户端:随机port ---服务器:tcp21
数据:客户端:随机port ---服务器:随机port
服务器被动模式数据端口示例:
227 Entering Passive Mode (172,16,0,1,224,59)
服务器数据端口为:224*256+59
命令端口称为通讯端口tcp21,主动被动都是以服务器角度来称呼的。
命令端口则没有主动被动一说,只有数据端口有主动和被动
虚拟用户:
虚拟用户会赞成映射为一个指定的系统帐号:访问共享位置,即为次系统帐号的家目录,各虚拟用户可被赋予不一样的访问权限,经过匿名用户的权限控制参数进行指定
虚拟用户帐户帐号可放在文件或者数据库中
文件,编辑文本文件,须要被编码为hash格式,奇数行为用户名,偶数行为密码
首先,安装vsftpd提供ftp服务。yum install vsftpd -y
进入配置目录建立用户名密码
1、建立用户数据库文件,格式为奇数行为用户名,偶数行为密码
• vim /etc/vsftpd/vusers.txt
user1
centos
user2
centos
• cd /etc/vsftpd/
• db_load -T -t hash -f vusers.txt vusers.db
• chmod 600 vusers.db 更改权限
将文本文件转换成为特殊格式的数据库文件
db_load -T -t hash -f vusers.txt vusers.db
建立一个操做系统帐号及家目录做为ftp的根目录
mkdir /data/ftproot
useradd -s /sbin/nologin -r -d /data/ftproot vuser
修改ftp根目录全部者
chown vuser.vuser /data/ftproot 做为ftp根须要注意权限。根上不能有写权限,但子目录能够
mkdir /data/ftproot/upload 建立子目录
setfacl -m u:vuser:rwx /data/ftproot/upload 单独赋予vuser权限
接下来让ftp服务能够调用刚建立的用户帐号的数据库文件,
vim /etc/pam.d/vsftpd.db #在pam模块中修改调用的ftp配置文件,
auth required pam_userdb.so db=/etc/vsftpd/vusers #验证用户帐号数据库
account required pam_userdb.so db=/etc/vsftpd/vusers
在ftp配置文件中修改调用的pam模块
引用刚生成的配置文件
guest_enable=YES 全部系统用户都映射成guest用户
guest_username=ftp 配合上面选项才生效,指定guest用户
重启服务 systemctl restart vsftpd
客户端链接ftp服务器
、虚拟用户创建独立的配置文件
mdkir /etc/vsftpd/vusers.d/ 建立配置文件存放的路径
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers.d/
容许user1用户可读写,其它用户只读
vim user1 建立各用户自已的配置文件
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
user1能够实现上传
user2则不能上传
实现登录目录分离
建立user2文件,写入local_root=/data/ftproot2/
[root@centos7 vusers.d]# mkdir /data/ftproot2 建立文目录及文件
[root@centos7 vusers.d]# echo a > /data/ftproot2/a.txt
user2登录和user1的登录目录分离
若是须要user2实现下载。则加入几行命令便可
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
实现基于mysql验证的vsftpd虚拟用户
说明:本实验在两台CentOS主机上实现,一台作为FTP服务器,一台作数据库
服务器
1、安装所须要包和包组:
在数据库服务器上安装包:
Centos7:在数据库服务器上安装
yum –y install mariadb-server
systemctl start mariadb.service
systemctl enable mariadb
在FTP服务器上安装vsftpd和pam_mysql包
centos6:pam_mysql由epel6的源中提供
yum install vsftpd pam_mysql
yum -y install mariadb-devel pam-devel vsftpd
https://downloads.mariadb.org/mariadb-galera/5.5.63/ centos7需下载源码
centos7:
yum -y groupinstall "Development Tools"下载编译包组便宜源码pam_mysql
yum -y install mariadb-devel pam-devel vsftpd #安装开发相关的包
tar xf pam_mysql-0.7RC1.tar.gz 解压包
进入pam_mysql解压目录执行编译
./configure --with-pam-mods-dir=/lib64/security --with-mysql=/usr --with-pam=/usr
make && make install
系统会自动将pam_mysql模块放入/etc/pam.d/目录中
2、在数据库服务器上建立虚拟用户帐号
• 1.创建存储虚拟用户数据库和链接的数据库用户
mysql> CREATE DATABASE vsftpd;
mysql> SHOW DATABASES;
ftp服务和mysql不在同一主机:
mysql> GRANT SELECT ON vsftpd.* TO vsftpd@'192.168.%.%' IDENTIFIED BY 'centos';
2.准备相关表
mysql> USE vsftpd;
Mysql> SHOW TABLES;
mysql> CREATE TABLE users (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
name CHAR(50) BINARY NOT NULL,
password CHAR(48) BINARY NOT NULL
);
建立记录,对应虚拟用户帐户密码
insert users(name,password)values('ftp1',password('centos')),('ftp2',password('centos'));
3、在FTP服务器上配置vsftpd服务
1.在FTP服务器上创建pam认证所需文件
vi /etc/pam.d/vsftpd.mysql 添加以下两行
auth required pam_mysql.so user=vsftpd passwd=centos
host=192.168.64.136 db=vsftpd table=users usercolumn=name
passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=centos
host=192.168.64.136 db=vsftpd table=users usercolumn=name
passwdcolumn=password crypt=2
修改ftp配置文件调用pam的模块
以后重启服务便可利用数据库
三、部署nfs、samba并提供Windows用户访问
NFS:Network File System 网络文件系统,基于内核的文件系统。Sun公司开发,经过使用NFS,用户和程序能够像访问本地文件同样访问远端系统上的文件,基于RPC(Remote Procedure Call Protocol远程过程调用)实现
RPC采用C/S模式。客户机请求程序调用进程发送一个有进程参数的调用信息到服务进程,而后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器得到进程参数,计算结果,发送答复信息,而后等待下一个调用信息,最后,客户端调用进程接收答复信息,得到进程结果,而后调用执行继续进行
NFS优点:节省本地存储空间,将经常使用的数据,如home目录,存放在NFS服务器上且能够经过网络访问,本地终端将可减小自身存储空间的使用
须要安装nfs-utils管理nfs文件系统
yum install nfs-utils
rpcinfo -p 查看rpcbind服务列出来的nfs随机端口列表
systemctl start nfs 启动 nfs服务
mkdir /data/nfsdir1 建立目录做为nfs的共享
修改nfs的共享配置文件,加入须要共享的目录
vim /etc/exports
/data/nfsdir1 *
重启服务配置文件便可生效
exportfs -r 也可使用此命令从新加载配置文件 -au 暂停共享 -a 启用
出现了警报,可是不影响正常使用
showmount -e 192.168.242.128 在目标网络中查看被共享的文件夹
Export list for 192.168.242.128:
/data/nfsdir1 * #*表示全部客户端,
挂载成功
默认状况下。共享出来为只读方式
/data/nfsdir1 *(rw) 在服务器配置文件中写入 rw ,
文件系统开启,可是用户帐户权限对服务器的nfsdir1目录不足
cd /data/nfs1/
[root@centos7 nfs1]# ls
[root@centos7 nfs1]# touch a1
touch: cannot touch ‘a1’: Permission denied
在服务器给定nfsnobody权限便可,nfs访问时默认会以nfsnobody身份链接服务器。默认用root用户挂载服务器目录中会被压榨成普通用户权限。
exportfs -v 查看共享属性
root_squash 选项为将root身份权限压榨成普通权限。能够在配置文件中修改
/data/nfsdir1 *(rw,no_root_squash) 不压榨root用户权限
[root@centos7 ~]# setfacl -m u:nfsnobody:rwx /data/nfsdir1/
换成其余用户。建立文件时权限不足
[centos@centos7 nfs1]$ touch cenots1.txt
touch: cannot touch ‘cenots1.txt’: Permission denied
[centos@centos7 nfs1]$
在客户机上普通用户的uid会映射成服务器的对应uid的用户,若是服务器的uid的用户对此目录没有权限。则也没有在目录中写的权限
能够根据本身的须要写入指定的ip,或者ip地址范围能写。
[root@centos7 ~]# vim /etc/exports
/data/nfsdir1 *(sync,rw)
/data/nfsdir2 192.168.242.128(sync,rw) 192.168.242.0/24(ro)
在windows中要使用nfs须要开启一个nfs的插件
将目录映射成一个Windows磁盘
/data/nfsdir1 *(sync,rw,anongid=2000,abibgud=2000),此项配置能够将用户帐号映射成服务器端的相应帐号
若是须要永久挂载。则须要写入fstab文件中
nfs实现自动挂载。
客户机须要安装autofs包
yum install autofs
当咱们访问/misc/nfs时。则系统会自动讲远程nfs挂载到咱们指定的路径下
samba 软件是用cifs协议。cifs为文件系统,跟nfs文件系统类似,能够实现windows和linux的文件互相共享
安装samba服务
yum install samba
samba有两个服务单元。nmb服务能够解析主机名
/usr/lib/systemd/system/nmb.service
/usr/lib/systemd/system/smb.service
启动服务,139.445为samba服务的tcp端口
须要建立系统帐号,给samba使用
[root@centos7 /]# useradd -s /sbin/nologin smbuser1
[root@centos7 /]# useradd -s /sbin/nologin smbuser2
将系统帐号加入samba虚拟帐号,并设置密码
samba帐号默认存放在 /var/lib/samba/private/passwdb.tdb数据库文件中
在windows文件栏输入 \\192.168.242.128访问
输入刚建立的smaba帐号及密码便可
实现特定的目录共享
每一个共享目录应该有独立的[ ]部分
[共享名称] 远程网络看到的共享名称
comment 注释信息
path 所共享的目录路径
public 可否被guest访问的共享,默认no,和guest ok 相似
browsable 是否容许全部用户浏览此共享,默认为yes,no为隐藏
writable=yes 能够被全部用户读写,默认为no
read only=no 和writable=yes等价,如与以上设置冲突,放在后面的设置生效,默认只读
write list 三种形式:用户,@组名,+组名,用,分隔
如writable=no,列表中用户或组可读写,不在列表中用户只读
valid users 特定用户才能访问该共享,如为空,将容许全部用户,用户名之间用空格分隔
vim /etc/samba/smb.conf 修改samba的配置文件
mkdir /data/smbshare 建立目录
修改配置文件加入目录路径
目前并不对share特定的共享目录不能写,还须要设置文件权限
须要修改配置文件中的权限
[share]
path=/data/smbshare
read only = No 加入此行。消除只读的属性
也能够在linux主机中实现挂载
workgroup 指定工做组名称
server string 主机注释信息
netbios name 指定NetBIOS名
interfaces 指定服务侦听接口和IP
hosts allow 可用“,” ,空格,或tab分隔,默认容许全部主机访问,也可在每一个共享独立配置,如在[global]设置,将应用并覆盖全部共享设置
IPv4 network/prefix: 172.25.0.0/24 IPv4前缀: 172.25.0.
IPv4 network/netmask: 172.25.0.0/255.255.255.0
主机名: desktop.example.com
以example.com后缀的主机名: .example.com
示例:
hosts allow = 172.25.
hosts allow = 172.25. .example.com
hosts deny 拒绝指定主机访问
实现不用帐号访问目录不一样
config file=/etc/samba/conf.d/%U
用户独立的配置文件,写入配置文件,建立相应目录
mkdir /etc/samba/conf.d/
建立一个用户配置文件。为用户指向新的目录
share目录为咱们指向配置文件中的[share]的名称
Log file=/var/log/samba/log.%m 不一样客户机采用不一样日志
log level = 2 日志级别,默认为0,不记录日志
开机自动挂载
•cat /etc/fstab 能够用文件代替用户名和密码的输入
//server/homes /mnt cifs credentials=/etc/smb.txt 0 0
•cat /etc/smb.txt
username=wang
password=password
•chmod 600 /etc/smb.txt
四、在两台服务器上部署inotify+rsync同步服务器A上的/data/backup目录至服务器B
实现实时同步
inotify:
异步的文件系统事件监控机制,利用事件驱动机制,而无须经过诸如cron等的轮询机制来获取事件,linux内核从2.6.13起支持 inotify,经过inotify能够监控文件系统中添加、删除,修改、移动等各类事件
要利用监控服务(inotify),监控同步数据服务器目录中信息的变化
发现目录中数据产生变化,就利用rsync服务推送到备份服务器上
inotify+rsync 方式实现数据同步
实现inotify软件:
inotify-tools,sersync,lrsyncd
inotify+rsync使用方式
inotify 对同步数据目录信息的监控
rsync 完成对数据的同步
利用脚本进行结合
查看服务器内核是否支持inotify
Linux下支持inotify的内核最小为2.6.13
ll /proc/sys/fs/inotify #列出下面的文件,说明服务器内核支持inotify
-rw-r--r-- 1 root root 0 Dec 7 10:10 max_queued_events
-rw-r--r-- 1 root root 0 Dec 7 10:10 max_user_instances
-rw-r--r-- 1 root root 0 Dec 6 05:54 max_user_watches
max_queued_events:inotify事件队列最大长度,如值过小会出现 Event Queue Overflow 错误,默认值:16384
max_user_watches:能够监视的文件数量(单进程),默认值:8192
max_user_instances:每一个用户建立inotify实例最大值,默认值:128
inotify参考文档
https://github.com/rvoicilas/inotify-tools/wiki
yum install inotify-tools #基于epel源
Inotify-tools包主要文件:
inotifywait: 在被监控的文件或目录上等待特定文件系统事件(open close delete等)发生,经常使用于实时同步的目录监控
inotifywatch:收集被监控的文件系统使用的统计数据,指文件系统事件发生的次数统计
inotifywait命令常见选项
-m, --monitor 始终保持事件监听
-d, --daemon 以守护进程方式执行,和-m类似,配合-o使用
-r, --recursive 递归监控目录数据信息变化
-q, --quiet 输出少许事件信息
--timefmt <fmt> 指定时间输出格式
--timefmt时间格式,参考 man 3 strftime
%Y 年份信息,包含世纪信息
%y 年份信息,不包括世纪信息
%m 显示月份,范围 01-12
%d 每个月的第几天,范围是 01-31
%H 小时信息,使用 24小时制,范围 00-23
%M 分钟,范围 00-59
--format <fmt> 指定的输出格式;即实际监控输出内容
-e 指定监听指定的事件,若是省略,表示全部事件都进行监听
--exclude <pattern> 指定排除文件或目录,使用扩展的正则表达式匹配的模式实现
--excludei <pattern> 和exclude类似,不区分大小写
-o, --outfile <file>打印事件到文件中,至关于标准正确输出
-s, --syslogOutput 发送错误到syslog至关于标准错误输出
create 文件或目录建立
delete 文件或目录被删除
modify 文件或目录内容被写入
attrib 文件或目录属性改变
close_write 文件或目录关闭,在写入模式打开以后关闭的
close_nowrite 文件或目录关闭,在只读模式打开以后关闭的
close 文件或目录关闭,无论读或是写模式
open 文件或目录被打开
moved_to 文件或目录被移动到监控的目录中
moved_from 文件或目录从监控的目录中被移动
move 文件或目录无论移动到或是移出监控目录都触发事件
access 文件或目录内容被读取
delete_self 文件或目录被删除,目录自己被删除
unmount 取消挂载
示例: -e create,delete,moved_to,close_write
一次性监控/data/目录。
若是data目录中的数据发生变化,则退出
inotifywait -mrq /data 持续监控目录前台监控
后台执行,将事件记录到/root/intofy.log中,而且设置时间格式,记录哪一个目录的哪一个事件
inotifywait -o /root/inotify.log -drq /data --timefmt "%Y-%m-%d %H:%M" --format "%T %w%f event: %e"
当咱们对/data/目录进行操做的时候,所有记录日志中
监控特定的操做,建立,删除,移动,和修改才记录到日志中
inotifywait -mrq /data --timefmt "%F %H:%M" --format
"%T %w%f event: %;e" -e create,delete,moved_to,close_write
默认centos7自带有rsync包
修改配置文件
vi /etc/rsyncd.conf
uid = root #指定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.64.0/24 #控制网段访问
[backup]
path = /backup/ #须要将哪一个目录和远程服务器同步
comment = backup #注释
read only = no #取消只读
auth users = rsyncuser # 指定rsync帐号来同步
secrets file = /etc/rsync.pass #虚拟用户密码
在服务端生成虚拟帐户验证文件。格式为用户名:密码
echo "rsyncuser:centos" > /etc/rsync.pass &&chmod 600 /etc/rsync.pass
建立backup备份的目录
rsync --daemon 利用daemon启动rsync服务。
客户端配置密码文件
echo "magedu" > /etc/rsync.pass
chmod 600 /etc/rsync.pass
客户端测试同步数据
rsync -avz --password-file=/etc/rsync.pass /data/ rsyncuser@192.168.64.137::backup
同步成功
建立inotify_rsync.sh脚本
#!/bin/bash
SRC='/data/'
DEST='rsyncuser@192.168.64.136::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.log
done
在须要监控的服务器上执行便可