文件服務:
ftp:應用層,C/S,文件共享;file transfer protocol; nfs,cifs:文件系統接口,網絡文件系統; nfs:network file system cifs:common internet file system samba 網絡存儲: NAS:Network Attached Storage,文件服務器,nfs或cifs,文件級別; SAN:Storage Area Network,塊級別共享服務,分區-->格式化-->創建文件系統;IPSAN, FCSAN;
ftp:
file transfer protocol,21/tcp也可以說監聽在20號端口做數據連接的傳輸通道!(主動模式下使用 TCP 20號端口,被動模式使用隨機端口,被動模式下向客戶端發送數據時發送一個 除以 256 得商和余數的數據讓客戶端去請求這個端口)
C/S: Client --> ftp-->Server Client:Connect Server:Listen 連接: 命令連接:命令傳輸,連接一直存在; 數據連接:數據傳輸,按需創建; 數據連接的建立模式: 主動模式:服務器通過20/tcp主動連接客戶端的命令連接端口向后最近一個空閑端口;PORT; 被動模式:客戶端發出數據請求后,服務端會響應一個打開的臨時使用的隨機端口號發送給客戶端,客戶端對此端口進行請求;PASV; 數據傳輸模式: 文本格式:ASCII 二進制格式:BINARY 協議安全: 明文:數據、認證時傳輸賬號和密碼均是明文 ; 安全增強: ftp over ssl/tls:ftps ftp over ssh:sftp 虛擬用戶賬號; c/s: Server: Windows:Serv-U, IIS, ... 開源解決方案: wuftpd:Washington University ftp daemon vsftpd:Very Secure ftp daemon proftpd, pureftpd, ... Client: GUI:flashfxp, cute, filezilla, gftp, ... CLI:ftp, lftp, ...
vsftpd:
程序環境:
-
主程序:/usr/sbin/vsftpd
Unit File:/usr/lib/systemd/system/vsftpd.service -
配置文件:/etc/vsftpd/vsftpd.conf
-
文檔路徑映射:
fedora, /home/fedora/pub/a.txt --> ftp://HOST:PORT/pub/a.txt 用戶的家目錄映射:訪問vsftpd服務必須以某個系統用戶的身份進行;此用戶的家目錄即為文檔映射的根目錄; 匿名用戶:anonymous,映射為一個系統用戶,此用戶為ftp;
配置:vsftpd.conf
-
格式 :directive VALUE,…
directive:指令之前不能存在任何字符,包括空白;
-
匿名用戶配置:
anonymous_enable=YES anon_upload_enable=YES 才能上傳 anon_mkdir_write_enable=YES 才能新建目錄 anon_other_write_enable=YES 開放其他的寫權限,這樣才能刪除
-
本地用戶:root用戶不能登錄ftp
local_enable=YES write_enable=YES 注意:凡是在/etc/vsftpd/ftpusers中的用戶都不能登錄
-
認證服務:
pam_service_name=vsftpd
/etc/pam.d/vsftpd pam: pluggable authencate module:插入式認證模塊
-
切換目錄時的提示信息:
dirmessage_enable=YES 匿名用戶就是創建/var/ftp/*/.messages 文件, *表示你想在那個目錄下顯示提示信息 ,提示信息寫在 此文件內
-
修改上傳文件的屬主:
chown_uploads=YES chown_username=USERNAME (這里改成要改的屬主名,不指名默認root)
-
數據傳輸模式
connect_from_port_20=YES 是否啟用PORT模式
-
設定會話超時時長
idle_session_timeout=600 data_connection_timeout=120 數據傳輸閑時時長
-
設定連接及傳輸速率
local_max_rate:本地用戶的最大傳輸速率,單位字節;默認為0,表示無限制; anon_max_rate:匿名用戶的最大傳輸速率 max_clients:最大并發連接數; max_per_ip:每個IP允許發起的最大連接數;
-
禁錮用戶于自己的家目錄:
會引入別的風險,因此,要求用戶對自己的家目錄不能有寫權限;
先touch /etc/vsftpd/chroot_list 此文件用來存用戶名
(1) 禁錮所有用戶 chroot_local_user=YES (2) 禁錮部分用戶 (a) 白名單:名單中的用戶不被禁錮; chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list (b) 黑名單:名單中的用戶被禁錮 chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
-
/etc/vsftpd/user_list控制用戶訪問vsftpd:
(1) 白名單,僅此文件中的用戶能登錄 userlist_enable=YES userlist_deny=NO (2) 黑名單,默認 userlist_enable=YES userlist_deny=YES
具體可以參考 man vsftpd.conf
虛擬用戶賬號:
vsftpd依賴pam完成認證,pam存儲支持的認證方式,vsftpd都可調用;
pam:認證框架 模塊化:/lib64/security/pam*.so 配置文件:/etc/pam.conf和/etc/pam.d/* 賬號密碼存儲于何處? 文件、MySQL、ldap、redis、...
pam_mysql模塊
CentOS 6:epel CentOS 7:編譯安裝
/etc/pam.d/vsftpd
編譯安裝pan: (1) 編譯環境; (2) 依賴關系:mariadb-devel, pam-devel # ./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security/ # make install
MySQL設置: mysql> CREATE DATABASE vsftpd; 創建數據庫 mysql> GRANT ALL ON vsftpd.* TO 'vsftpd'@'127.0.0.1' IDENTIFIED BY 'mageedu'; 創建用戶并授權 mysql> CREATE TABLE vsftpd.users (uid SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE KEY,name VARCHAR(100) NOT NULL PRIMARY KEY,password CHAR(48) NOT NULL); 創建表在vsftp下叫users mysql> use vsftpd 進入vsftp mysql> INSERT INTO users (name,password) VALUES ('tom',PASSWORD('mageedu')),('jerry',PASSWORD('mageedu')),('lucy',PASSWORD('mageedu')); MariaDB [(none)]> flush privileges; 同步數據庫 準備要映射成為的系統賬號:(就是創建一個家目錄) # mkdir -pv /ftproot/{pub,upload} # useradd -d /ftproot vuser # setfacl -m u:vuser:rwx /ftproot/upload 準備基于mysql認證的pam配置文件:/etc/pam.d/vsftpd.mysql,把以下文件復制到此文件中 auth required pam_mysql.so host=127.0.0.1 user=vsftpd passwd=mageedu db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 account required pam_mysql.so host=127.0.0.1 user=vsftpd passwd=mageedu db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 配置vsftpd啟用虛擬用戶,并使用指定的pam service:vsftpd.conf pam_service_name=vsftpd.mysql guest_enable=YES guest_username=vuser 配置每虛擬用戶擁有不同的權限:vsftpd.conf user_config_dir=/etc/vsftpd/vusers_conf # mkdir /etc/vsftpd/vusers_conf 創建那個提供配置文件的目錄 # touch USERNAME 創建配置各個虛擬用戶的權限文件 tom 、lucy 等文件(文件名必須為用戶名) 權限配置指令:(把一下的這些復制到剛創建的文件中) anon_upload_enable=YES 開放上傳權限 anon_mkdir_write_enable=YES 開放創建目錄權限 anon_other_write_enable=YES 開放創建文件權限
原創文章,作者:qzx,如若轉載,請注明出處:http://www.www58058.com/52840