CentOS6.3+vsftpd+mysql+pam_mysql實現虛擬用戶管理的ftp服務器

CentOS6.3+vsftpd+mysql+pam_mysql實現虛擬用戶管理的ftp服務器

本文大部分內容學習自中國最大的Linux培訓機構“馬哥教育”www.magedu.com

一、準備相關軟件以及開發環境

1、安裝vsftpd mysql-server mysql-devel pam-devel

# yum -y install vsftpd mysql-server mysql-devel pam-devel

# yum -y groupinstall "DevelopmentTools"


2、編譯安裝pam_mysql認證模塊(庫)

先下載pam_mysql

#wget https://sourceforge.net/projects/pam-mysql/files/latest/download?source=typ_redirect  --no-check-certificate

 

編譯安裝pam_mysql

# tar -xf pam_mysql-0.7RC1.tar.gz

# cd pam_mysql-0.7RC1

# ./configure --with-mysql=/usr

# make

# make install

 

二、創建虛擬用戶帳號

1、準備數據庫及表

啓動mysqld

# service mysqld start

#mysql

mysql> create database vsftpd;

mysql> grant select on vsftpd.* to'vsftpd'@'localhost' identified by 'vsftpd123';

mysql> grant select on vsftpd.* to'vsftpd'@'127.0.0.1' identified by 'vsftpd123';

mysql> flush privileges;

 

mysql> use vsftpd;

mysql> CREATE TABLE users (id INT AUTO_INCREMENTNOT NULL,

    -> nameCHAR(20) BINARY NOT NULL,

    ->password CHAR(64) BINARY NOT NULL,

-> PRIMARY KEY(id));

 

2、添加虛擬用戶

根據具體情況添加用戶,由於pam_mysqlpassword()函數與MySQLpassword()函數算法可能不太相同,此處使用明文密碼。有興趣的可以測試其它加密方式,如md5

mysql> inser tinto users(name,password) values ('user1','user123'),('user2','user123');

 

3、測試mysql的用戶及表是否有效

# mysql -uvsftpd-p

mysql> showdatabases;

+--------------------+

| Database           |

+--------------------+

|information_schema |

| test               |

| vsftpd             |

+--------------------+

3 rows in set(0.00 sec)

mysql> usevsftpd;

mysql> select *from users;

+----+-------+----------+

| id | name  | password |

+----+-------+----------+

|  1 | user1 | user123  |

|  2 | user2 | user123  |

+----+-------+----------+

2 rows in set(0.00 sec)

以上結果證明,數據庫是正常可用的。

 

三、配置vsftpd

1、建立pam認證文件

# vim /etc/pam.d/vsftpd.mysql

添加以下兩行

auth required /lib/security/pam_mysql.so user=vsftpdpasswd=vsftpd123 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

account required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd123 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

 

內容解釋:

auth 權限認證

required 必需通過認證

/lib/security/pam_mysql.so調用庫文件

user=vsftpd 登錄數據庫用戶名

passwd=vsftpd123 登錄數據庫密碼

host=localhost 數據庫主機地址,此處表示本機

db=vsftpd 數據庫名稱

table=users 用戶帳號的表名

usercolumn=name 用戶名字段

passwdcolumn=password 密碼字段

crypt=0 表示密碼的加密方式,0爲明文,2password函數加密

 

2、修改vsftpd.conf文件

# vim/etc/vsftpd/vsftpd.conf

請確保/etc/vsftpd.conf中已經啓用了以下選項

anonymous_enable=NO

local_enable=YES

write_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

chroot_local_user=YES

 

而後添加以下選項

guest_enable=YES

guest_username=ftpuser

 

並確保pam_service_name選項的值如下所示

pam_service_name=vsftpd.mysql

 

然後添加虛擬用戶所需要映射的系統用戶ftpuser

# useradd -s/sbin/nologin -d /home/ftp ftpuser #沒有系統登錄權限,家目錄爲ftp

# chmod go+rx/home/ftp #添加其它用戶組的權限爲讀執行

 

四、啓動服務

# service vsftpd start

