超完整RedHat9.0-vsftp配置大全
3.2 VSFTP 安全與效能兼備的ftp 伺服器
3.2.1 VSFTP 概述
FTP,file transfer protocol,這是檔案傳輸的通訊傳輸協定,也是一般最常用來傳送檔案的方式。讀者在使用RedHat9 的時候,可能會感受到ftp server 有一些改變:第一,就是ftp server 只剩下vsftp,原有的wuftp 等都沒放入第二,就是vsftp 從XINETD 中獨立出來,並將設定檔從/etc/vsftpd.conf 之中移到/etc/vsftpd/vsftpd.conf。
為什麼做這樣的改變?可以想見的是vsftp 已有獨立運作的能力,不需要XINETD 來做更進一步的管控,並且類似sendmail、httpd、ssh、samba 等,將設定文件的放入/etc 下獨立的目錄。
FTP 分為兩類,一種為PORT FTP,也就是一般的FTP 另一類是PASVFTP,分述如下:
##CONTINUE##
PORT FTP
這是一般形式的FTP,首先會建立控制頻道,預設值是port 21,也就是跟port 21 建立連線電腦,並透過此連線電腦下達指令。第二,由FTP server 端會建立資料傳輸頻道,預設值為20,也就是跟port 20 建立連線電腦,並透過port 20 作資料的傳輸。
PASV FTP
跟PORT FTP 類似,首先會建立控制頻道,預設值是port 21,也就是跟port 21 建立連線電腦,並透過此連線電腦下達指令。第二,會由client 端做出資料傳輸的請求,包括資料傳輸port 的數字。
這兩者的差異為何?PORT FTP 當中的資料傳輸port 是由FTP server 指定,而PASV FTP 的資料傳輸port 是由FTP client 決定。通常我們使用PASV FTP,是在有防火牆的環境之下,透過client 與server 的溝通,決定資料傳輸的port。
3.2.2 範例
3.2.1. 直接啟動VSFTP 服務
這個範例是套用RedHat 的預設範例,直接啟動vsftp。
[root@relay vsftpd]# /sbin/service vsftpd start
Starting vsftpd for vsftpd: OK ]
3.2.2. 更換port 提供服務:將預設的port 21 更換為2121
為了安全,或是以port 來區隔不同的ftp 服務,我們可能會將ftp port 改為21 之外的port,那麼,可參考以下步驟。
Step1. 修改/etc/vsftpd/vsftpd.conf
新增底下一行
listen_port=2121
Step2. 重新啟動vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
3.2.3. 特定使用者peter、john 不得變更目錄
使用者的預設目錄為/home/username,若是我們不希望使用者在ftp 時能夠
切換到上一層目錄/home,則可參考以下步驟。
Step1. 修改/etc/vsftpd/vsftpd.conf
將底下三行
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
改為
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
Step2. 新增一個檔案: /etc/vsftpd/chroot_list
內容增加兩行:
peter
john
我在ubuntu 9.04則是/etc/vsftpd.chroot_list
Step3. 重新啟動vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
我在ubuntu 9.04啟動是打
[root@home vsftpd]# /etc/init.d/vsftpd restart
若是peter 欲切換到根目錄以外的目錄,則會出現以下警告:
ftp> cd /home
550 Failed to change directory.
使用PASS FTP mode:
修改/etc/vsftpd/vsftpd.conf
新增底下四行
listen_port=2121
pasv_enable=YES
pasv_min_port=9981
pasv_max_port=9986
Step3. 重新啟動vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
在這邊要注意,在10 這個例子中,ftp client(如cuteftp)的連線電腦方式必須選項passive mode,否則無法建立資料的連線電腦。也就是讀者可以連上ftp server,但是執行ls,get 等等的指令時,便無法運作。