使用vsftp架設ftp伺服器

火星人 @ 2014-03-29 , reply:0
←手機掃碼閱讀


本文原址鏈接: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庫存儲用戶名及密碼相同




[火星人 via ] 使用vsftp架設ftp伺服器已經有352次圍觀

http://www.coctec.com/docs/linux/show-post-200019.html