實現基于MYSQL驗證的vsftpd虛擬用戶

馬哥教育面授21期 運維 vsftpd MySQL


說明:本實驗在兩臺CentOS主機上實現,一臺做為FTP服務器,一臺做數據庫服務器

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

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

    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}

總結:本次實驗出現最多的問題是敲錯字和漏做了步驟……

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

(0)
wangshuaiwangshuai
上一篇 2016-12-21 10:29
下一篇 2016-12-21 13:30

相關推薦

  • 馬哥教育21期網絡班—第13周課程+練習—-samba和vsftp-pam

    1、建立samba共享,共享目錄為/data,要求:(描述完整的過程) 1)共享名為shared,工作組為magedu; 2)添加組develop,添加用戶gentoo,centos和ubuntu,其中gentoo和centos以develop為附加組,ubuntu不屬于develop組;密碼均為用戶名; 3)添加samba用戶gentoo,centos和u…

    Linux干貨 2016-10-24
  • grub legacy、內核編譯

    grub legacy grub: GRandUnified Bootloader    grub 0.x: grub legacy    grub 2.x: grub2 grub legacy:        stage1: m…

    Linux干貨 2016-09-13
  • 0803課堂練習與作業

    1、當用戶xiaoming對/testdir 目錄無執行權限時,意味著無法做哪些操作? 不能添加在/testdir中增刪改文件或目錄 2、當用戶xiaoqiang對/testdir 目錄無讀權限時,意味著無法做哪些操作? 不能查看文件中的文件列表 3、當用戶wangcai 對/testdir 目錄無寫權限時,該目錄下的只讀文件file1是否可修改和刪除? 不…

    Linux干貨 2016-08-04
  • Linux計算機基礎-入門2016-07-19

    Linux計算機基礎-入門2016-07-19 計算機系統的組成部分 計算機系統由硬件系統和軟件系統兩大部分組成 硬件系統 馮.諾依曼體系結構: 1946年數學家馮.諾依曼提出運算器,控制器,存儲器,輸入設備,輸出設備。 具體變現為一下硬件: 運算器,控制器  ——>  CPU 存儲器  …

    Linux干貨 2016-08-04
  • Python之入門篇

    一、環境準備 環境準備 –> pyenv (安裝python解釋器,管理Python版本,管理python虛擬環境) https://github.com/pyenv/pyenv https://github.com/yyuu/pyenv-installer # yum -y install git # curl -L https://ra…

    Linux干貨 2017-02-05
  • 招聘Linux運維工程師

    崗位職責: 公司集群硬件的日常維護及管理 負責公司內網的服務器安裝,部署和維護 監控服務器狀態,發現問題并及時維護 負責產品發布上線 承擔mangoDB的日常巡檢 集群數據服務器的備份 編寫服務器維護腳本,減少工作量,提高工作效率 任職要求: 1年以上Linux系統管理經驗,精通Linux的管理和維護 能夠熟練編排查運維過程中出現的服務故障,系統故障,網絡故…

    Linux干貨 2017-12-04

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-12-27 15:20

    文章實用性很強,很具有操作性

欧美性久久久久