一、描述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
在須要監控的服務器上執行便可