Vsftpd+MySQL實現虛擬用戶驗證登錄

一、安裝所需要包和包組:

在數據庫服務器上安裝包:

yum –y install mariadb-server mariadb-devel 
systemctl start mariadb.service 
systemctl enable mariadb

在FTP服務器上安裝包pam_mysql 
centos7:無對應rpm包,需手動編譯安裝 
yum -y groupinstall “Development Tools” 
yum -y install mariadb-devel pam-devel vsftpd 
下載pam_mysql-0.7RC1.tar.gz 
ftp://172.16.0.1/pub/Sources/sources/pam/ 
tar xvfpam_mysql-0.7RC1.tar.gz 
cd pam_mysql-0.7RC1/ 
./configure –with-mysql=/usr –with-pam=/usr –with-pam-mods-dir=/lib64/security 
make 
make install

二、在數據庫服務器上創建虛擬用戶賬號

1.建立存儲虛擬用戶的數據庫,示例創建為vsftpd數據庫 
mysql> CREATE DATABASE vsftpd; 
mysql> SHOW DATABASES; 
ftp服務和mysql不在同一主機: 
mysql> GRANT SELECT ON vsftpd.* TO 
vsftpd@’172.16.%.%’ IDENTIFIED BY ‘magedu’; 
ftp服務和mysql在同一主機: 
mysql> GRANT SELECT ON vsftpd.* TO 
vsftpd@localhost IDENTIFIED BY ‘magedu’; 
mysql> GRANT SELECT ON vsftpd.* TO 
vsftpd@’127.0.0.1′ IDENTIFIED BY ‘magedu’; 
mysql> FLUSH PRIVILEGES;

2.準備相關表 
mysql> USE vsftpd; 
Mysql> SHOW TABLES; 
mysql> CREATE TABLE users ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,name CHAR(50) BINARY NOT NULL,password CHAR(48) BINARY NOT NULL); 
mysql>DESC users; 

mysql -uvsftpd -h 172.16.200.200 -pmagedu 

mysql> SHOW DATABASES;

3.添加測試的虛擬用戶 
根據需要添加所需要的用戶,為了安全應該使用PASSWORD函數加密其密碼后存儲 
mysql>DESC users; 
mysql> INSERT INTO users(name,password) values(‘wang’,password(‘magedu’)); 
mysql> INSERT INTO users(name,password) values(‘mage’,password(‘magedu’)); 
mysql> SELECT * FROM users;

三、在FTP服務器上配置vsftpd服務

1.在FTP服務器上建立pam認證所需文件 

vi /etc/pam.d/vsftpd.mysql 

添加如下兩行 
auth required pam_mysql.so user=vsftpd passwd=magedu host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 
account required pam_mysql.so user=vsftpd passwd=magedu host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 
注意:參考README文檔,選擇正確的加密方式crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示使用mysql password()函數加密,3表示md5加密,4表示sha1加密 
配置字段說明 
auth 表示認證 
account 驗證賬號密碼正常使用 
required 表示認證要通過 
pam_mysql.so模塊是默認的相對路徑,是相對/lib64/security/路徑而言,也可以寫絕對路徑;后面為給此模塊傳遞的參數 
user=vsftpd為登錄mysql的用戶 
passwd=mageedu 登錄mysql的的密碼 
host=localhost 在mysql中定義的允許連接的主機名或ip地址 
db=vsftpd 連接msyql的哪一個庫 
table=users 連接庫里的哪一個表 
usercolumn=name 當做用戶名的字段 
passwdcolumn=password 當做用戶名字段的密碼 
crypt=2 密碼的加密方式為mysql password()函數加密

2.建立相應用戶和修改vsftpd配置文件,使其適應mysql認證 
建立虛擬用戶映射的系統用戶及對應的目錄 
useradd -s /sbin/nologin -d /var/ftproot vuser 
chmod 555 /var/ftproot centos7 需除去ftp根目錄的寫權限 
mkdir /var/ftproot/{upload,pub} 
setfacl –m u:vuser:rwx /var/ftproot/upload 
確保/etc/vsftpd.conf中已經啟用了以下選項 
anonymous_enable=YES 
添加下面兩項 
guest_enable=YES 
guest_username=vuser 
修改下面一項,原系統用戶無法登錄 
pam_service_name=vsftpd.mysql

