自己動手搭建FTP服務(wù)
時間:2023-07-09 15:09:01 | 來源:網(wǎng)站運營
時間:2023-07-09 15:09:01 來源:網(wǎng)站運營
自己動手搭建FTP服務(wù):
FTP連接方式- 控制連接:標(biāo)準(zhǔn)端口為21,用于發(fā)送FTP命令信息
- 數(shù)據(jù)連接:標(biāo)準(zhǔn)端口為20,用于上傳、下載數(shù)據(jù)
數(shù)據(jù)連接的建立類型- 主動模式:服務(wù)端從20端口主動向客戶端發(fā)起連接
- 命令連接:客戶端 >1023端口 -> 服務(wù)器 21端口
- 數(shù)據(jù)連接:客戶端 >1023端口 <- 服務(wù)器 20端口
- 被動模式:服務(wù)端在指定范圍內(nèi)的某個端口被動等待客戶端發(fā)起連接
- 命令連接:客戶端 >1023端口 -> 服務(wù)器 21端口
- 數(shù)據(jù)連接:客戶端 >1023端口 -> 服務(wù)器 >1023端口
主動模式與被動模式FTP優(yōu)缺點主動FTP對FTP服務(wù)器的管理有利,但對客戶端的管理不利,因為FTP服務(wù)器企圖與客戶端的高位隨機端口建立連接,而這個端口很有可能被客戶端的防火墻阻塞掉。被動FTP對FTP客戶端的管理有利,但對服務(wù)器端的管理不利,因為客戶端要與服務(wù)器端建立兩個連接,其中一個連到一個高位隨機端口,而這個端口很有可能被服務(wù)器端的防火墻阻塞掉。
既然FTP服務(wù)器的管理員需要他們的服務(wù)器有最多的客戶連接,那么必須得支持被動FTP。我們可以通過為FTP服務(wù)器指定一個有限的端口范圍來減小服務(wù)器高位端口的暴露。這樣,不在這個范圍的任何端口會被服務(wù)器的防火墻阻塞,雖然這沒有消除所有針對服務(wù)器的危險,但它大大減少了危險。
FTP用戶的類型- 匿名用戶:anonymous或ftp //匿名用戶登陸FTP無需密碼
- 本地用戶:帳號名稱、密碼等信息保存在passwd、shadow文件中
- 虛擬用戶:使用獨立的帳號/密碼數(shù)據(jù)文件
FTP軟件包安裝- RPM安裝方式:rpm –ivh vsftpd-2.2.2-6.e16.x86_64.rpm
- YUM安裝方式:yum –y install vsftpd
FTP服務(wù)相關(guān)的配置文件與服務(wù)腳本- 主配置文件:/etc/vsftpd/vsftpd.conf
- 服務(wù)名稱:vsftpd
用戶控制列表文件- /etc/vsftpd/ftpusers //禁止登錄FTP服務(wù)器的本地用戶列表文件,該文件中的本地用戶將被拒絕登錄FTP服務(wù)器
- /etc/vsftpd/user_list //該文件中包含的本地用戶可能被禁止登錄FTP服務(wù)器,也可能被允許登錄,具體是由主配置文件vsftpd.conf中決定
- 當(dāng)存在userlist_enable=yes的配置項時user_list文件生效,如果配置userlist_deny=yes,則僅禁止user_list中的用戶登錄
- 如果配置userlist_deny=no,則僅允許user_list中的用戶登錄
常見配置項及含義說明- anonymous_enable=YES //是否允許匿名用戶ftp或anonymous登錄
- anon_root=/var/ftp //設(shè)置匿名用戶的FTP根目錄(缺省為/var/ftp)
- anon_umask=022 //設(shè)置匿名用戶所上傳文件的默認(rèn)權(quán)限掩碼值
- anon_world_readable_only=no //允許匿名用戶瀏覽下載文件的權(quán)限
- anon_upload_enable=YES //是否允許匿名用戶上傳文件(若開啟了selinux功能,則要將sftpd_anon_write的布爾值設(shè)為on)
- anon_mkdir_write_enable=YES //是否允許匿名用戶有創(chuàng)建目錄的權(quán)利
- anon_other_write_enable=YES //是否允許匿名用戶有其他寫入權(quán)限,如對文件改名、覆蓋、及刪除文件
- anon_max_rate //限制匿名用戶的最大傳輸速率(0為無限制),單位為字節(jié)
- dirmessage_enable=YES //是否顯示目錄說明文件,默認(rèn)是YES但需要手工創(chuàng)建.message文件
- local_enable=YES //是否允許本地用戶登錄
- local_umask=022 //設(shè)置本地用戶所上傳文件的默認(rèn)權(quán)限掩碼值
- local_root=/var/ftp //設(shè)置本地用戶的FTP根目錄(缺省為用戶的宿主目錄)
- local_max_rate //限制本地用戶的最大傳輸速率(0為無限制)單位為字節(jié)
- chroot_local_user=yes //是否將FTP本地用戶禁錮在宿主目錄中
- listen_port 21 //設(shè)置監(jiān)原FTP服務(wù)的端口號
- write_enable=yes //啟用任何形式的寫入權(quán)限(如上傳、刪除文件等)都需要開啟此項
- download_enable=yes //是否允許下載文件(建立僅限于瀏覽、上傳的FTP服務(wù)器時可將其設(shè)為no)
- xferlog_enable=YES //是否記錄ftp傳輸過程,即啟用FTP日志,默認(rèn)記錄到/var/log/xferlog文件中
- xferlog_std_format=yes //啟用標(biāo)準(zhǔn)的xferlog日志格式,若禁用此項,將使用vsftpd自已的日志格式
- connect_from_port_20=YES //是否確信端口傳輸來自20端口
- chown_upload=YES、chown_username=username //是否改變上傳文件的屬主,如果是需要輸入一個系統(tǒng)用戶名,你可以把上傳的文件都改成root屬主
- pasv_enable=yes //允許被動模式連接
- pasv_max_port=24600 //設(shè)置用于被動模式的服務(wù)器最大端口號
- pasv_min_port=24500 //設(shè)置用于被動模式的服務(wù)器最小端口號
- pam_service_name=vsftpd //設(shè)置用于用戶認(rèn)證的PAM文件位置(/etc/pam.d目錄中對應(yīng)的文件名)
- userlist_enable=yes //是否啟用user_list用戶列表文件
- userlist_deny=yes //是否禁止user_list列表文件中的用戶賬號
- max_clients=0 //最多允許多少個客戶端同進連接FTP服務(wù)器(0為無限制)
- max_per_ip=0 //對來自相同IP地址的客戶端,最多允許多少個并發(fā)連接(0為無限制)
- tcp_wrappers=yes //是否啟用tcp_wrappers訪問控制
- idle_session_timeout=600 //設(shè)置默認(rèn)的斷開不活躍session的時間
- accept_timeout=60 將客戶端空閑斷開時間,單位:秒
實例一、實現(xiàn)匿名用戶上傳FTP#mkdir /var/ftp/upload //創(chuàng)建用于上傳的目錄
設(shè)置匿名用戶(ftp)對upload目錄的寫權(quán)限,有兩種常用方法
- 方法1: #chown ftp /var/ftp/loadup //將upload目錄的屬主修改為ftp用戶
- 方法2:# setfacl -m g:ftp:rwx /var/ftp/upload //通過acl設(shè)置ftp組賬號對upload目錄的w權(quán)限
1. 本例采用方法2實現(xiàn)對upload目錄的寫權(quán)限,如下圖所示:
2. 修改/etc/vsftpd/vsftpd.conf配置文件打開允許匿名用戶上傳功能,如下圖所示
#vi /etc/vsftpd/vsftpd.conf
3. 修改selinux允許匿名用戶上傳
4. iptables防火墻規(guī)則設(shè)置
實例二:實現(xiàn)本地用戶登錄FTP服務(wù)器1:修改selinux允許本地用戶登錄
2:修改selinux允許本地用戶上傳
3:禁錮本地用戶在其宿主目錄內(nèi)