ftp、nfs、samba

文件服務器:mysql

基於應用層:FTPios

基於文件系統的文件服務器:sql

內核級的網絡文件系統:NFS數據庫

POSIX APIcentos

跨OS的網絡文件系統:CIFS安全


網絡存儲:服務器

NAS:Network Attached Storage,網絡附加存儲;網絡

文件系統級別的存儲接口;架構


SAN:Storage Area Network,存儲區域網絡;app

塊[設備]級別的存儲接口;

iSCSI


FTP:

File Transfer Protocol,文件傳輸協議;

C/S架構:


兩組套接字:

控制鏈接套接字:21/TCP

數據鏈接套接字:20/TCP,隨機套接字;


TCP鏈接:

控制鏈接(命令鏈接)

數據鏈接


數據傳輸的模式:

文本格式(ASCII):

二進制格式:


數據鏈接的創建方式:

主動模式:服務器主動向客戶端發送創建數據鏈接的請求;

被動模式:從客戶端向服務器已經協商好的端口發起數據鏈接創建的請求;

端口的格式:112,123


FTP自己的安全性:

默認明文傳輸數據;認證時的用戶名和密碼均爲明文;


安全加強:

ftps:ftp over SSL/TLS;

sftp:ftp over SSH


FTP協議的實現;

S:

Windows系統:IIS,Serv-U

Linux系統:wuftpd,proftpd,pureftp,vsftpd


C:

CLI:ftp,lftp,wget,lftpget,...

GUI:FlashFXP,FileZila,CuteFTP,GFTP,...


vsftpd:

開源解決方案;


安裝:vsftpd-VERSION.release.rpm


程序環境:

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

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


主程序:/usr/sbin/vsftpd


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

Systemd Unit File:/usr/lib/systemd/system/vsftpd.service


配置vsftpd:

用戶類別:

匿名用戶:ftp,anonymous;

系統用戶:存在於/etc/passwd中的用戶;

系統用戶若是經過驗證訪問FTP站點,其默認訪問的目錄爲其家目錄;還能夠切換至真正的根目錄;

針對於這一問題,能夠將其直接禁錮於其家目錄中;

虛擬用戶:只能訪問FTP服務器但不能完成系統登錄操做的用戶;

數據文件:

RDBMS:


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

其中的主要配置指令格式:

Directive=Value


注意:

1.全部Directive字符串前面不容許添加任何字符,即全部的指令必須位於本行的絕對行首;

2."="兩側絕對不容許出現空白字符;

3.Value部分,若是是布爾值,則必須都爲大寫字母,如YES,NO;


經常使用的指令:

全局的指令:

write_enable=YES

匿名用戶受權:

anonymous_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

anon_umask=022

系統用戶:

local_enable=YES

local_umask=022

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

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

注意:

若是chroot_local_user=YES,那麼除了/etc/vsftpd/chroot_list中的用戶以外,全部用戶都被禁錮於家目錄;

若是chroot_local_user=NO,那麼除了/etc/vsftpd/chroot_list中的用戶以外,全部用戶都不被禁錮於家目錄;

定義傳輸日誌:

xferlog_enable=YES

xferlog_file=/var/log/xferlog

xferlog_std_format=YES

用戶訪問控制:

userlist_enable=YES

userlist_deny=YES

userlist_file=/etc/vsftpd/user_list

注意:

若是userlist_deny=YES,那麼/etc/vsftpd/user_list就是黑名單,並且無需密碼認證;

若是userlist_deny=NO,那麼/etc/vsftpd/user_list就是白名單,存在於此文件中而且不存在於/etc/vsftpd/ftpusers文件的用戶,能夠訪問FTP服務器;

認證機制:

PAM認證:

pam_service_name=vsftpd

主要認證用戶帳戶的身份;


TCP_WRRAPERS認證:

tcp_wrappers=YES

應用/etc/hosts.allow和/etc/hosts.deny完成基於IP地址認證;

被動模式:

pasv_enable=YES

pasv_max_port=61000

pasv_min_port=60000

限速:

local_max_rate=128000

anon_max_rate=50000


注意:單位是Byte/S









回顧:

FTP

21/TCP

20/TCP, 某隨機端口/TCP


ASCII

BINARY


匿名用戶:ftp, anonymous

本地用戶:存儲於/etc/passwd中的用戶

虛擬用戶:僅能訪問FTP服務但不能登陸系統


vsftpd,

/etc/vsftpd/vsftpd.conf


vsftpd(2)

1.vsftpd的虛擬主機

2.vsftpd的虛擬用戶

利用文件系統的數據庫文件存放用戶帳戶和密碼

利用MySQL存放用戶帳戶和密碼

3.分別設定不一樣虛擬用戶的訪問權限