四、啟動vsftpd服務

service vsftpd start;systemctl start vsftpd 
chkconfig vsftpd on;systemctl enable vsftpd 
查看端口開啟情況 
netstat -tnlp |grep :21

五、Selinux相關設置:在FTP服務器上執行

restorecon -R /lib64/security 
setsebool -P ftpd_connect_db 1 
setsebool -P ftp_home_dir 1 
chcon -R -t public_content_rw_t /var/ftproot/

六、測試:利用FTP客戶端工具,以虛擬用戶登錄驗證結果

tail /var/log/secure

七、在FTP服務器上配置虛擬用戶具有不同的訪問權限

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

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

vim /etc/vsftpd/vsftpd.conf 

添加如下選項 
user_config_dir=/etc/vsftpd/vusers_config

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

mkdir /etc/vsftpd/vusers_config/ 

cd /etc/vsftpd/vusers_config/ 

touch wangmage

3、配置虛擬用戶的訪問權限 
虛擬用戶對vsftpd服務的訪問權限是通過匿名用戶的相關指令進行的。如果需要讓用戶wang具有上傳文件的權限,可以修改/etc/vsftpd/vusers_config/wang文件,在里面添加如下選項并設置為YES即可,只讀則設為NO 
注意:需確保對應的映射用戶對于文件系統有寫權限 
anon_upload_enable={YES|NO} 
anon_mkdir_write_enable={YES|NO} 
anon_other_write_enable={YES|NO}

原創文章,作者:sunhao,如若轉載,請注明出處:http://www.www58058.com/84734

(1)
sunhaosunhao
上一篇 2017-08-14
下一篇 2017-08-14

相關推薦

  • 20 shell腳本編程1

    20 shell腳本編程1 一、雜項知識整理 1、腳本文件格式:     #!/bin/bash     (注釋信息:)     #description:say hello     #vesion:…

    Linux干貨 2016-08-11
  • php-fpm

    1.安裝 mariadb 服務 修改配置文件 2.musql 安全加強 3.安裝 php-fpm php-mysql php-mbstring php-mcrypt 服務 修改配置文件 4.安裝httpd服務 加虛擬主機配置文件 5.測試php網頁 6.安裝myadmin包及測試

    2017-06-04
  • 進入linux世界的初步認識

    1、 描述計算機的組成及其功能.
    2、 按系列羅列Linux的發行版,并描述不同發行版之間的聯系與區別.
    3、 描述Linux的哲學思想,并按照自己的理解對其進行解釋性描述.
    4、 說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相應的示例來闡述.
    5、 如何在Linux系統上獲取命令的幫助信息,請詳細列出,并描述man文檔的章節是如何劃分的.
    6、 請羅列Linux發行版的基礎目錄名稱命名法則及功用規定.

    Linux干貨 2018-02-25
  • pxe和dhcp服務——引導安裝操作系統

    BootStraping:系統提供(OS Provision) pxe –> preboot excution environment, Intel cobbler –> Cobbler is a network install server.  Cobbler supports PXE, ISO virtual…

    Linux干貨 2016-11-05
  • OpenSSL

    一、什么是OpenSSL 在電腦網絡上,OpenSSL是一個開放源代碼的軟件庫包,應用程序可以使用這個包來進行安全通訊,避免竊聽,同時確認另一端連接者的身份。這個包廣泛被應用在互聯網的網頁服務器上。其主要庫是以C語言所寫成,實現了基本的加密功能,實現了SSL與TLS協議。 OpenSSL由三部分組成:     libencryp…

    Linux干貨 2016-04-25
  • Linux高級文件系統管理之磁盤配額、軟RAID及LVM

    高級文件系統管理之磁盤配額、軟RAID及LVM   本章內容: 設定文件系統配額 設定和管理軟RAID設備 配置邏輯卷   一、文件系統配額:     執行軟限制(soft limit) 硬限制(hard limit)     注:磁盤配額只能針對分區控制有效,不能對整個磁盤控制…

    Linux干貨 2016-09-01
欧美性久久久久