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
下一篇 2017-04-27

相關推薦

  • Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示

    目錄與路徑 相對路徑與絕對路徑 絕對路徑:路徑的寫法【一定由根目錄 / 寫起】 /usr/share/doc 這個目錄。 相對路徑:路徑的寫法【不是由 / 寫起】 由 /usr/share/doc 要到 /usr/share/man 底下時,可以寫成: 【cd ../man】這就是相對路徑的寫法。相對路徑意指相對于當前的工作目錄 cd (切換目錄) . &n…

    Linux干貨 2016-11-06
  • 用戶 組

    用戶 組    在linux系統中,用戶管理是基于用戶名和密碼的方式進行資源的分配,linux上用戶Username/UID分為以下類別:    管理員: root,0    普通用戶: 1-65535 普通用戶分為:系統用戶和登錄用戶兩種 系統用戶:1-499(cen…

    系統運維 2016-08-04
  • Linux簡要發展史

    目錄 Linux簡述 Linux之父 Linux標志 企鵝的來源 Tux的來源 歷史 Unix GNU BSD Minix Linux 主要特性 Linux內核版本 Linux發行版 Linux簡述 ·         Linux是一套自由加開放源代碼的類Unix操作系統,誕生于…

    Linux干貨 2016-10-18
  • bash編程之數組和字符串處理

    數組: 程序=指令+數據          指令:     數據:變量、文件 數組:存儲過個元素的連續的內存空間; 變量:存儲單個元素的內存空間; 數組名:整個數組只有一個名字; 數組索引:編號從0開始;   &nbsp…

    Linux干貨 2016-08-24
  • 用戶創建過程&grep練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。     ~]# cp -r /etc/skel /home/tuser1     ~]# ls -la /home/tuser1  &…

    Linux干貨 2016-10-17
欧美性久久久久