文件服務:
應用層:ftp;
內核級網絡文件系統:nfs
POSIX(可移植操作系統接口 Portable Operating System Interface of UNIX,縮寫為 POSIX )
API(應用程序編程接口)
跨平臺的網絡文件系統:cifs (samba)
網絡存儲:
NAS:Network
Attached Stoage,文件系統級接口;
SAN:Storage Area
Network ,塊級別接口;iSCSI;
ftp:應用層協議
file
transfer protocol,21/tcp
C/S:
Client
<–> Server
連接:
命令連接;
數據連接:、
基于不同的套接字通信;
數據傳輸模式:
文本格式:
二進制格式:
數據連接:
主動模式:服務端通過20/tcp連接客戶端命令連接端口+1的端口;
問題:
被動模式:客戶端使用隨機端口連接服務器某隨機端口;
客戶端發出數據傳輸請求之后,服務器響應一個報文給客戶端;
112,123;
協議安全:
明文;認證時傳輸的賬號和密碼均為明文;
安全增強:
ftps:
ftp over ssl (基于傳輸層的協議,更多時候通用安全通信框架)
sftp:
ftp over ssh (基于應用層的協議,完成用戶遠程認證登錄)
C/S:協議的實現:就是開發出來符合協議要求的應用軟件
S:Serv-U、IIS、FileZilla
Server
C:
CLI:ftp, lftp,
curl, wget, lftpget, …
GUI:FileZilla,
flashfxp, cute, gftp, …
S:開源解決方案;
wuftpd:washington
university
vsftpd:very secure
ftp daemon
pureftp:
proftpd:
程序環境:init:service
vsftpd start 啟動服務,監聽端口為21
主程序:/usr/sbin/vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
數據根目錄:/var/ftp
Systemd
Unit File: /usr/lib/systemd/system/vsftpd.service
配置vsftpd:
用戶類別:
匿名用戶:anonymous –>
ftp, /var/ftp
系統用戶: 至少禁止系統用戶訪問ftp服務,/etc/vsftpd/ftpusers,PAM 插入式認證模塊(/etc/pam.d/vsftpd);
虛擬用戶:
用戶通過vsftpd服務訪問到的默認路徑,是用戶自己的家目錄;默認可以自己有權限訪問的所有路徑間切換;
禁錮用戶于其家目錄中;
配置文件:/etc/vsftpd/vsftpd.conf
directive
value
注意:directive之前不能有多余字符;
匿名用戶:
anonymous_enable=YES 是否允許匿名賬戶訪問,默認是允許,NO表示禁止
anon_upload_enable=YES 默認處于注釋狀態,表示是否允許用戶上傳文件
anon_mkdir_write_enable=YES 是否允許用戶創建目錄,默認為開啟,編輯開啟
anon_other_write_enable=YES 是否允許用戶刪除文件,默認未開啟,自己添加
系統用戶:
使用:lftp -u centos
172.18.253.24,登錄本地用戶
local_enable=YES
是否允許系統用戶或者本地用戶登錄,默認允許,且可以上傳文件、刪除文件、創建目錄、刪除目錄
write_enable=YES
輔助配置文件/etc/vsftpd/ftpusers;
列在此文件中的用戶 均禁止使用ftp服務;
chroot_local_user=YES
禁錮所有本地用戶 于其家目錄;需要事先去除用戶對家目錄的寫權限;
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
禁錮列表中文件存在的用戶于其家目錄中;需要事先去除用戶對家目錄的寫權限;
傳輸日志:
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
守護進程的類型:
standalone:獨立守護進程;由服務進程自行監聽套按字,并接收用戶訪問請求;
transient:瞬時守護進程;由受托管方代為監聽套按字,服務進程沒有訪問請求時不啟動;當托管方收到訪問請求時,才啟動服務進程;
CentOS 6:xinetd獨立守護進程,
/etc/xinetd.d/,
CentOS 7:由systemd代為監聽;
控制可登錄vsftpd服務的用戶列表:
userlist_enable=YES
啟用/etc/vsftpd/user_list文件來控制可登錄用戶;
userlist_deny=
YES:意味著此為黑名單;
NO:白名單;
虛擬用戶:
用戶賬號存儲于何處?
文件、MySQL、Redis、…
vsftpd:認證功能托管給pam;
基于何種存儲服務來存儲用戶信息,以及對存儲服務的驅動要靠pam實現;
pam_mysql:
# yum
install mariadb-devel pam-devel
# ./configure
–with-pam=/usr –with-mysql=/usr –with-pam-mods-dir=/usr/lib64/security
# make
&& make install
創建數據庫、授權用戶、創建賬號和密碼;
提供配置文件:/etc/pam.d/vsftpd.vusers
auth
required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu
host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password
crypt=2
account
required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu
host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password
crypt=2
配置vsftpd,添加或修改以下選項:
pam_service_name=vsftpd.vusers
文件名必須和上面創建的文件同名
guest_enable=YES
guest_username=vuser 其中vuser是可以隨意創建的
虛擬用戶的寫權限,通過匿名一樣的指令進行定義;
還能實現不同的用戶有不同的權限;
1.在vsftp.conf里面加入如下一行
user_config_dir=/etc/vsftpd/vusers_config/
2.其次在/etc/vsftpd/vusers_config,建立以用戶名命名的文件并編輯
vim tom
anon_upload_enbale=NO
#不允許虛擬用戶tom上傳文件
vim
jerry
anon_upload_enable=YES #允許虛擬用戶jerry上傳文件
原創文章,作者:oranix,如若轉載,請注明出處:http://www.www58058.com/74592