ftp

FTP連接方式
控制連接:標準端口爲21,用於發送FTP命令信息
數據連接:標準端口爲20,用於上傳、下載數據
數據連接的建立類型:
 主動模式:服務端從20端口主動向客戶端發起連接
 被動模式:服務端在指定範圍內的某個端口被動等待客戶端發起連接
FTP傳輸模式
文本模式:ASCII模式,以文本序列傳輸數據
二進制模式:Binary模式,以二進制序列傳輸數據

FTP用戶的類型
匿名用戶:anonymous或ftp
本地用戶:
 帳號名稱、密碼等信息保存在passwd、shadow文件中
虛擬用戶:
 使用獨立的帳號/密碼數據文件
常見的FTP服務器程序
IIS、Serv-U
wu-ftpd、Proftpd
vsftpd(Very Secure FTP Daemon)


主配置文件vsftpd.conf

常用的全局配置項
listen=YES:是否以獨立運行的方式監聽服務
listen_address=192.168.4.1:設置監聽的IP地址
listen_port=21:設置監聽FTP服務的端口號
write_enable=YES:是否啓用寫入權限
download_enable=YES:是否允許下載文件
userlist_enable=YES:是否啓用user_list列表文件
userlist_deny=YES:是否禁用user_list中的用戶
max_clients=0:限制併發客戶端連接數
max_per_ip=0:限制同一IP地址的併發連接數


常用的匿名FTP配置項
anonymous_enable=YES:啓用匿名訪問
anon_umask=022:匿名用戶所上傳文件的權限掩碼
anon_root=/var/ftp:匿名用戶的FTP根目錄
anon_upload_enable=YES:允許上傳文件
anon_mkdir_write_enable=YES:允許創建目錄
anon_other_write_enable=YES:開放其他寫入權
anon_max_rate=0:限制最大傳輸速率,單位爲字節

常用的本地用戶FTP配置項
local_enable=YES:是否啓用本地系統用戶
local_umask=022:本地用戶所上傳文件的權限掩碼
local_root=/var/ftp:設置本地用戶的FTP根目錄
chroot_local_user=YES:是否將用戶禁錮在主目錄
local_max_rate=0:限制最大傳輸速率(字節/秒)

構建可匿名上傳的vsftpd服務器

調整上傳目錄的屬主或權限
確保匿名用戶ftp有權寫入文件
 chown ftp /var/ftp/pub
修改vsftpd.conf主配置文件
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
write_enable=YES
anon_umask=022
anon_mkdir_write_enable=YES
....
啓動vsftpd服務:
service vsftpd start
測試

構建本地用戶驗證的vsftpd服務器

修改vsftpd.conf配置文件
啓用本地用戶訪問
並可以結合user_list文件靈活控制用戶訪問
vi /etc/vsftpd/vsftpd.conf
local_enable=YES
write_enable=YES
userlist_deny=yes
重新啓動vsftpd服務:
service vsftpd restart

構建基於虛擬用戶的vsftpd服務器

1.建立虛擬FTP用戶的帳號數據庫文件
建立虛擬用戶的賬戶名、密碼列表
#vi /etc/vsftpd/vusers.list
mike
123
john
456
# cd /etc/vsftpd/
# db_load -T -t hash -f vusers.list   vusers.db
# file vusers.db
vusers.db: Berkeley DB (Hash, version 8, native byte-order)
# chown 600 /etc/vsftpd/vusers.*

建立虛擬用戶的賬戶名,密碼列表:奇數行爲賬號名,偶數行爲上一行中賬號的密碼;
轉化爲Berkeley DB 格式的數據文件:db_load轉化工具,需安裝db4-utils-4.3.29-9.fc6.i386.rpm軟件包
在使用 db_load 命令時,“-f”選項用於指定用戶名/密碼列表文件,“-T”選項允許非Berkeley DB的應用程序使用從文本格式轉換的DB數據文件,“-t hash”選項指定讀取數據文件的基本方法。關於db_load命令的詳細說明可參閱/usr/share/doc/db4-utils-4.3.29/utility/db_load.html文件
將帳號文件的權限設置爲600,可以有效提高安全性

2.創建FTP根目錄及虛擬用戶映射的系統用戶
# mkdir /var/ftproo
# useradd -d /var/ftproot -s /sbin/nologin virtual
# chmod 755 /var/ftproot/

3.建立支持虛擬用戶的PAM認證文件
# vi /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth       required     pam_userdb.so db=/etc/vsftpd/vusers
account    required     pam_userdb.so db=/etc/vsftpd/vusers

4.在vsftpd.conf文件中添加支持配置
# vi  /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_umask=022
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu
……
5.爲個別虛擬用戶建立獨立的配置文件
在vsftpd.conf文件中添加用戶配置目錄支持
 user_config_dir=/etc/vsftpd/vusers_dir
爲用戶mike、john建立獨立的配置目錄及文件
 配置文件名與用戶名同名
# mkdir /etc/vsftpd/vusers_dir/
# cd /etc/vsftpd/vusers_dir/
# touch mike
# vi john
anon_upload_enable=YES
anon_mkdir_write_enable=YES

6.重新加載vsftpd配置
service vsftpd reload

7.使用虛擬FTP賬戶訪問測試
分別用mike、john用戶登錄FTP服務器進行下載、上傳測試
 mike用戶可以登錄,並可以瀏覽、下載文件,但無法上傳
 john用戶可以登錄,並可以瀏覽、下載文件,也可以上傳
 匿名用戶或其他系統用戶將不能登錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章