FreeBSD下配置vsftpd虛擬用戶
VSFTPD是一個(gè)安全高效的FTP服務(wù)軟件,得到了廣泛的應(yīng)用。
本地用戶經(jīng)過設(shè)置后可以進(jìn)行ftp訪問。而匿名用戶的訪問經(jīng)過了轉(zhuǎn)換,在系統(tǒng)中。匿名用戶的用戶名為ftp, 系統(tǒng)將其屬性設(shè)置為 根目錄 /var/ftp/, 禁止控制臺(tái)登陸,也就是,該用戶只能進(jìn)行ftp訪問。
FreeBSD下vsftpd 的執(zhí)行程序?yàn)?/usr/local/libexec/vsftpd, 一般情況下調(diào)用 /usr.local/libexec/vsftpd & 即可啟動(dòng)VSFTPD, 注意,修改 /usr.local/etc/vsftpd.conf文件中的listen要設(shè)置為YES.
VSFTPD有兩種開機(jī)自啟動(dòng)模式: inet模式和standalone模式,推薦使用standalone模式。 兩種模式的啟動(dòng)方法依次為:
1. inet模式
修改 /etc/inet.conf 修改或添加,使以下行有效:
ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/vsftpd
并修改 /usr.local/etc/vsftpd.conf文件,使 listen=NO
2. standalone模式
修改/etc/inet.conf文件并注釋掉vsftpd的啟動(dòng)行。
修改 /usr.local/etc/vsftpd.conf文件,使 listen=YES
在 /usr/local/etc/rc.d/下添加vsftpd 的啟動(dòng)腳本
VSFTPD的基本設(shè)置
VSFTPD的配置文件為/usr.local/etc/vsftpd.conf, 有多個(gè)選項(xiàng),下面一一說明:
| Anonymous_enable=yes | 允許匿名登陸, 設(shè)置為yes后,ftp用戶和anonymous用戶都被認(rèn)為以匿名登陸 | 
| Dirmessage_enable=yes | 切換目錄時(shí),顯示目錄下.message的內(nèi)容, 可以在vsftpd.conf文件中通過message_file修改文件名 | 
| Local_umask=022 | FTP上本地的文件權(quán)限,默認(rèn)是077, 前面有0認(rèn)為是8進(jìn)制,無0認(rèn)為是十進(jìn)制 | 
| Connect_from_port_20=yes | 啟用FTP數(shù)據(jù)端口的數(shù)據(jù)連接 | 
| Xferlog_enable=yes | 激活上傳和下傳的日志 | 
| Xferlog_std_format=yes | 使用標(biāo)準(zhǔn)的日志格式 | 
| Ftpd_banner=XXXXX | 歡迎信息 | 
| Pam_service_name=vsftpd | 驗(yàn)證方式 * | 
| Listen=yes | 獨(dú)立的VSFTPD服務(wù)器 * | 
| Anon_upload_enable=yes | 開放上傳權(quán)限 | 
| Anon_mkdir_write_enable=yes | 可創(chuàng)建目錄的同時(shí)可以在此目錄中上傳文件 | 
| Write_enable=yes | 開放本地用戶寫的權(quán)限 | 
| Anon_other_write_enable=yes | 匿名帳號(hào)可以有刪除的權(quán)限 | 
| Anon_world_readable_only=no | 放開匿名用戶瀏覽權(quán)限 | 
| Ascii_upload_enable=yes | 啟用上傳的ASCII傳輸方式 | 
| Ascii_download_enable=yes | 啟用下載的ASCII傳輸方式 | 
| Banner_file=/var/vsftpd_banner_file | 用戶連接后歡迎信息使用的是此文件中的相關(guān)信息 | 
| Idle_session_timeout=600(秒) | 用戶會(huì)話空閑后10分鐘 | 
| Data_connection_timeout=120(秒) | 將數(shù)據(jù)連接空閑2分鐘斷 | 
| Accept_timeout=60(秒) | 將客戶端空閑1分鐘后斷 | 
| Connect_timeout=60(秒) | 中斷1分鐘后又重新連接 | 
| Local_max_rate=50000(bite) | 本地用戶傳輸率50K | 
| Anon_max_rate=30000(bite) | 匿名用戶傳輸率30K | 
| Pasv_min_port=50000 | 將客戶端的數(shù)據(jù)連接端口改在 | 
| Pasv_max_port=60000 | 50000—60000之間 | 
| Max_clients=200 | FTP的最大連接數(shù) | 
| Max_per_ip=4 | 每IP的最大連接數(shù) | 
| Listen_port=5555 | 從5555端口進(jìn)行數(shù)據(jù)連接 | 
| Local_enble=yes | 本地帳戶能夠登陸 | 
| Write_enable=no | 本地帳戶登陸后無權(quán)刪除和修改文件 | 
| 下面這是一組 | |
| Chroot_local_user=yes | 本地所有帳戶都只能在自家目錄 | 
| Chroot_list_enable=yes | 文件中的名單可以調(diào)用 | 
| Chroot_list_file=/任意指定的路徑/vsftpd.chroot_list | 前提是chroot_local_user=no | 
| 這又是一組 | |
| Userlist_enable=yes | 在指定的文件中的用戶不可以訪問 | 
| Userlist_deny=yes | |
| Userlist_file=/指定的路徑/vsftpd.user_list | |
| 又開始單的了 | |
| Banner_fail=/路徑/文件名 | 連接失敗時(shí)顯示文件中的內(nèi)容 | 
| Ls_recurse_enable=no | |
| Async_abor_enable=yes | |
| one_process_model=yes | |
| Listen_address=10.2.2.2 | 將虛擬服務(wù)綁定到某端口 | 
| Guest_enable=yes | 虛擬用戶可以登陸 | 
| Guest_username=所設(shè)的用戶名 | 將虛擬用戶映射為本地用戶 | 
| User_config_dir=/任意指定的路徑/為用戶策略自己所建的文件夾 | 指定不同虛擬用戶配置文件的路徑 | 
| 又是一組 | |
| Chown_uploads=yes | 改變上傳文件的所有者為root | 
| Chown_username=root | |
| 又是一組 | |
| Deny_email_enable=yes | 是否允許禁止匿名用戶使用某些郵件地址 | 
| Banned_email_file=//任意指定的路徑/xx/ | |
| 又是單的 | |
| Pasv_enable=yes | 服務(wù)器端用被動(dòng)模式 | 
| User_config_dir=/任意指定的路徑//任意文件目錄 | 指定虛擬用戶存放配置文件的路徑 | 
3. 虛擬用戶的設(shè)置
所謂虛擬用戶,就是在本地用戶中不存在,而又可以遠(yuǎn)程登陸的ftp用戶。一般多采用pam 認(rèn)證方式。 本節(jié)只考慮使用pam_pwdfile.so庫(kù)文件進(jìn)行認(rèn)證。更多的可能采用的是 mysql數(shù)據(jù)庫(kù)進(jìn)行認(rèn)證。
基本的設(shè)置過程如下。
在 vsftp.conf中進(jìn)行如下設(shè)置使 vsftpd 知道采用的是 pam的認(rèn)證方式。
Guest_enable=YES Guest_username=virtual # 該用戶是系統(tǒng)的本地用戶
Pam_service_name=vsftpd # 該文件指明pam認(rèn)證對(duì)應(yīng)的配置文件,默認(rèn)存儲(chǔ)位置/etc/pam.d/
配置 pam認(rèn)證,復(fù)制 /etc/pam.d/ftpd 為 vsftpd
在vsftpd文件前加入以下兩句
auth sufficient /lib/security/pam_pwdfile.so pwdfile=/etc/vsftpd_login account sufficient pam_permit.so
注: 這樣做是為了使本地用戶與遠(yuǎn)程用戶都能夠登入
pam_pwdfile.so 系統(tǒng)默認(rèn)沒有安裝,進(jìn)入ports/security/ 進(jìn)行安裝,注意安裝后的so文件與以上文件路徑
生成 /etc/vsftpd_login 文件, 該文件是口令文件,記錄了用戶名和口令的hash編碼
編輯虛擬用戶名及口令文件 /root/vsftp.login, 格式如下
用戶名:口令
生成以下perl腳本 fileter.pl
###########################
#! /usr/bin/perl -w use strict;
# filter "user:cleartext" lines into "user:md5_crypted"
# probably requires glibc
while (<>) {
chomp;
(my $user, my $pass) = split /:/, $_, 2;
my $crypt = crypt $pass, '$1$' . gensalt(8);
print "$user:$crypt";
}
sub gensalt {
my $count = shift;
my @salt = ('.', '/', 0 .. 9, 'A' .. 'Z', 'a' .. 'z');
my $s;
$s .= $salt[rand @salt] for (1 .. $count);
return $s;
}
shell下運(yùn)行 perl /root/fileter.pl /root/vsftp.login > /etc/vsftpd_login刪除vsftp.login, 注意vsftpd_login最好不要帶文件類型,pam認(rèn)證好像忽略類型名
在vsftpd.conf中修改為:
User_config_dir = /usr/loca/etc/virtual/ # 需手工mk
以各用戶名為文件名生成各文件,設(shè)置用戶的訪問權(quán)限。語(yǔ)法與 vsftpd.conf中相同。
重啟 vsftp就可以了。
原文:楊旺軍的博客
【編輯推薦】















 
 
 
 
 
 
 