知識點:
1、FTP使用TCP連接和TCP端口
2、在進行通信時,FTP需要建立兩個TCP連接:
一個用於控制信息,TCP端口號缺省為21
一個用於數據傳輸,TCP端口號缺省為20
3、Vsftp是一個基於GPL發布的類Unix系統上的FTP服務器
4、其名稱中的VS即“Verysecure”的意思,可見安全性高。
配置:
1、查看是否安裝了Vsftp
#rpm –qa vsftpd
2、安裝
放入第三張光盤
#mount /mnt/cdrom
#cd /mnt/cdrom/RedHat/RPMS
#rpm –ivh vsftpd-1.1.3-8.i386.rpm
#cd;eject
3、Vsftp服務啟動與停止
#service vsftpd start 啟動
#service vsftpd stop 停止
#service vsftpd restart 重啟
永久啟動:#setup
#ps –ax | grep vsftpd 查看進程是否啟動。
#chkconfig –level 2345 vsftpd on 設置在系統啟動時,自動啟動進程。
4、訪問Vsftp
進入 ftp 192.168.0.1
輸入密碼進入後:ls 查看 put 上傳 get下載
離開bye
5、配置文件
主配置文件 /etc/vsftpd/vsftpd.conf
用戶控制文件 /etc/vsftpd.ftpusers 作用:指定哪些用戶不能訪問FTP,相當於一個黑名單
主配置文件:
option=value
要注意的是,等號兩邊不能加空白,不然是不正確的設定。
===ascii 設定=====================
ascii_download_enable
管控是否可用ASCII模式下載。默認值為NO。
ascii_upload_enable
管控是否可用ASCII模式上傳。默認值為NO。
===個別使用者設定===================
chroot_list_enable
如果啟動這項功能,則所有的本機使用者登入均可進到根目錄之外的數據夾,除了列在/etc/vsftpd.chroot_list之中的使用者之外。默認值為NO。
userlist_enable
用法:YES/NO
若是啟動此功能,則會讀取/etc/vsftpd.user_list 當中的使用者名稱。此項功能可以在詢問密碼前就出現失敗訊息,而不需要檢驗密碼的程序。默認值為關閉。
userlist_deny
用法:YES/NO
這個選項只有在userlist_enable啟動時才會被檢驗。
如果將這個選項設為YES,則在/etc/vsftpd.user_list 中的使用者將無法登入,若設為NO,則只有在/etc/vsftpd.user_list中的使用者才能登入。
而且此項功能可以在詢問密碼前就出現錯誤訊息,而不需要檢驗密碼的程序。
user_config_dir
定義個別使用者設定文件所在的目錄,例如定義user_config_dir=/etc/vsftpd/userconf,且主機上有使用者test1,test2,那我們可以在user_config_dir 的目錄新增文件名為test1以及test2。若是test1登入,則會讀取user_config_dir下的test1這個檔案內的設定。
默認值為無。
===歡迎語設定=====================
dirmessage_enable
如果啟動這個選項,使用者第一次進入一個目錄時,會檢查該目錄下是否有.message這個檔案,若是有,則會出現此檔案的內容,通常這個檔案會放置歡迎話語,或是對該目錄的說明。默認值為開啟。
banner_file
當使用者登入時,會顯示此設定所在的檔案內容,通常為歡迎話語或是說明。默認值為無。
ftpd_banner
這邊可定義歡迎話語的字符串,相較於banner_file是檔案的形式,而ftpd_banner是字串的格式。默認值為無。
===特殊安全設定====================
chroot_local_user
如果設定為YES,那麼所有的本機的使用者都可以切換到根目錄以外的數據夾。默認值值為NO。
hide_ids
如果啟動這項功能,所有檔案的擁有者與群組都為ftp,也就是使用者登入使用ls -al之類的指令,所看到的檔案擁有者跟群組均為ftp。默認值為關閉。
ls_recurse_enable
若是啟動此功能,則允許登入者使用ls -R 這個指令。默認值為NO。
write_enable
用法:YES/NO
這個選項可以控制FTP的指令是否允許更改file system,譬如STOR、DELE、RNFR、RNTO、MKD、RMD、APPE以及SITE。默認值為關閉。
setproctitle_enable
用法:YES/NO
啟動這項功能,vsftpd 會將所有聯機的狀況已不同的process呈現出來,換句話說,使用ps -ef這類的指令就可以看到聯機的狀態。默認值為關閉。
tcp_wrappers
用法:YES/NO
如果啟動,則會將vsftpd與tcp_wrapper結合,也就是可以在/etc/hosts.allow與/etc/hosts.deny中定義允許或拒絕的來源地址。
pam_service_name
這邊定義PAM所使用的名稱,默認值為vsftpd。
secure_chroot_dir
這個選項必須指定一個空的數據夾且任何登入者都不能有寫入的權限,當vsftpd不需要file system的權限時,就會將使用者限制在此數據夾中。默認值為/usr/share/empty。
===紀錄文件設定=====================
xferlog_enable
用法:YES/NO
如果啟動,上傳與下載的信息將被完整紀錄在底下xferlog_file 所定義的檔案中。默認值為開啟。
xferlog_file
這個選項可設定紀錄文件所在的位置,默認值為/var/log/vsftpd.log。
xferlog_std_format
如果啟動,則紀錄文件將會寫為xferlog 的標准格式,如同wu-ftpd一般。默認值為關閉。
===逾時設定======================
accept_timeout
接受建立聯機的逾時設定,單位為秒。默認值為60。
connect_timeout
響應PORT方式的數據聯機的逾時設定,單位為秒。默認值為60。
data_connection_timeout
建立數據聯機的逾時設定。默認值為300秒。
idle_session_timeout
發呆的逾時設定,若是超出這時間沒有數據的傳送或是指令的輸入,則會強迫斷線,單位為秒。默認值為300秒。
===速率限制======================
anon_max_rate
匿名登入所能使用的最大傳輸速度,單位為每秒多少bytes,0表示不限速度。默認值為0。
local_max_rate
本機使用者所能使用的最大傳輸速度,單位為每秒多少bytes,0表示不限速度。默認值為0。
===新增檔案權限設定==================
anon_umask
匿名登入者新增檔案時的umask 數值。默認值為077。
file_open_mode
上傳檔案的權限,與chmod 所使用的數值相同。默認值為0666。
local_umask
本機登入者新增檔案時的umask 數值。默認值為077。
===port 設定======================
connect_from_port_20
用法:YES/NO
若設為YES,則強迫ftp-data 的數據傳送使用port 20。默認值為YES。
ftp_data_port
設定ftp 數據聯機所使用的port。默認值為20。
listen_port
FTP server 所使用的port。默認值為21。
pasv_max_port
建立資料聯機所可以使用port范圍的上界,0表示任意。默認值為0。
pasv_min_port
建立資料聯機所可以使用port范圍的下界,0表示任意。默認值為0。
===其它========================
anon_root
使用匿名登入時,所登入的目錄。默認值為無。
local_enable
用法:YES/NO
啟動此功能則允許本機使用者登入。默認值為YES。
local_root
本機使用者登入時,將被更換到定義的目錄下。默認值為無。
text_userdb_names
用法:YES/NO
當使用者登入後使用ls -al 之類的指令查詢該檔案的管理權時,默認值會出現擁有者的UID,而不是該檔案擁有者的名稱。若是希望出現擁有者的名稱,則將此功能開啟。默認值為NO。
pasv_enable
若是設為NO,則不允許使用PASV 的模式建立數據的聯機。默認值為開啟。
===更換檔案所有權===================
chown_uploads
用法:YES/NO
若是啟動,所有匿名上傳數據的擁有者將被更換為chown_username 當中所設定的使用者。這樣的選項對於安全及管理,是很有用的。默認值為NO。
chown_username
這裡可以定義當匿名登入者上傳檔案時,該檔案的擁有者將被置換的使用者名稱。默認值為root。
===guest 設定======================
guest_enable
用法:YES/NO
若是啟動這項功能,所有的非匿名登入者都視為guest。默認值為關閉。
guest_username
這裡將定義guest 的使用者名稱。默認值為ftp。
===anonymous 設定====================
anonymous_enable
用法:YES/NO
管控使否允許匿名登入,YES 為允許匿名登入,NO 為不允許。默認值為YES。
no_anon_password
若是啟動這項功能,則使用匿名登入時,不會詢問密碼。默認值為NO。
anon_mkdir_write_enable
用法:YES/NO
如果設為YES,匿名登入者會被允許新增目錄,當然,匿名使用者必須要有對上層目錄的寫入權。默認值為NO。
anon_other_write_enable
用法:YES/NO
如果設為YES,匿名登入者會被允許更多於上傳與建立目錄之外的權限,譬如刪除或是更名。默認值為NO。
anon_upload_enable
用法:YES/NO
如果設為YES,匿名登入者會被允許上傳目錄的權限,當然,匿名使用者必須要有對上層目錄的寫入權。默認值為NO。
anon_world_readable_only
用法:YES/NO
如果設為YES,匿名登入者會被允許下載可閱讀的檔案。默認值為YES。
ftp_username
定義匿名登入的使用者名稱。默認值為ftp。
deny_email_enable
若是啟動這項功能,則必須提供一個檔案/etc/vsftpd.banner_emails,內容為email address。若是使用匿名登入,則會要求輸入email address,若輸入的email address在此檔案內,則不允許聯機。默認值為NO。
===Standalone 選項====================
listen
用法:YES/NO
若是啟動,則vsftpd將會以獨立運作的方式執行,若是vsftpd獨立執行,如RedHat Linux 9的默認值,則必須啟動;若是vsftpd包含在xinetd之中,則必須關閉此功能,如RedHat Linux 8。在RedHat Linux 9中默認值為YES。
listen_address
若是vsftpd 使用standalone 的模式,可使用這個參數定義使用哪個IP address提供這項服務,若是主機上只有定義一個IP address,則此選項不需使用,若是有多個IP address,可定義在哪個IP address上提供ftp服務。若是不設定,則所有的IP address均會提供此服務。默認值為無。
max_clients
若是vsftpd使用standalone的模式,可使用這個參數定義最大的總聯機數。超過這個數目將會拒絕聯機,0表示不限。默認值為0。
max_per_ip
若是vsftpd使用standalone的模式,可使用這個參數定義每個ip address所可以聯機的數目。超過這個數目將會拒絕聯機,0表示不限。默認值為0。
實驗一、設置Chroot——用戶不能切換目錄
因為默認情況下是可以切換目錄的,所以是很不安全的。。
1、限制所有用戶不能切換目錄
chroot_local_user=YES
2、設置指定的用戶不能切換目錄
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
實驗二、用Vsftp.user_list訪問控制
利用/etc/vsftpd.user_list
A、設置在/etc/vsftpd.user_list文件中用戶不能訪問,其它用戶可以訪問
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.user_listB、設置在/etc/vsftpd.user_list文件中的用戶能訪問國,其它用戶不可以訪問。
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list
實驗三、簡單虛擬用戶
讓abc用戶不能登錄系統,只能登入FTP
#adduser –g ftp –s /sbin/nologin abc
#passwd abc