# chkconfig vsftpd on

登錄測試:ftp://IP

可以用各種ftp客戶端測試,包括瀏覽器,windows的資源管理器(我的電腦)


注意關閉iptabes或者添加策略。

 

 

五、配置虛擬用戶具有不同的訪問權限


vsftpd可以在配置文件目錄中爲每個用戶提供單獨的配置文件以定義其ftp服務訪問權限,每個虛擬用戶的配置文件名同虛擬用戶的用戶名。配置文件目錄可以是任意未使用目錄,只需要在vsftpd.conf指定其路徑及名稱即可。

 

1、配置vsftpd爲虛擬用戶使用配置文件目錄

 

# vim vsftpd.conf

添加如下選項

user_config_dir=/etc/vsftpd/vusers_config

 

2、創建所需要目錄,併爲虛擬用戶提供配置文件

 

# mkdir/etc/vsftpd/vusers_config/

# cd /etc/vsftpd/vusers_config/

# touch user1user2

 

3、配置虛擬用戶的訪問權限

 

虛擬用戶對vsftpd服務的訪問權限是通過匿名用戶的相關指令進行的。比如,如果需要讓user1用戶具有上傳文件的權限,可以修改/etc/vsftpd/ vusers_config/user1文件,在裏面添加如下選項即可。

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES


六、vsftpd基礎知識

vsftpd:

/etc/vsftpd 配置文件目錄

/etc/init.d/vsftpd服務腳本

/usr/sbin/vsftpd主程序

/var/ftp 默認的數據文件目錄,ftp根目錄不能有寫權限,可建立子目錄

  支持虛擬用戶(基於PAM實現用戶認證)

    PAM的主要文件

     /etc/ram.d/配置文件目錄

     /lib64/security/庫文件目錄

 

ftp用戶類型

  系統用戶

匿名用戶--> 映射到系統用戶

虛擬用戶 --> 映射到系統用戶

 

  默認情況下,如果允許系統用戶直接登錄,則其能切到大部分系統其它目錄,而且還是明文傳輸的,這是非常危險的。

 

上傳下載

/var/ftp ftp用戶的家目錄

   匿名用戶訪問目錄

 

文件服務權限=文件系統權限+文件共享權限

 

/etc/vsftpd/vsftpd.conf配置文件解釋

   anonymous_enable=YES   匿名用戶,默認支持

   local_enable=YES     系統用戶,默認支持

   write_enable=YES     系統用戶上傳文件,默認支持

 anon_upload_enable=YES       匿名用戶上傳,默認禁止

   anon_mkdir_write_enable=YES    匿名用戶創建目錄,默認禁止

   anon_other_write_enable=YES    匿名用戶刪除文件,默認禁止

   dirmessage_enable=YES   在目錄下建立.message文件寫提示內容

   xferlog_enable=YES      記錄傳輸日誌

   xferlog_std_format=YES  傳輸日誌標準格式,最好禁止

   xferlog_file=/var/log/xferlog  記錄傳輸日誌的目錄

   idle_session_timeout=600  會話連接超時時間,單位秒,默認禁止

   chroot_list_enable=YES   禁固用戶只能在家目錄活動

chroot_list_file=/etc/vsftpd/chroot_list  禁固用戶列表文件,手動創建

chroot_local_user=YES   禁固所有用戶只能在家目錄活動,默關

listen=YES                                        FTP服務定義爲獨立守護進程

  守護進程:

    獨立守護進程:適用用戶量比較大,會話時間長

        瞬時守護進程:由xinetd代爲管理

    pam_service_name=vsftpd    pam管理的配置文件,目錄/etc/pam.d/vsftpd

   userlist_enable=YES    啓用/etc/vsftpd/user_list文件

    userlist_deny=YES    禁止/etc/vsftpd/user_list文件用戶登錄

    guest_enables=YES    支持虛擬用戶

   guest_username=vuser   虛擬用戶所映射到的系統用戶名

   max_clients          vsftpd服務同時最大支持的連接用戶數

           max_per_ip                                     每個IP同時支持的最大連接用戶數




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章