vsftpd的虛擬主機:

區分不一樣的虛擬主機,僅依靠套接字的不一樣而已;


listen_port=21

listen_address=172.16.69.1


基本ftp服務器虛擬主機:/etc/vsftpd/vsftpd.conf

listen_port=21

listen_address=172.16.69.1

存儲虛擬用戶於文件的虛擬主機:/etc/vsftpd/vuser_file.conf

listen_port=21

listen_address=172.16.69.101

存儲虛擬用戶於MySQL的虛擬主機:/etc/vsftpd/vuser_mysql.conf

listen_port=21

listen_address=172.16.69.201


虛擬用戶:

虛擬用戶帳戶存儲於何處?

文件,MySQL,Oracle,Redis,LDAP...


vsftpd自己不具有用戶帳戶身份驗證功能,認證功能託管給pam;


pam:Plugin Athentication Module,插入使認證模塊


以文件存放虛擬用戶的配置步驟:

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的認證文件

/etc/pam.d/vusers.file

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

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


4.建立一個用於映射虛擬用戶身份的本地用戶

useradd LOCAL_USER

5.修改此虛擬主機的配置文件:

anonymous_enable=NO 匿名用戶

guest_enable=YES 來賓用戶

guest_username=LOCAL_USER 來賓用戶名

pam_service_name=vusers.file    pam認證文件

local_root=/myftp/ftpdata       單獨設置權限目錄

anon_upload_enable=YES 容許上傳文件

anon_mkdir_write_enable=YES 容許建立目錄

anon_other_write_enable=YES 容許修改和刪除



若是想要對於全部的虛擬用戶分別設定權限,可使用:

在虛擬主機的主配置文件中添加指令:

user_config_dir=/PATH/TO/CONFIG_DIR


建立出這個目錄,而且在目錄下建立出與虛擬用戶名相同的文件;

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

local_root=/myftp/ftpdata/alice

anon_umask=022


基於MySQL存放虛擬用戶

'centos',PASSWORD('qhdlink')

'suse',PASSWORD('link19')


1.編譯安裝pam的mysql驅動

下載地址:http://pam-mysql.sourceforge.net/


須要預先安裝編譯環境,即: Development Tools,Server Platform Development, 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


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.修改此虛擬主機的配置文件:

anonymous_enable=NO

guest_enable=YES

guest_username=LOCAL_USER

pam_service_name=vusers.mysql

user_config_dir=/PATH/TO/MYSQL_USER_CONFIG


文件服務——NFS

NFS——Network File System

NIS

LDAP


NFS: SUN


NFSv1

NFSv2, NFSv3, NFSv4


nfs: 2049/TCP


輔助類的服務:

rpc.portmapper:端口映射表

rpc.mountd:認證

rpc.lockd:加鎖

rpc.statd:狀態


安裝nfs:

nfs-utils


nfs服務器配置文件:

/etc/exports

