本文原址鏈接:http://www.syitren.com/bbs/thread-1376-1-1.html
轉載請註明!
VSFTPD是一種在UNIX/Linux中非常安全且快速的FTP伺服器,目前已經被許多大型站點所採用。VSFTPD支
持將用戶名和口令保存在資料庫文件或資料庫伺服器中。VSFTPD稱這種形式的用戶為虛擬用戶。相對於
FTP的本地(系統)用戶來說,虛擬用戶只是FTP伺服器的專有用戶,虛擬用戶只能訪問FTP伺服器所提供
的資源,這大大增強系統本身的安全性。相對於匿名用戶而言,虛擬用戶需要用戶名和密碼才能獲取FTP
伺服器中的文件,增加了對用戶和下載的可管理性。對於需要提供下載服務,但又不希望所有人都可以匿
名下載;既需要對下載用戶進行管理,又考慮到主機安全和管理方便的FTP站點來說,虛擬用戶是一種極
好的解決方案。本文介紹在centos上如何將VSFTPD的虛擬用戶名和密碼保存在MySQL資料庫伺服器中。
1)安裝vsftp
# tar -zxvf vsftpd-2.0.6.tar.gz
# cd vsftpd-2.0.6
安裝步驟可以參照目錄下INSTALL文件
# mkdir /usr/share/empty/
# mkdir /var/ftp/
# useradd -d /var/ftp ftp
# chown root.root /var/ftp
# chmod og-w /var/ftp
#make;make install
#cp vsftpd /usr/local/sbin/vsftpd
#mkdir /usr/local/man
#cp vsftpd.conf.5 /usr/local/man/man5
#cp vsftpd.8 /usr/local/man/man8
# cp RedHat/vsftpd.pam /etc/pam.d/ftp
#cp vsftpd.conf /etc
#vi /etc/vsftpd.conf
在最後添加一行
listen=YES
啟動vsftp服務
#/usr/local/sbin/vsftpd &
然後用anonymous或者ftp用戶測試一下,密碼都為空
允許本地用戶登陸:
#vi /etc/vsftpd.conf
local_enable=YES
pam_service_name=ftp
然後新建一個用戶,重啟一下服務登陸測試一下
#killall -HUP vsftpd //重啟vsftpd服務
禁錮用戶的主目錄:
#touch /etc/vsftpd.chroot_list
a、限制所有用戶不能切換目錄
chroot_local_user=YES
b、設置指定的用戶不能切換目錄
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
然後把需要禁錮主目錄的用戶輸入到/etc/vsftpd.chroot_list文件中就可以了
用DB庫存儲用戶名及密碼
a)建立虛擬用戶口令庫文件,口令庫文件中奇數行設置用戶名,偶數行設置口令
# cat logins.txt
aaa
123456
bbb
123456
b)生成vsftpd的認證文件
# db_load -T -t hash -f logins.txt /etc/ vsftpd_login.db
# chmod 600 /etc/ vsftpd_login.db
c) 建立虛擬用戶所需的PAM配置文件
# cat /etc/pam.d/ftp (把原來的都註釋掉)
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
d)建立虛擬用戶及要訪問的目錄並設置相應的許可權
# useradd -d /home/ftpsite virtual
# chmod 700 /home/ftpsite/
e)在配置文件/etc/vsftpd/vsftpd.conf中添加虛擬用戶的配置內容
guest_enable=YES
guest_username=virtual
pam_service_name=ftp //這行前面已經加過了
然後重啟一下vsftp服務,使用aaa和bbb用戶測試一下
對虛擬用戶設置不同的許可權
#vi /etc/vsftpd/vsftpd.conf
添加用戶配置文件目錄設置,增加一行
user_config_dir=/etc/vsftpd_user_conf
然後建立虛擬用戶的配置文件目錄
# mkdir /etc/vsftpd_user_conf
為虛擬用戶建立單獨的配置文件,用戶配置文件名稱與用戶名相同
/etc/vsftpd_user_conf/aaa
/etc/vsftpd_user_conf/bbbb
每個FTP虛擬用戶都可以獨立設置其許可權和不同的家目錄
#cat /etc/vsftpd_user_conf/aaa
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/var/aaa
使用mysql存儲虛擬用戶
a)安裝mysql
# tar -zxvf mysql-5.0.67.tar.gz
#cd mysql-5.0.67
# ./configure --prefix=/usr/local/mysql
#make;make install
# cp support-files/my-medium.cnf /etc/my.cnf
#useradd mysql
#chown -R root.root /usr/local/mysql/
初始化資料庫
# /usr/local/mysql/bin/mysql_install_db
#chown -R root.root /usr/local/mysql/
# chown -R mysql.mysql /usr/local/mysql/mysql/var
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
b)安裝pam_mysql
因為mysql是編譯安裝的,所以在這步可能會出錯,做下列的鏈接就可以
#ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
#ln -s /usr/local/mysql/include/mysql /usr/include/mysql
#tar -zxvf pam_mysql-0.6.2.tar.gz
#cd pam_mysql-0.6.2
#./configure --with-mysql=/usr/local/mysql ?with-openssl
#make;make install
#cp /usr/lib/security/pam_mysql.so /lib/security/
c)設置資料庫
mysql>create database vftp;
mysql>use vftp;
mysql>create table users(name char(16) binary,passwd char(16) binary);
mysql>insert into users (name,passwd) values ('test1','123456');
mysql>insert into users (name,passwd) values ('test2','123456');
mysql>quit
d)建立pam認證所需文件
#vi /etc/pam.d/ftp
添加如下兩行
auth required /lib/security/pam_mysql.so user=root passwd=123456 host=localhost db=vftp
table=users usercolumn=name passwdcolumn=passwd crypt=0
account required /lib/security/pam_mysql.so user=root passwd=123456 host=localhost db=vftp
table=users usercolumn=name passwdcolumn=passwd crypt=0
注意:
#crypt=0: 明文密碼
#crypt=1: 使用crpyt()函數(對應SQL數據里的encrypt(),encrypt()隨機產生salt)
#crypt=2: 使用MYSQL中的password()函數加密
#crypt=3:表示使用md5的散列方式#上面是兩句配置,第一句是以auth開始的,第二句以account開始的
。
e)虛擬用戶的配置
vsftpd.conf的配置和用DB庫存儲用戶名及密碼相同
[火星人
]
使用vsftp架設ftp伺服器已經有767次圍觀
http://coctec.com/docs/linux/show-post-200019.html