1. 程式人生 > >日誌、文件服務器(vsftp、NFS)

日誌、文件服務器(vsftp、NFS)

日誌、文件服務器(vsftp、nfs、samba

下面介紹的是)日誌、文件服務器(vsftp、NFS、samba


一、日誌

1、日誌基礎

(1)、日誌

日誌 -----------記錄具有一定意義的歷史事件。

事件 -----------時間、事件本身的內容、事件的關鍵程度(級別)

最開始的日誌系統為: syslog,主要記錄與應用程序、內核有關的事件。klogd(與內核有關的事件)、syslogd(與應用程序有關的事件)。

(2)rsyslog --------------現在常用的日誌系統

rsyslog的特性(5個):多線程、並行記錄日誌;持更多的協議來完成日誌;支持多種格式日誌存儲;支持日誌的過濾機制,過濾不想看到的內容;可自定義輸出格式。

rsyslog采用ELK Stack進行日誌記錄:倒序索引搜索引擎、日誌收集工具、展示工具。

rsyslog包括以下兩部份:

facility ----------收集整理日誌的組件

priority ----------事件優先級、級別(debug、info、notice、warn、err、crit、alert、emerg(panic))

運行級別:

debug ---------所有的都記錄,內容太多,用於排錯,日誌中可記可不記

info ----------一般性的信息、描述,日誌中可記可不記

notice ----------通知類信息,日誌中可記可不記

warn -----------警告

error -----------錯誤信息

crit -------------緊急的

alert ------------警報

emerg(panic) ---------------恐慌(最高級)


rsyslog配置文件:

配置文件:/etc/rsyslog.conf /etc/rsyslog.d/*.conf

主程序配置文件:/usr/sbin/rsyslogd

服務器的啟動(rsylog):

centos6:service rsyslog {start|restart|stop|status}

centos7:systemctl {start|restart|stop|status} rsyslog.service


(3)、rsyslog的主配置文件:/etc/rsyslog.conf -----------包括三部分

主配置文件的三部分,即MODULES、GLOBAL DIRECTIVES、RULES。

第三部分RULES,具體解釋如下:(也分三部分)

facility:

*:所有的設施

f1,f2,...:由多個設施構建的列表


priority:

*:所有級別

none:不包含任何級別

PRIORITY:包括指定的PRIORITY在內,直到最高級之間的所有級別;

如:warn,意思是:warn,err,crit,alert,emerg

=PRIORITY:僅記錄指定的級別的日誌;

如:=warn,意思是:warn


target:

文件:以絕對路徑的方式給出日誌文件;"-"表示異步寫入;

用戶:將日誌信息通知給指定的用戶;也可以向所有已經登錄到系統的用戶的終端發送信息;

日誌服務器:@Server_ip,把日誌發送到指定的日誌服務器上;

管道:| COMMAND


-/var/log/maillog ------------其中,【減號表示異步寫入】

:modoule: --------------使用模塊


2、幾種主要的日誌文件

(1)、dtmp

/var/log/dtmp ------------索引文件,不是純文本的。btmp即bad login,用於記錄嘗試登錄的信息。

# lastb 命令進行查看

(2)、wtmp

/var/log/wtmp ------------wtmp,即win login,用於記錄成功登錄信息。

# last 命令進行查看

# last -n 5 ---------顯示最近5條記錄

(3)、secure

/var/log/secure ------------記錄認證授權日誌,為純文本文檔。

(4)、dmesg

/var/log/dmesg ------------記錄系統引導過程中的輸出信息,純文本文檔。

可以使用編輯器查看,也可以使用dmesg命令來查看。


3、將rsyslog日誌機記錄於MySQL中的步驟如下:

(1)、# yum install rsyslog-mysql

(2)、在MySQL中創建授權用戶

mysql> grant all on Syslog.* to ‘sladmin‘@‘127.0.0.1‘ identified by ‘slpass‘;

mysql> grant all on Syslog.* to ‘sladmin‘@‘localhost‘ identified by ‘slpass‘;

mysql> grant all on Syslog.* to ‘sladmin‘@‘172.16.%.%‘ identified by ‘slpass‘;

(3)、使用SQL腳本創建數據庫和數據表

# mysql -usladmin -hlocalhost -p < /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql

(4)、在rsyslog的配置文件中配置使用MySQL -------------/etc/rsyslog.conf

### MODULES ###

$ModLoad ommysql


### RULES ###

facility.priority :ommysql:DB_HOST,DB_NAME,DB_USER,DB_PASS

(5)、重啟rsyslog服務


4、loganalyzer 組件 ------------------進行日誌分析。

步驟:

(1)、需要架構LAMP平臺。

(2)、安裝loganalyzer

# tar loganalyzer-4.1.5.tar.gz

# cd loganalyzer-4.1.5

# cp -a src /PATH/TO/SOME_VHOST/loganalyzer

# cp contrib/*.sh /PATH/TO/SOME_VHOST/loganalyzer

# cd /PATH/TO/SOME_VHOST/loganalyzer

# chmod +x *.sh

# ./configure.sh

# ./secure.sh

# chmod 666 config.php

(3)、通過瀏覽器訪問

http://HOST/loganalyzer



二、文件服務器

1、文件系統基礎

(1)、文件服務器的實現方式:(3種)

FTP ---------------基於應用層

NFS ---------------基於內核級文件系統(基於文件系統)

CIFS(通用互聯網文件系統) -------跨OS的網絡文件系統(基於文件系統)

(2)、網絡存儲:(2種)

NAS ------------網絡附加存儲,文件系統級別的存儲接口

SAN ------------存儲區域網絡,塊設備級別的存儲接口


2、FTP ------------文件傳輸協議,采用的是C/S架構。

(1)、FTP基礎

FTP 默認為【明文傳輸數據】,用戶名和密碼均為明文,運用ftps、sftp進行安全增強。

FTP的兩種【套接字】:控制連接套接字(tcp/21)、數據連接套接字(tcp/20)

FTP的TCP的兩種【連接】:控制連接、數據連接

FTP兩種【數據傳輸的模式】:文本格式、二進制格式

FTP數據【連接的兩種建立方式】:主動模式、被動模式

FTP【安全增強】的兩種方式:ftps、sftp

(2)、FTP協議的實現

服務器端:windows:IIS、Serv-U

Linux:wuftpd、proftpd、pureftp、【vsftpd】

客戶端:命令行界面工具(CLI)、圖形界面工具(GUI)。


3、vsftp ----------------FTP的服務器端實現

(1)、vsftp程序環境:

主配置文件: /etc/vsftpd/vsftpd.conf

輔助配置文件: /etc/vsftpd/other_file

主程序文件: /usr/sbin/vsftpd

默認的匿名用戶訪問的數據根目錄:/var/ftp

系統文件:/usr/lib/systemd/system/vsftpd.service

(2)、主配置文件 ----------------------/etc/vsftpd/vsftpd.conf

格式:Directive=Value

在格式中,註意以下三點:

1、指令位於絕對行首

2、等號兩側不允許出現空格

3、布爾值必須大寫

在主配置文件中,常用的指令如下(9類):----------------------/etc/vsftpd/vsftpd.conf

1、全局的指令:

write_enable=YES

2、匿名用戶授權:

anonymous_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

anon_umask=022

3、系統用戶:

local_enable=YES

local_umask=022

4、禁錮系統用戶於其家目錄中:

chroot_local_user=YES ---------------所有用戶禁錮

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

5、定義傳輸日誌:

xferlog_enable=YES

xferlog_file=/var/log/xferlog

xferlog_std_format=YES

6、用戶訪問控制:

userlist_enable=YES

userlist_deny=YES ----------------黑名單

userlist_file=/etc/vsftpd/user_list

7、認證機制:----------------PAM認證

pam_service_name=vsftpd -----------------主要認證用戶賬戶的身份

tcp_wrappers=YES -----------------TCP_WRRAPERS認證

8、被動模式:

pasv_enable=YES

pasv_max_port=61000

pasv_min_port=60000

9、限速:-----------------單位是Byte/S

local_max_rate=128000

anon_max_rate=50000


配置vsftpd:三種用戶類別分別是,匿名用戶、系統用戶、虛擬用戶。



4、vsftpd的虛擬主機 ----------------區分不同的虛擬主機,僅依靠套接字的不同

(1)、vsftp虛擬主機

vsftpd的虛擬主機:(區分)

listen_port=21 --------添加入

listen_address=172.16.2.1 ----------當前用戶有效的ip地址

三類vsftp虛擬主機如下:

1、基本【ftp】服務器虛擬主機:--------------/etc/vsftpd/vsftpd.conf

listen_port=21

listen_address=172.16.69.1

2、存儲虛擬用戶於【文件】的虛擬主機:----------/etc/vsftpd/vuser_file.conf

listen_port=21

listen_address=172.16.69.101

3、存儲虛擬用戶於【MySQL】的虛擬主機:------------/etc/vsftpd/vuser_mysql.conf

listen_port=21

listen_address=172.16.69.201


(2)、vsftp虛擬用戶

vsftpd的【虛擬用戶】:利用文件系統的數據庫文件存放用戶賬戶和密碼,也可以,利用MySQL存放用戶賬戶和密碼。分別設定不同虛擬用戶的訪問權限。

虛擬用戶【賬戶存儲】:文件、MySQL數據庫、Oracle、Redis、LDAP

vsftp本身不具備用戶賬戶身份驗證功能,認證功能托管給pam。-------身份驗證(pam:插入式認證模塊)


(3)、【基於文件】來存放【虛擬用戶】的步驟如下:

1、創建文件

【創建】用於保存虛擬用戶的文件,奇數行為用戶名,偶數行為密碼。添加用戶,直接在文件中添加,讓後加載。若要刪除用戶,要先刪除數據庫,再刪除數據。

例:

# touch VUSER_FILE

tom

123456

jerry

123123

2、文本文件【轉換】為數據庫文件

db_load -T -t hash -f /PATH/TO/VUSER_FILE /PATH/TO/USERDB.db

3、設定PAM的認證方式 -------------其配置文件,【不要.db的擴展名】

修改:/etc/pam.d/vusers.file

auth required /lib64/security/pam_userdb.so db=/PATH/TO/USERDB -----------USERDB不要.db的擴展名

account required /lib64/security/pam_userdb.so db=/PATH/TO/USERDB

4、身份【映射】,映射虛擬用戶身份

# useradd LOCAL_USER

5、修改虛擬主機的配置文件 -------------------/etc/vsftpd/vsftpd.conf

anonymous_enable=NO

guest_enable=YES

guest_username=LOCAL_USER

pam_service_name=vusers.file

local_root=/myftp/ftpdata

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES



(4)、對於所有的虛擬用戶【分別設定權限】,步驟如下:

1、在虛擬主機的主配置文件中添加指令user_config_dir0 ---------------------/etc/vsftpd/vsftpd.conf

user_config_dir=/PATH/TO/CONFIG_DIR

2、創建出這個目錄,並且在目錄下創建出與虛擬用戶名相同的文件

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

local_root=/myftp/ftpdata/alice

anon_umask=022


(6)、基於【MySQL】來存放虛擬用戶的步驟如下: ---------------對於centos6

1、編譯安裝pam的MySQL【驅動】 (需要預先安裝編譯環境 ----------註意4個)

# yum -y install pam-devel mysql_devel

# tar xf pam_mysql-0.7RC1.tar.gz

# cd pam_mysql-0.7RC1

# ./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/lib64/secutiry

# make -j 4 && make install

2、創建數據庫、數據表、授權用戶

mysql> create database vsftpd;

mysql> use vsftpd;

mysql> create table users (username char(20),password char(48));

mysql> insert into users values (‘centos‘,PASSWORD(‘qhdlink‘)),(‘gentoo‘,PASSWORD(‘qhdlink‘))

mysql> grant all on vsftpd.* to ‘vsftpd‘@‘localhost‘ identified by ‘vsftppass‘;

mysql> grant all on vsftpd.* to ‘vsftpd‘@‘127.0.0.1‘ identified by ‘vsftppass‘;

mysql> grant all on vsftpd.* to ‘vsftpd‘@‘172.16.%.%‘ identified by ‘vsftppass‘;

3、【創建】pam的認證文件 ---------------/etc/pam.d/vusers.mysql

/etc/pam.d/vusers.mysql

auth required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftppass host=127.0.0.1 db=vsftpd table=users usercolumn=username passwdcolumn=password crypt=2

account required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftppass host=127.0.0.1 db=vsftpd table=users usercolumn=username passwdcolumn=password crypt=2

4、創建映射用戶

# useradd mysqluser

5、修改虛擬主機的配置文件 -------------------/etc/vsftpd/vsftpd.conf

anonymous_enable=NO

guest_enable=YES

guest_username=LOCAL_USER

pam_service_name=vusers.mysql

user_config_dir=/PATH/TO/MYSQL_USER_CONFIG



5、NFS -----------網絡文件服務器

安裝nfs,即安裝nfs-utils。

(1)、nfs服務器配置文件:(2個)

/etc/exports

/etc/exports.d/*


(2)、nfs主配置文件 -------------/etc/exports

格式:Shared_path Machine_Name1(Security_options) Machine_Name2(Security_options) ...

Shared_path --------------絕對路徑,共享的目錄


Machine_Name -----------single host、wildcards、IP networks

single host:單獨主機,IP地址或主機名

wildcards:使用*或?來做通配,如果只寫一個*則表示所有主機;

IP networks:IP網段,NETWORK/NETMASK, NETWOEK/PREFIX_LEN

192.168.100.0/255.255.255.0

172.16.0.0/16


Security_options(2類)----------General Options、User ID Mapping

General Options:ro(只讀)、rw(讀寫)、sync(同步存儲)、async(異步存儲)、nohide(不隱藏)

User ID Mapping:root_squash(壓縮root用戶權限)、all_squash(壓縮所有的本地用戶權限)


三、文件服務器之間的聯系 -------------Samba

1、Samba的協議

smb協議 --------------服務消息塊協議(139/tcp、445/tcp)

NetBios協議 -------------簡短主機名的解析(137/udp、138/udp)

cifs文件系統

2、Samba功能:(5類)

文件系統共享、打印機共享、NetBios協議、Workgroup model、Domain Model

3、Samba的程序環境:(5類)

samba

samba-client

samba-common

samba-commom-tools

samba-*libs

4、Samba文件

Samba主配置文件:/etc/samba/smb.conf

Samba主程序:smbd、nmbd

Samba的UNIT文件:smb.service、nmb.service

Samba客戶端程序:smbclient、mount.cifs(mount -t cifs)


5、samba主配置文件 ------------------/etc/samba/smb.conf(2類)

(1)、Global Settings ---------------全局配置

[global] ---------3段

Network-Related Options

Logging Options

Standalone Server Options

samba服務的四個安全級別share、user、server、domain

(2)、Share Definitions ---------共享定義

Samba的共享定義,包括三類:homes、printers、share_fs。

常用的共享命令有:comment、path、public、browseable、guest ok、writable、【write list】、read only、valid users、create mode、dir mode、directory mode。


6、samba的配置文件中可用的【宏列表】:

%v --------------Samba專用的宏變量,Samba程序的版本號

%m ---------------客戶端主機的IP地址(客戶端主機的NetBIOS名稱)

%H ------------當前用戶的家目錄的路徑;

%U -------------當前用戶的用戶名;

%g -----------當前用戶的屬組的組名;

%h -------------當前samba主機的HOSTNAME;

%I ------------客戶端主機的IP地址;

%T -------------當前的系統日期和時間;

%S -------------當前有效的的登錄用戶


7、Samba用戶管理:

(1)、smbpasswd命令 ------------配置Samba用戶(smbpasswd)

常用選項:

-a ------------添加samba用戶

-x -----------刪除samba用戶

-d ----------禁用samba用戶

-e -----------啟用被禁用的samba用戶

(2)、pdbedit命令 ------------配置Samba用戶(tdbsam)

常用選項:

-L ---------------列出所有被成功添加的samba用戶

-a -------------------添加samba用戶

-u username ----------指明要管理的用戶

-x -------------刪除samba用戶

-t ----------------從標準輸入接收字符串作為samba用戶的密碼

(3)、testparm命令 -----------測試配置文件語法是否正確


共享目錄的訪問方式:smbclient交互式訪問、掛載訪問

(4)、smbclient命令 ----------------共享目錄的訪問方式、smbclient客戶端工具

常用選項:

-L SERVER_IP -----------查看指定服務器上的samba共享目錄列表

-U USERNAME -------------指定以特定用戶的身份來訪問或查看

-N ----------------在使用匿名用戶或來賓用戶的時候無需輸入密碼

# smbclient -U USERNAME //SERVER_IP/DIR_SHARED_NAME ----------訪問共享目錄

# mount -t cifs -o username=USERNAME[,password=PASSWORD] //SERVER_IP/DIR_SHARED_NAME MOUNT_POINT --------掛載訪問

# mount.cifs -o credentials=/root/smbuser.txt //SERVER_IP/DIR_SHARED_NAME MOUNT_POINT

在掛載訪問中,需創建用於保存samba用戶的文件,如:/root/smbuser.txt, 權限600。該文件中的用戶名和密碼的書寫格式為:username=USERNAME、password=PASSWORD。但常用credentials=FILE來引用用戶名和密碼。


(5)、smbstatus命令 ------------------查看服務器上的共享目錄的訪問狀態

常用選項:

-b -----------顯示簡要格式的輸出信息

-v ------------顯示詳細格式的輸出信息


例:創建一個共享目錄

# mkdir /myshare

# chmod 1777 /myshare


[myshare]

comment = my shared directory for LAN

hosts allow = 172.16.

path = /myshare

public = no

browsable = yes

write list = @smbusers centos

create mask = 0644

dir mask = 0755


日誌、文件服務器(vsftp、NFS)