vsftpd虛擬用戶搭建

首選的FTP服務器搭建方式

安裝vsftpd

     yum install -y vsftpd

     systemctl enable vsftpd     #設置開機啟動

     systemctl is-enabled vsftpd   #查看是否開機啟動

基于虛擬用戶的配置

所謂虛擬用戶就是沒有使用真實的帳戶,只是通過映射到真實帳戶和設置權限的目的。虛擬用戶不能登錄CentOS系統,所以是相對安全的登陸方式

auth required pam_mysql.so user=vsftpd passwd=111111 host=localhost db=vftpuser table=users usercolumn=name passwdcolumn=passwd crypt=0

account required pam_mysql.so user=vftpuser passwd=111111 host=localhost db=vftpuser table=users usercolumn=name passwdcolumn=passwd crypt=0

1.修改配置文件

systemctl  start vsftpd

2.建立本地映射用戶并設置宿主目錄權限

[root@shewei ~]#useradd –d /home/vftpsite –s /sbin/nologin vftpuser


3.配置vsftpd.conf(設置虛擬用戶配置項)

[root@shewei ~]#vim /etc/vsftpd/vsftpd.conf                           

guest_enable=YES                                   #開啟虛擬用戶

guest_username=vftpuser                      #FTP虛擬用戶對應的系統用戶,需要創建系統用戶

pam_service_name=vsftpd                     #PAM認證文件   這里是手動建立的pam認證文件名

4.在MySQL中建立用戶口令數據庫                     #沒有數據庫就安裝數據庫,以下用mariadb

[root@shewei ~]#yum -y install mariadb-server

[root@shewei ~]#systemctl start mariadb

[root@shewei ~]#mysql 

MariaDB [(none)]> create database vsftpd;             #建立虛擬用戶數據庫,庫名vsftpd

MariaDB [(none)]> use vsftpd;                                   #進入vsftpd數據庫

MariaDB [(none)]>create table users(name char(16) binary,passwd char(16) binary);  #建立虛擬用戶口令表,表名users

                                 #16位長度的用戶密碼區分大小寫

MariaDB [(none)]> insert into users (name,passwd) values (‘bobyuan’,password(‘111’)); 

MariaDB [(none)]> insert into users (name,passwd) values (‘she’,password(‘111’));

                                                                                        #建立兩個虛擬用戶,bobyuan和she

注意:此處還可以批量添加用戶;后期學mysql時可以使用,此時使用單個添加用戶

MariaDB [(none)]> grant select on vsftpd.users to vsftpd@localhost identified by ‘111111’;#授權vsftpd這個賬號可以讀取vsftpd數據庫的user表

5.驗證mysql的設置是否成功

MariaDB [vsftpd]> show databases;                             #此處會顯示上面添加的vsftpd數據庫名字

MariaDB [vsftpd]> use vsftpd;                                    #這里是切換進此數據庫

show tables;                                                            #這里查看建立的虛擬用戶口令表,應顯示users

select * from users;                                                   #這里顯示添加的虛擬用戶和密碼

退出后使用mysql看能否登陸

mysql -uvsftpd -hlocalhost -p111111


6.編譯MySQL的PAM認證模塊

查看/lib64/security/目錄下有沒有MySQL對應的PAM模塊,centos7.3也沒有,需要編譯安裝;

# yum install mariadb-devel pam-devel -y

# ./configure –with-pam=/usr –with-mysql=/usr –with-pam-mods-dir=/usr/lib64/security
# make && make install

 7.編輯vsftpd的PAM認證文件

在/etc/pam.d目錄下,

[root@shewei ~]#vim /etc/pam.d/vsftpd

將里面其他的都注釋掉,添加下面這兩行:                    #或者全部刪除

auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=111111 host=localhost db=vsftpd table=users u
sercolumn=name passwdcolumn=passwd crypt=0
account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=111111 host=localhost db=vsftpd table=user
s usercolumn=name passwdcolumn=passwd crypt=0

這里需要注意的是user和passwd填寫的是授權數據庫訪問賬號和密碼

crypt=0:表示口令使用明文方式保存在數據庫中
crypt=1:表示口令使用UNIX的DES加密方式加密后保存在數據庫中
crypt=2:表示口令使用MySQL的password()函數加密后保存在數據庫中
crypt=3:表示口令使用MD5散列值的方式保存在數據庫中

8. 重啟vsftpd服務

 [root@shewei pam_mysql-0.7RC1]#systemctl restart vsftpd

9. 測試虛擬用戶登錄FTP

[root@shewei pam_mysql-0.7RC1]#iptables -F

通過其他linux訪問就大功告成了;一下是匿名訪問和本地用戶禁錮訪問等:


注意:只有共享權限和本地權限都有的權限才能執行,單獨開放一個權限不能讀寫   

                     共享權限:vsftpd中的主配置文件
                     本地權限:文件的屬主屬組
            匿名用戶:
                   anonymous_enable=YES                  #是否允許匿名賬號登陸
                   anon_upload_enable=YES                #是否允許上傳
                   anon_mkdir_write_enable=YES        #是否能夠創建目錄
                   anon_other_write_enable=YES         #是否允許其他用戶有寫權限

程序環境:

      主程序       : /usr/sbin/vsftpd
      主配置文件: /etc/vsftpd/vsftpd.conf
      數據根目錄: /var/ftp 
      Systemd Unit File: /usr/lib/systemd/system/vsftpd.service 
      
