標籤:vsftpd 伺服器 ftp 虛擬使用者
什麼是vsftpd?
vsftpd是一個類UNIX作業系統上的一個FTP伺服器,包括linux。vsftpd全稱是very secure FTP daemon(非常安全的FTP進程),顧名思義,安全是它的一大特性。
比如說vsftpd是在chroot模式下工作的,通俗chroot模式就是把它禁錮在一個目錄中,禁止它訪問別的目錄。如果你不是用chroot模式,使用系統使用者帳號登陸FTP時,那麼便有了這個使用者的所有權力,這樣豈不是很不安全?
理解FTP協議
在配置vsftp之前,先說一下什麼是FTP,FTP(File Transfer Protocol)是檔案傳輸通訊協定的簡稱。工作於應用程式層,用於上傳或下載檔案,能夠將一個主機的檔案分享權限設定給其他主機。
FTP有兩種串連方式,命令串連和資料連線。命令串連也叫控制串連,是一直線上,21/tcp,和伺服器進行溝通。資料連線是按需開啟,按需關閉的,請求下載檔案時開啟,傳輸完畢後關閉。
FTP有兩種模式,主動FTP和被動FTP。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5D/2C/wKioL1UiKOSCKKTZAAChNGg4jgw140.jpg" title="QQ20150ddddddddddddd406142829.png" alt="wKioL1UiKOSCKKTZAAChNGg4jgw140.jpg" />
主動FTP有兩次TCP三向交握,最終在20號連接埠建立書籍串連。一次是用戶端發起,另一次由伺服器端發起。首先用戶端以大於1024的源連接埠向FTP的伺服器端21號目標連接埠發起串連請求。另一次是FTP伺服器端主動發起到用戶端的串連,使用20號源連接埠,主動向用戶端的1025號連接埠發起串連請求。但是防火牆可能會阻止,因此有了被動FTP。
被動FTP伺服器端只是用21號連接埠,也有兩次TCP的三向交握,只不過三向交握都是由用戶端發起的。第一次用戶端以1024為源連接埠向FTP伺服器的21號連接埠發起串連請求,FTP伺服器告訴用戶端使用1024--5000的連接埠進行資料轉送,這個訊息幀屬於第一次三向交握的一部分。而後第二次三向交握開始,用戶端使用1025號源連接埠主動串連伺服器端的發來的連接埠號碼。這樣都是用戶端發起的串連請求,防火牆便不會阻止。
FTP使用者
FTP有三類使用者,無論那種使用者都要映射為一個系統使用者。
匿名使用者:anonymous使用者
系統使用者:passwd中記錄的使用者
虛擬使用者:建立一個系統帳號,將所有帳號映射到此使用者訪問,使用的不是系統使用者帳號,提高安 全性
簡單配置vsftpd
rpm包安裝
# yum install vsftpd
# service vsftpd on
# chkconfig vsftpd on
vsftp設定檔調整及說明
annoymous_enable=YES 允許匿名使用者登入
local_enable=YES 是否開啟系統使用者
write_enable=YES 是否允許系統使用者上傳檔案
anon_upload_enable=NO 匿名使用者不可上傳檔案
local_umask=022 上傳檔案的許可權設定
anon_mkdir_write_enable=NO 匿名使用者不能建立目錄
anon_other_write_enable=NO 匿名使用者不能刪除檔案
dirmessage_enable=YES 顯示使用者歡迎資訊,比如在/var/ftp/.message檔案中
寫一句‘Welcome‘,則使用者進入/var/ftp目錄時,會 顯示此資訊。
xferlog_enable=YES 開啟日誌傳輸
xferlog_file=/var/log/vsftpd.log 定義日誌傳輸檔案,若不存在,請事先建立
#chown_upload 上傳檔案後將屬主改為其他使用者
#chown_username 改為哪個使用者,不建議root使用者
connect_from_port_20=YES 20號連接埠進行資料連線
idle_session_timeout =600 控制連線逾時時間
data_connection_timeout =120 單次資料連線時間
#ascii_upload_enable=YES
#ascii_download_enable=YES 以純文字格式實現上傳下載,有兩種資料轉送模式,文 本和二進位,建議不要開啟此項。
chroot_local_user=YES 每一個使用者都禁錮在家母錄中
#chroot_list_file_enable=YES 用一個檔案將使用者鎖在家目錄下
#chroot_list_file=/etc/vsftpd/chroot_list 哪一個檔案中建立一個使用者列表,所有在此列表中的用 戶都禁錮在家目錄當中。
listen=YES vsftpd是否工作為一個獨立的守護進程
pam_service_name=vsftpd 所有寫在ftpuser都禁止登入ftp伺服器
userlist_enable=YES 拒絕user_list中使用者登入
userlist_deny=YES 拒絕user_list中使用者登入,若改為NO則僅允許user_list 中使用者登入
#max_clients 最大登入FTP伺服器用戶端的個數
#max_per_ip 每一個單獨IP允許發起幾個串連請求
基於mysql的虛擬使用者
# yum -y install mysql-server mysql-devel
# service mysqld start
# chkconfig mysqld on
# tar xf pam_mysql-0.7RC1.tar.gz
# cd pam_mysql-0.7RC1
# ./configure --with-mysql=/usr --with-openssl
# make
# make install
mysql> CREATE DATABASE vsftpd
mysql>US E vsftpd
mysql> CREATE TABLE users (
-> id INT AUTO_INCREMENT NOT NULL,
-> name CHAR(20) BINARY NOT NULL,
-> password CHAR(48) BINARY NOT NULL,
-> PRIMARY KEY (id));
mysql> GRANT SELECT ON vsftpd.* TO [email protected] IDENTIFIED BY ‘vsftpd‘;
mysql> GRANT SELECT ON vsftpd.* TO [email protected] IDENTIFIED BY ‘vsftpd‘;
mysql> FLUSH PRIVILEGES;
mysql> INSERT INTO users (name,password) VALUES (‘tom‘,‘xiaoming‘),(‘cat‘,‘xiaoming‘);
#vim /etc/pam.d/vsftpd.mysql
auth required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
account required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
# useradd -s /sbin/nologin -d /var/ftproot vuser
# chmod go+rx /var/ftproot
# vim /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.mysql
# service vsfptd restart
即可。
本文出自 “在路上” 部落格,請務必保留此出處http://mingxiao.blog.51cto.com/8124243/1629366
vsftpd伺服器搭建