ftp(簡單文件傳輸協議),是一種應用廣泛的網絡文件傳輸協議和服務,占用20和21號端口,主要用於資源的上傳和下載.

在linux對於ftp同widows一樣具有很多的種類,這里主要介紹vsfptd(非常安全的守護進程)
的三種登錄方法(匿名登錄和本地登錄及虛擬登錄)極其一些主要的配置
首先用yum安裝vsftpd

/etc/vsftpd/vsftpd.conf為ftp的主要配置文件
啟動ftp服務 :service vsfptd restart
![]()
把其加入到開機項

匿名登錄
匿名用戶登錄ftp server配置比較簡單,默認是允許匿名登錄ftp server的,主要是考慮權限和selinux及iptables
對ftp server的約束

這里可對ftp server作一些優化,使client登錄ftp server可以執行上傳及創建文件等高權限的操作

當client訪問ftp server時訪問是可以的,但當創建文件時提示權限不夠,此時便可以修改selinux對ftp的安全控制


本地登錄
禁止匿名登錄用本地創建的賬號登錄ftp 服務器

在/etc/vsftpd目錄下有ftpusers和user_list可對本地系統賬號作限制登錄,只要把配置文件里出現的賬戶抹去即可
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

虛擬登錄
首先在/etc/vsftpd目錄下創建虛擬用戶登錄ftp server的用戶名和密碼對應文件/etc/vsftpd/vuser.list
u1 //奇數行代表用戶名
123 //偶數行代表密碼
u2
123
利用哈希加密,把創建的登錄虛擬用戶文件加密為vuser.db,並設置權限
[root@localhost ~]# db_load -T -t hash /etc/vsftpd/vsftpd.list /etc/vsftpd/vsftpd.db
vim 編輯/etc/pam.d/vsftpd.vu 創建PAM認證文件
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
設置一個不允許系統登錄的賬戶對應着虛擬用戶登錄ftp server時所用的家目錄
[root@localhost ~]# useradd -d /var/ftproot/ -s /usr/sbin/nologin virtual
為了讓虛擬用戶登錄系統具有可以一些列的權限,可以在/etc/vsftpd下創建虛擬用戶權限目錄vuser_dir,並同時創建和虛擬用戶名相同的文件,設置權限
[root@localhost ~]# cd /etc/vsftpd/vusrs_dir/
[root@localhost vusrs_dir]#
[root@localhost vusrs_dir]#
[root@localhost vusrs_dir]# ls
u1 u2
[root@localhost vusrs_dir]#
[root@localhost vusrs_dir]#
vim /etc/vsftpd/vuser_dir/u2
anon_mkdir_write_enable=YES
anon_upload_enable=YES
接下來重要的是把先前創建好的一些列文件在主配置文件/erc/vsftpd/vsftpd.conf里調用
user_config_dir=/etc/vsftpd/vusers_dir //虛擬用戶權限文件目錄
guest_enable=YES //允許虛擬用戶登錄ftp
guest_username=virtual //虛擬用戶名
allow_writeable_chroot=YES //允許虛擬用戶目錄取消牢籠機制
pam_service_name=vsftpd.vu //指定pam認證文件的位置
在客戶端登錄ftp server,發現可以成功用虛擬賬戶登錄ftp server,從一定程度上提升了ftp server的安全性
[root@localhost vusrs_dir]# ftp 10.0.0.1
Connected to 10.0.0.1 (10.0.0.1).
220 (vsFTPd 3.0.2)
Name (10.0.0.1:root): u2
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
優化
1:本地用戶登錄訪問控制
下面對ftp server坐一些優化,在前面說到的采用本地登錄方法登錄ftp server,處在/etc/vsftp/vuser|root文件被 ftp server列為黑名單,這是由於/etv/vsftpd/vsftpd.conf下的userlist_enable選項導致的,只要把"YES"改為NO,黑名單里的用戶便可已登錄ftp server,但黑名單外的
用戶則不可以登錄ftp server
userlist_enable=NO
2:最大連接數
若由多個client同時登錄 ftp server,就難免造成ftp server的流量分配不均,可以用
max-clinets number //對同一時間的client做最大限制
max-per_ip number //對同一IP做最大限制
3:用戶隔離
vim編輯/etc/vsftpd/vsftp.conf:
取消 chroot_local_user=YES前的注釋,限制用戶只能在自己當前的目錄


4:會話和數據傳輸超時時間控制
Idle_session_timeout //設置會話超時的最大時間
Data_connection_timeout //設置數據傳輸超時的最大時間