配置vsftpd三種用戶類別:        
          匿名用戶: anonymous –> ftp, /var/ftp
          系統用戶: 至少禁止系統用戶訪問ftp服務,/etc/vsftpd/ftpusers
                                              (此文件中的所有用戶禁止登陸)
                           通過PAM機制實現(/etc/pam.d/vsftpd);
          虛擬用戶:
                     用戶通過vsftpd服務訪問到的默認路徑,是用戶自己的家目錄;默認可以自己有權限訪問的所有路徑間切換;
                     禁錮用戶于其家目錄中;
          
          配置文件:/etc/vsftpd/vsftpd.conf
                          directive value
          注意:directive之前不能有多余字符;

        系統用戶:
          local_enable=YES            #是否允許本地用戶登陸(包括匿名和虛擬用戶)
          write_enable=YES            #是否擁有寫權限
          

          yum install -y vsftpd
        輔助配置文件/etc/vsftpd/ftpusers;
            列在此文件中的用戶均禁止使用ftp服務;
            #但是這樣還是不安全,因為登陸時候需要提供密碼后才會顯示登陸失敗
            容易被抓包抓到密碼

        chroot_local_user=YES
          禁錮所有本地用戶于其家目錄;需要事先去除用戶對家目錄的寫權限;
                                      chmod a-w /home/users
        如果注釋chroot_local_user,開啟這兩個選項;
             chroot_list_enable=YES
             chroot_list_file=/etc/vsftpd/chroot_list      #此文件需要創建
          禁錮列表中文件存在的用戶于其家目錄中;需要事先去除用戶對家目錄的寫權限
          寫入此文件中的用戶都被鎖定,
          
        傳輸日志:
          xferlog_enable=YES
          xferlog_file=/var/log/xferlog
          xferlog_std_format=YES
          
        守護進程的類型:
          standalone:獨立守護進程;由服務進程自行監聽套按字,并接收用戶訪問請求
          transient:瞬時守護進程;由受托管方代為監聽套按字,服務進程沒有訪問
                     請求時不啟動;當托管方收到訪問請求時,才啟動服務進程;
            CentOS 6:xinetd獨立守護進程, /etc/xinetd.d/,
            CentOS 7:由systemd代為監聽;
            
        控制可登錄vsftpd服務的用戶列表:
          userlist_enable=YES
            啟用/etc/vsftpd/user_list文件來控制可登錄用戶;
          userlist_deny=
                     YES:意味著此為黑名單;
                     NO:白名單;
            
      虛擬用戶:
        用戶賬號存儲于何處?
               文件、MySQL、Redis、…
              vsftpd:認證功能托管給pam;
              
  虛擬用戶的寫權限,通過匿名一樣的指令進行定義;還能實現不同的用戶有不同的權限
         user_config_dir=/etc/vsftpd/vusers_config/
                    


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

(0)
sheweishewei
上一篇 2017-04-27 16:23
下一篇 2017-04-27 22:54

相關推薦

  • Linux運維實戰之一:初識計算機組成及Linux系統

    本次博文是Linux運維實戰的開山篇,主要內容如下: 計算機的組成及其功能; Linux的不同發行版之間的聯系與區別; Linux的哲學思想; Linux系統上命令的適用格式及一些常用命令的使用; Linux系統上如何獲得幫助信息; Linux發行版的基礎目錄名稱命名法則及功用規定; 一、計算機的組成及其功能: 問題引入:互聯網時代,計算機是我們每天都要使用…

    Linux干貨 2016-10-31
  • shell中if條件字符串、數字比對,[[ ]]和[ ]區別

    今天學習shell, if條件流程控制,但發現if[ ]]和if[ ]什么時候用不是清楚,正好看到一篇文章,非常好,轉載,留個備份。 參考: http://www.51testing.com/?uid-7701-action-viewspace-itemid-13731 http://blog.csdn.net/sunboy_2050/article/det…

    Linux干貨 2016-08-12
  • 學習積累01#計算機組成#Linux版本#基本命令

    第一周的積累 問題1:描述計算機的組成及其功能 CPU:中央處理器,主要功能是進行運算和邏輯運算,內部大致可分為控制單元、邏輯算術單元、存儲單元; 主板:核心部件,是電腦的“脈絡”,CPU\內存\控制核心電路均安裝在主板上,各種外部設備也通過主板上的插槽相互連接; 硬盤:常見的外存儲器,容量大,保存時間長、安全性高。接口主要分為IDE、SATA、SCSI。 …

    Linux干貨 2016-10-25
  • bash腳本之數組及字符串切片,登陸配置文件

    一,概述 數組(就是一堆變量的集合) 變量:存儲單個元素的內存空間 數組:存儲多個元素的連續的內存空間,相當于多個變量的集合/ 數組名和索引     索引:編號從0開始,屬于數值索引     注意:索引可支持使用自定義的格式,而不僅是數值格式,即為關聯索引,bash4.0版本之后…

    Linux干貨 2016-09-01
  • Linux文件系統管理

    Linux文件系統: ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap swap: 交換分區(虛擬內存) 光盤: iso9660       windows: fat32, NTFS       Unix: FFS, U…

    Linux干貨 2016-08-15
  • vim 文本編輯器

    vim 文本編輯器 vi 簡介 vi命令是UNIX操作系統和類UNIX操作系統中最通用的全屏幕純文本編輯器。Linux中的vi編輯器叫vim,它是vi的增強版(vi Improved),與vi編輯器完全兼容,而且實現了很多增強功能。 vi編輯器支持編輯模式和命令模式,編輯模式下可以完成文本的編輯功能,命令模式下可以完成對文件的操作命令,要正確使用vi編輯器就…

    Linux干貨 2016-08-16
欧美性久久久久