搭建Linux-VSFTP
Linux搭建vsftp。所謂vsftp,就是very secure FTP daemon。在Linux上搭建FTP,可以選擇proftpd、pureftpd、和vsftpd等軟件。
在vsftp創建虛擬的ftp用戶。所謂虛擬用戶,就是不在系統中存在,而且在不同的虛擬用戶有不同的權限,例如UP用戶只能上傳,不能修改下載;DOWN用戶只能下載,不能上傳修改。
以紅帽企業版RHEL5爲例,搭建虛擬用戶的vsftp。設置靜態IP地址。
安裝軟件:
rpm -Uvh /media/cdrom/Server/vsftpd-2.0.5-10.el5.i386.rpm
Vsftp的配置文件在
/etc/vsftpd/vsftpd.conf
我們可以複製一份配置文件作備份。因爲原文件太多#了,cat一個新配置文件去掉所有#。
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
cat /etc/vsftpd/vsftpd.conf.bak | grep -v ^# >>/etc/vsftpd/vsftpd.conf
然後就可以修改了
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO //是否啓用匿名
local_enable=YES //是否本地用戶登陸
write_enable=YES //是否寫入權限(上傳,刪除等需開)
local_umask=022 //本地用戶上傳文件默認權限掩碼值
dirmessage_enable=YES //用戶切換進入目錄時顯示
xferlog_enable=YES //啓用日誌
connect_from_port_20=YES //從20端口連接
xferlog_std_format=YES //標誌日誌格式
listen=YES //監聽
pam_service_name=vsftpd //用戶認證PAM,位於/etc/pam.d/對應的文件
userlist_enable=YES //啓用userlist用戶列表
tcp_wrappers=YES //啓用TCP_Wrappers主機訪問控制。
啓用匿名訪問,則登陸時不需要用戶名密碼。
關閉匿名訪問,啓用userlist列表,則需要輸入userlist裏的用戶和相應密碼。
通常登陸ftp後,需要禁錮用戶在其登陸目錄下,否則將會亂竄其他目錄。在配置文件中添加一項:
chroot_local_user=YES
如果只監聽一個地址,則修改配置文件:
listen_address=192.168.1.1
Listen_port=2121
使用FTP被動模式,則修改配置文件:
pasv_enable=YES //允許被動模式連接
pase_mis_port=12306 //指定被動連接最小端口
pasv_max_port=23061 //制定被動連接最大端口
限制FTP連接併發、傳輸速率等,則修改配置文件:
max_clients=20 //限制併發客戶最大20人
max_per_ip=2 //限制每個IP最大連接2個
anan_max_rate=50000 //限制匿名傳輸率爲50kb/s
local_max_rate=100000 //限制本地用戶傳輸率爲200kb/s
虛擬用戶的FTP服務。
建立虛擬用戶賬號數據庫。使用Berkeley DB格式的數據庫文件來存放虛擬用戶賬號。需要用到db_load工具,遊db4-utils軟件包提供。
rpm -Uvh /media/cdrom/Server/db4-utils-4.3.29-9.fc6.i386.rpm
建立用戶名密碼,單數行爲用戶,雙數行爲密碼!!
vim /etc/vsftpd/vusers.list
up
up
down
down
保存退出
進入vsftp目錄並創建Berkeley DB格式數據庫文件。
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)
修改賬號安全性,將文件權限改爲600。
chmod 600 /etc/vsftpd/vuser.*
添加虛擬用戶映射賬號,創建FTP根目錄:
useradd -d /var/ftproot -s /sbin/nologin virtual
chmod 755 /var/ftproot/
爲虛擬用戶建立PAM認證文件:
vim /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
保存退出
爲不同虛擬用戶建立獨立的配置文件:
mkdir /etc/vsftpd/vusers_dir
mkdir /var/ftproot/up
確保上傳成功,修改up的權限
chmod a+x /var/ftproot/up
mkdir /var/ftproot/down
配置up用戶的信息
vim /etc/vsftpd/vusers_dir/up
local_root=/var/ftproot/up //up用戶的ftp目錄
anon_mkdir_write_enable=YES //有寫入權限
anon_upload_enable=YES //有上傳權限
download_enable=NO //沒有下載權限
anon_umask=022 //上傳後文件掩碼
保存退出
配置down用戶的信息
vim /etc/vsftpd/vusers_dir/down
local_root=/var/ftproot/down //down用戶的ftp目錄
download_enable=YES //下載權限
保存退出
修改vsftp配置文件,添加虛擬用戶支持:
vim /etc/vsftpd/vsftpd.conf
..... //略
anonymous_enable=NO //關閉匿名登陸
guest_enable=YES //啓用用戶映射功能
guest_username=virtual //制定映射的系統用戶名
pam_service_name=vsftpd.vu //制定新的PAM認證文件
user_config_dir=/etc/vsftpd/vusers_dir //虛擬用戶配置文件
保存退出
啓動vsftpd服務
service vsftpd start
如果訪問不到,則將防火牆、selinux都關閉掉。
service iptables stop
setenforce 0
驗證上傳下載:
用up用戶登錄,並上傳。
下載卻失敗
打開也失敗
down用戶下載
上傳卻失敗。
至此,up和down用戶僅存在數據庫中,並沒有真正存在系統裏的用戶。所以安全級別提高了,而且配置起來也簡單,可以隨心而欲,這就是VSFTP。