1. 程式人生 > >網絡文件共享整理(FTP,NFS,Samba)

網絡文件共享整理(FTP,NFS,Samba)

連接超時 setsebool lose sock ces server mda mage csharp

網絡文件共享服務相關概念

DAS(Direct Access Storage—直接連接存儲)是指將存儲設備通過SCSI接口或光纖通道直接連接到一臺計算機上。

NAS(Network Attached Storage)—網絡連接存儲,即將存儲設備通過標準的網絡拓撲結構(例如以太網),連接到一群計算機上。NAS是部件級的存儲方法,它的重點在於幫助工作組和部門級機構解決迅速增加存儲容量的需求。需要共享大型CAD文檔的工程小組就是典型的例子。

SAN(Storage Area Network,存儲區域網絡)通過光纖通道連接到一群計算機上。在該網絡中提供了多主機連接,但並非通過標準的網絡拓撲。

技術分享圖片

1.FTP

FTP基礎概念和原理

File Transfer Protocol 早期的三個應用級協議之一

  • 基於C/S結構
  • 雙通道協議:數據和命令連接
  • 數據傳輸格式:二進制(默認)和文本

兩種模式:(從服務器角度

  • 主動(PORT style):服務器主動連接 命令(控制):客戶端:隨機port --- 服務器:tcp21 數據:客戶端:隨機port+1 ---服務器:tcp20
  • 被動(PASV style):客戶端主動連接 命令(控制):客戶端:隨機port -- 服務器:tcp21 數據:客戶端:隨機port+1 ---服務器:隨機port

服務器被動模式數據端口示例: 227 Entering Passive Mode (192,168,175,138,224,59) 服務器數據端口為:224*256+59

FTP服務器: Wu-ftpd,Proftpd,Pureftpd,ServU,IIS,vsftpd:Very Secure FTP Daemon

vsftpd是CentOS默認FTP服務器 高速,穩定,下載速度是WU-FTP的兩倍,單機最多可支持15000個並發,vsftpd程序包

客戶端軟件: ftp,lftp,lftpg et,wget,curl

狀態碼:

  • 1XX:信息 125:數據連接打開
  • 2XX:成功類狀態 200:命令OK 230:登錄成功
  • 3XX:補充類 331:用戶名OK
  • 4XX:客戶端錯誤 425:不能打開數據連接
  • 5XX:服務器錯誤 530:不能登錄

用戶認證:

  • 匿名用戶:ftp或anonymous,對應Linux用戶ftp
  • 系統用戶:Linux用戶,用戶/etc/passwd,密碼/etc/shadow
  • 虛擬用戶:特定服務的專用用戶,獨立的用戶/密碼文件

FTP配置文件詳解

用戶認證配置文件:/etc/pam.d/vsftpd

配置文件:/etc/vsftpd/vsftpd.conf (man 5 vsftpd.conf )格式:option=value 註意:=前後不要有空格

命令端口 listen_port=21
主動模式端口 connect_from_port_20=YES 主動模式端口為20    ftp_data_port=20 指定主動模式的端口
linux客戶端默認使用被動模式 ,windows 客戶端默認使用主動模式
pasv_min_port=6000 0為隨機分配 pasv_max_port=6010
使用當地時間 use_localtime=YES 使用當地時間(默認為NO,使用GMT)
anonymous_enable=YES 支持匿名用戶
no_anon_password=YES(默認NO) 匿名用戶略過口令檢查
anon_world_readable_only (默認YES)只能下載全部讀的文件
anon_upload_enable=YES 匿名上傳,註意:文件系統權限
anon_mkdir_write_enable=YES
anon_other_write_enable=YES 可刪除和修改上傳的文件
anon_umask=077 指定匿名上傳umask 指定上傳文件的默認的所有者和權限
chown_uploads=YES(默認NO)
chown_username=wang chown_upload_mode=0644
guest_enable=YES 所有系統用戶都映射成guest用戶
guest_username=ftp 配合上面選項才生效,指定guest用戶 local_enable=YES 是否允許linux用戶登錄
write_enable-YES 允許linux用戶上傳文件
local_umask=022 指定系統用戶上傳文件的默認權限
local_root=/ftproot 非匿名用戶登錄所在目錄

禁錮所有系統用戶在家目錄中 chroot_local_user=YES(默認NO,不禁錮)禁錮系統用戶

禁錮或不禁錮特定的系統用戶在家目錄中,與上面設置功能相反

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

當chroot_local_user=YES時,則chroot_list中用戶不禁錮 當chroot_local_user=NO時,則chroot_list中用戶禁錮

登錄提示信息:

ftpd_banner=“welcome to heiye ftp server"

banner_file=/etc/vsftpd/ftpbanner.txt 優先上面項生效

目錄訪問提示信息:

dirmessage_enable=YES (默認)

message_file=.message(默認)信息存放在指定目錄下.message

使用pam(Pluggable Authentication Modules)完成用戶認證:

傳輸參數調整:

技術分享圖片
anon_max_rate=0 匿名用戶的最大傳輸(速率字節/秒)
local_max_rate=0 本地用戶的最大傳輸速率 
connect_timeout=60 主動模式數據連接超時時長(連接時間:秒為單位 )accept_timeout=60 被動模式數據連接超時時長
data_connection_timeout=300 數據連接無數據輸超時時長
idle_session_timeout=60 無命令操作超時時長
ascii_upload_enable=YES(優先以文本方式傳輸)
ascii_download_enable=YES
View Code

配置FTP服務以非獨立服務方運行:listen=NO,默認為獨立方式 cat /etc/xinetd.d/vsftpd

service ftp {
  flags = REUSE
  socket_type = stream
  wait = no
  user = root
  server = /usr/sbin/vsftpd
  log_on_failure += USERID
  disable = no } 

FTP復雜功能實現

實現基於SSL的FTPS :

查看是否支持SSL ldd `which vsftpd` 支持可查看到libssl.so

創建自簽名證書 cd /etc/pki/tls/certs/ && make vsftpd.pem openssl x509 -in vsftpd.pem -noout –text

配置vsftpd服務支持SSL:

/etc/vsftpd/vsftpd.conf ssl_enable=YES 啟用

SSL allow_anon_ssl=NO 匿名不支持

SSL force_local_logins_ssl=YES 本地用戶登錄加密

force_local_data_ssl=YES 本地用戶數據傳輸加密

rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem

vsftpd虛擬用戶 : 所有虛擬用戶會統一映射為一個指定的系統帳號:訪問共享位 置,即為此系統帳號的家目錄 ,各虛擬用戶可被賦予不同的訪問權限,通過匿名用戶的權限控 制參數進行指定

虛擬用戶帳號的存儲方式: 文件:編輯文本文件,此文件需要被編碼為hash格式 (奇數行為用戶名,偶數行為密碼 )

實現基於文件驗證的vsftpd虛擬用戶

一、創建用戶數據庫文件

vim /etc/vsftpd/vusers.txt    (heiye   wangpass  \n  xiaoyao xiaoyaopass)
cd /etc/vsftpd/
db_load -T -t hash -f vusers.txt vusers.db
chmod 600 vusers.db  

二、創建用戶和訪問FTP目錄 •

useradd -d /var/ftproot -s /sbin/nologin vuser
chmod +rx /var/ftproot/    
centos7 還需要執行以下操作:
chmod -w /var/ftproot/
mkdir /var/ftproot/upload
setfacl -m u:vuser:rwx /var/ftproot/upload

三、創建pam配置文件

vim /etc/pam.d/vsftpd.db

  • auth required pam_userdb.so db=/etc/vsftpd/vusers
  • account required pam_userdb.so db=/etc/vsftpd/vusers

四、指定pam配置文件

vim /etc/vsftpd/vsftpd.conf

  • guest_enable=YES
  • guest_username=vuser
  • pam_service_name=vsftpd.db

五、SELinux設置: 禁用SELinux 或者 setsebool -P ftpd_full_access 1

六、虛擬用戶建立獨立的配置文件

mdkir /etc/vsftpd/vusers.d/ 創建配置文件存放的路徑

vim /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vusers.d/

cd /etc/vsftpd/vusers.d/ 進入此目錄

允許heiye用戶可讀寫,其它用戶只讀

vim heiye 創建各用戶自已的配置文件

  • anon_upload_enable=YES
  • anon_mkdir_write_enable=YES
  • anon_other_write_enable=YES

vim xiaoyao 創建各用戶自已的配置文件local_root=/ftproot 登錄目錄改變至指定的目錄

實現基於MYSQL驗證的vsftpd虛擬用戶:

一、安裝所需要包和包組: 在數據庫服務器上安裝包,在FTP服務器上安裝vsftpd和pam_mysql包,需手動編譯安裝的 :

yum -y groupinstall "Development Tools"

yum -y install mariadb-devel pam-devel vsftpd

下載pam_mysql-0.7RC1.tar.gz

./configure --with-mysql=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security && make && make install

二、在數據庫服務器上創建虛擬用戶賬號

1.建立存儲虛擬用戶數據庫和連接的數據庫用戶 mysql> CREATE DATABASE vsftpd; mysql> SHOW DATABASES;

  • ftp服務和mysql不在同一主機: mysql> GRANT SELECT ON vsftpd.* TO vsftpd@‘172.18.%.%‘ IDENTIFIED BY ‘centos‘;
  • ftp服務和mysql在同一主機: mysql> GRANT SELECT ON vsftpd.* TO vsftpd@localhost IDENTIFIED BY ‘heiye‘;

2.準備相關表

mysql> USE vsftpd;

mysql> CREATE TABLE users ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name CHAR(50) BINARY NOT NULL, password CHAR(48) BINARY NOT NULL );