/etc/exports.d/*


主配置文件主要包括兩部分:

Shared_path Machine_Name1(Security_options) Machine_Name2(Security_options) ...


Shared_path:建議寫絕對路徑,要共享的目錄;


Machine_Name:

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


exportfs -ar命令重讀配置文件

exports 查看配置文件的設置

showmount 顯示nfs服務器的信息  

showmount -e 172.131.132.1.

Security_options:

General Options:

ro:只讀

rw:讀寫

sync:同步存儲

async:異步存儲

nohide:不把共享目錄中子目錄掛載的內容隱藏;

User ID Mapping:

root_squash:壓縮root用戶權限,通常映射爲nfsnobody;

all_squash:壓縮全部的本地用戶權限,映射爲nfsnobody;


注意:默認狀況下,root用戶被壓縮權限,而全部的普通用戶都沒有被壓縮權限;若是想要取消root用戶的權限壓縮,則須要使用no_root_squash選項;


anonuid and anongid:爲受到權限壓縮的用戶指定一個額外的UID和GID作映射,而再也不使用nfsnobody;


注意:uid和gid是能夠任意指定的,而無需關注是否有對應於此uid的用戶或gid的組;


NAS: 網絡附加存儲,文件系統級別的存儲網絡;


回顧:

vsftpd

listen-port=

listen-address=


虛擬用戶:

pam_userdb.so

pam_mysql.so


user_config_dir=


NFS

NAS


文件服務器(4)

Samba

smb協議:Service Message Block,服務消息塊;

139/tcp,445/tcp

NetBios協議:

137/udp,138/udp

cifs文件系統


Andrew Tridgwell


Samba的功能:

文件系統共享:

打印機共享:

NetBios協議:

Workgroup model:

Domain Model:


程序環境:

samba

samba-client

samba-common

samba-commom-tools

samba-*libs


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

主程序:

smbd:實現SMB協議/CIFS文件系統 Service的程序;

nmbd:NetBIOS name server;名稱解析服務器

UNIT文件:

smb.service

nmb.service


客戶端程序:

smbclient:交互式命令行客戶端工具,相似於ftp工具;

mount.cifs:掛載cifs文件系統的專用命令;

也可使用mount -t cifs


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

兩類配置段:

Global Settings:全局配置;

[global]

Network-Related Options 網絡配置

workgroup = MYGROUP 工做組

server string = Samba Server Version %v 描述信息

netbios name = MYSERVER 名稱

interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 哪個網絡接口接受遠程主機的samba請求

hosts allow = 127. 192.168.12. 192.168.13.


Logging Options

log file = /var/log/samba/log.%m 日誌文件 %m:客戶主機的IP地址

max log size = 50 日誌多大


Standalone Server Options 獨立進程守護

security = user samba的運行模式

samba服務的安全級別,取值有四個:

share:匿名共享,容許全部人以來賓用戶身份匿名訪問全部共享目錄;

user:使用samba服務自我管理的帳戶和密碼進行用戶認證;用戶帳戶必須首先是系統用戶,但密碼並不是爲/etc/shadow中存放的密碼,而是由samba自行管理的密碼數據庫文件中存放的密碼;存放密碼的文件的格式由passdb backend指令進行定義;  主流的

server:由第三方服務器進行統一用戶身份認證;

domain:使用域控制器進行用戶身份驗證;基於kerberos協議進行;


passdb backend = tdbsam

即用戶後臺。有三種用戶後臺:smbpasswd,tdbsam,dapsam


Share Definitions:共享定義

有三類:

[homes]:爲每一個samba用戶定義其是否能夠經過samba訪問本身的家目錄;   默認就好

[priters]:定義共享打印機; 默認就好

[share_fs]:定義共享目錄或文件系統;


經常使用的共享指令:

comment:註釋信息;

path:定義當前共享的目錄的路徑,建議使用絕對路徑;

browseable:是否能夠被瀏覽,其實指的是是否可以在訪問的頁面裏直接被看到;

public:是否將共享的目錄公開給全部用戶訪問,通常與"share"安全級別同時使用;

guest ok:是否容許來賓帳戶訪問;

注:public = yes 至關於 guest ok = yes

writable:對共享目錄是否有"寫"共享權限;針對於全部的合法用戶;

read only:對共享目錄是否有"只讀"共享權限;針對於全部的合法用戶;

注意:writable = yes 至關於 read only = no

write list = username @groupname +groupname:容許哪些用戶或組對此共享目錄有"寫"共享權限;

valid users = username @groupname +groupname:定義哪些用戶或組爲此共享目錄的有效訪問用戶;

注意:

writable = yes + valid users = username @groupname +groupname 至關於 write list = username @groupname +groupname

create mode = 0644:經過共享方式建立的文件的默認權限;

dir mode = 0755

directory mode = 0755

上述兩個指令意思是:經過共享方式建立的目錄的默認權限;


samba的配置文件中可用的宏列表:

%v:samba程序的版本號;

%m:客戶端主機的NetBIOS名稱;

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

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

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

%h:當前samba主機的HOSTNAME;

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

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


samba用戶管理:

smbpasswd:當passdb backend爲smbpasswd的時候,其添加的用戶有效;

-a:添加samba用戶;

-x:刪除samba用戶;

-d:禁用samba用戶;

-e:啓用被禁用的samba用戶;


pdbedit:當passdb backend爲tdbsam的時候,其添加的用戶有效;

-L:列出全部被成功添加的samba用戶;

-a,--create:添加samba用戶;

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

-x,--delete:刪除samba用戶;

-t,--password-from-stdin:從標準輸入接收字符串做爲samba用戶的密碼;


建立一個共享目錄:

# 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


使用testparm命令測試配置文件的語法是否正確;

啓動或重載配置文件便可使新配置的共享生效;

# systemctl {start|reload} smb.service


共享目錄的訪問方式:

客戶端工具交互是訪問:

smbclient客戶端工具:

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

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

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


使用smbclient命令訪問共享目錄:

smbclient -U USERNAME //SERVER_IP/DIR_SHARED_NAME 


掛載訪問:

mount -t cifs -o username=USERNAME[,password=PASSWORD] //SERVER_IP/DIR_SHARED_NAME MOUNT_POINT


建立用於保存samba用戶的文件,如:/root/smbuser.txt, 權限600;

此文件中的用戶名和密碼的書寫格式:

username=USERNAME

password=PASSWORD


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


查看服務器上的共享目錄的訪問狀態:

smbstatus命令:

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

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

相關文章
相關標籤/搜索