文件服務:
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
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
本地用戶:
local_enable=YES
write_enable=YES
認證服務:
pam_service_name=vsftpd
/etc/pam.d/vsftpd
pam: pluggable authencate module
切換目錄時的提示信息:
dirmessage_enable=YES
.messages
修改上傳文件的屬主:
chown_uploads=YES
chown_username=USERNAME
禁錮用戶于自己的家目錄:
會引入別的風險,因此,要求用戶對自己的家目錄不能有寫權限;
(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
user_list控制用戶訪問vsftpd:
(1) 白名單
userlist_enable=YES
userlist_deny=NO
(2) 黑名單,默認
userlist_enable=YES
userlist_deny=YES
虛擬用戶賬號:
vsftpd依賴pam完成認證,pam存儲支持的認證方式,vsftpd都可調用;
賬號密碼存儲于何處?
文件、MySQL、ldap、redis、…
pam_mysql模塊
CentOS 6:epel
CentOS 7:編譯安裝
編譯:
(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);
mysql> INSERT INTO users (name,password) VALUES ('tom',PASSWORD('mageedu')),('jerry',PASSWORD('mageedu')),('lucy',PASSWORD('mageedu'));
準備要映射成為的系統賬號:
# 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
權限配置指令:
anon_upload_enable
anon_mkdir_write_enable
anon_other_write_enable
在CentOS 7的環境下進行vsftpd服務的配置
1.準備編譯環境
2.準備依賴環境
yum install pam-devel mariadb-devel
3.編譯安裝pam_mysql
4.在數據庫中創建對應的相關信息
創建一個數據庫,專門存放vsftp服務的相關數據,并對一個用戶授權使其擁有管理這個數據庫的權限,而不使用root賬戶進行管理,保證數據庫的安全性
在對應的數據庫中創建一個用戶表,將可以訪問的用戶成員信息及密碼,添加到該表中
創建ftp訪問目錄,并創建虛擬用戶,并對目錄設置acl權限
創建基于mysql認證的pam配置文件
touch /etc/pam.d/vsftpd.mysql
修改/etc/vsftpd/vsftpd.conf文件中的配置參數
對每個擁有權限訪問vsftpd服務的用戶進行權限控制
touch USERNAME 創建以用戶名作為文件名的文件
進行相應的權限設置
測試賬戶的有效性
原創文章,作者:Stupid_L,如若轉載,請注明出處:http://www.www58058.com/51701