3.添加虛擬用戶

mysql>DESC users; mysql> INSERT INTO users(name,password) values(‘heiye‘,password(‘magedu‘));

mysql> INSERT INTO users(name,password) values(‘heiye‘,password(‘centos‘));

mysql> SELECT * FROM users;

三、在FTP服務器上配置vsftpd服務

1.在FTP服務器上建立pam認證所需文件 vi /etc/pam.d/vsftpd.mysql 添加如下兩行

auth required pam_mysql.so user=vsftpd passwd=centos host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

account required pam_mysql.so user=vsftpd passwd=centos host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

註意:crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示 使用mysql password()函數加密,3表示md5加密,4表示 sha1加密

配置字段說明

技術分享圖片
• auth 表示認證
• account 驗證賬號密碼正常使用
• required 表示認證要通過
• pam_mysql.so模塊是默認的相對路徑,是相對/lib64/security/路 徑而言,也可以寫絕對路徑;後面為給此模塊傳遞的參數
• user=vsftpd為登錄mysql的用戶
• passwd=magedu 登錄mysql的的密碼
• host=mysqlserver mysql服務器的主機名或ip地址
• db=vsftpd 指定連接msyql的數據庫名稱
• table=users 指定連接數據庫中的表名
• usercolumn=name 當做用戶名的字段
• passwdcolumn=password 當做用戶名字段的密碼
• crypt=2 密碼的加密方式為mysql password()函數加密
View Code

2.建立相應用戶和修改vsftpd配置文件,使其適應mysql認證 建立虛擬用戶映射的系統用戶及對應的目錄

useradd -s /sbin/nologin -d /var/ftproot vuser
chmod 555 /var/ftproot(centos7 需除去ftp根目錄的寫權限 )
mkdir /var/ftproot/{upload,pub}
setfacl –m u:vuser:rwx /var/ftproot/upload
確保/etc/vsftpd.conf中已經啟用了以下選項 anonymous_enable=YES
添加下面兩項
guest_enable=YES
guest_username=vuser
修改下面一項,原系統用戶無法登錄
pam_service_name=vsftpd.mysql  

四、啟動vsftpd服務

service vsftpd start
systemctl start vsftpd
chkconfig vsftpd on
systemctl enable vsftpd 

查看端口開啟情況 netstat -tnlp |grep :21

五、Selinux相關設置:在FTP服務器上執行

restorecon -R /lib64/security
setsebool -P ftpd_connect_db 1
setsebool -P ftp_home_dir 1
chcon -R -t public_content_rw_t /var/ftproot/  

六、測試:利用FTP客戶端工具,以虛擬用戶登錄驗證結果

tail /var/log/secure

七、在FTP服務器上配置虛擬用戶具有不同的訪問權限

vsftpd可以在配置文件目錄中為每個用戶提供單獨的配置文件以 定義其ftp服務訪問權限,每個虛擬用戶的配置文件名同虛擬用 戶的用戶名。配置文件目錄可以是任意未使用目錄,只需要在 vsftpd.conf指定其路徑及名稱即可

1、配置vsftpd為虛擬用戶使用配置文件目錄 vim /etc/vsftpd/vsftpd.conf 添加如下選項

user_config_dir=/etc/vsftpd/vusers_config

2、創建所需要目錄,並為虛擬用戶提供配置文件

mkdir /etc/vsftpd/vusers_config/
cd /etc/vsftpd/vusers_config/
touch xiaoyao  heiye 

3、配置虛擬用戶的訪問權限

虛擬用戶對vsftpd服務的訪問權限是通過匿名用戶的相關指令進行的。如果需要讓用戶heiye具有上傳文件的權限,可以修改/etc/vsftpd/vusers_config/wang文件,在裏面添加如下選項並設置為YES即可,只讀則設為NO 註意:需確保對應的映射用戶對於文件系統有寫權限

  • anon_upload_enable={YES|NO}
  • anon_mkdir_write_enable={YES|NO}
  • anon_other_write_enable={YES|NO}

網絡文件共享整理(FTP,NFS,Samba)