FTP基于PAM和MySQL/MariaDB實現虛擬用戶訪問控制

前言

vsftpd是一款在Linux發行版中最受推崇的FTP服務器程序,特點是小巧輕快,安全易用,目前在開源操作系統中常用的FTP套件主要有proftpd、pureftp、ServU和wu-ftpd等。本文將講解vsftpd的基本功能和如何基于PAM和MySQL/MariaDB實現虛擬用戶訪問控制。

基礎配置介紹

工作原理

FTP基于PAM和MySQL/MariaDB實現虛擬用戶訪問控制

狀態響應碼

1xx:信息碼

2xx:成功狀態碼

3xx:進一步提示補全信息的狀態碼

4xx:客戶端錯誤

5xx:服務器端錯誤

用戶認證

虛擬用戶:僅用于訪問某特定服務中的資源

nsswitch: network server switch, 名稱解析框架
		配置文件:/etc/nsswitch.conf
		模塊:/lib64/libnss*, /usr/lib64/libnss*
pam: pluggable authentication module, 用戶認證框架
		模塊:/lib64/security/
		配置文件:/etc/pam.conf, /etc/pam.d/*

系統用戶通過ftp訪問的資源的位置:用戶自己的家目錄

虛擬用戶通過ftp訪問的資源的位置:給虛擬用戶指定的映射成為的系統用戶的家目錄

配置文件

vsftpd在CentOS6.6的配置文件

用戶認證配置文件:/etc/pam.d/vsftpd
服務腳本:/etc/rc.d/init.d/vsftpd
配置文件目錄:/etc/vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
匿名用戶(映射為ftp用戶)共享資源位置:/var/ftp

配置文件詳解

匿名用戶的設置
    anonymous_enable=YES:允許匿名登錄
    anonymous_upload_enable=YES:允許上傳文件
    anonymous_other_write_enable=YES:允許刪除文件
    anonymous_mkdir_write_enable=YES:允許創建目錄
    注:啟用此功能,ftp用戶對/var/ftp目錄仍無權限,可在/var/ftp/目錄下新建目錄,
    如/var/ftp/upload/,并給ftp用戶設置權限 setfacl -m u:ftp:rw /var/ftp/upload
系統用戶的配置
    local_enable=YES:允許登錄
    write_enable=YES:允許上傳文件
禁錮所有的ftp本地用戶于其家目錄中
    chroot_local_user={YES|NO}
禁錮指定用戶于家目錄中
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list 
日志配置
    xferlog_enable=YES
    xferlog_std_format=YES
    xferlog_file=/var/log/xferlog
改變上傳文件的屬主
    chown_uploads=YES
    chown_username=whoever
上傳文件的umask
    anon_umask:匿名用戶上傳文件的umask
    local_umask:本地用戶上傳文件的umask
vsftpd使用pam完成用戶認證,其用到的pam配置文件
    pam_service_name=vsftpd
    控制用戶登錄:/etc/vsftpd/ftpusers中的用戶都不允許使用ftp服務,基于pam
是否啟用控制用戶登錄的列表文件
    userlist_enable=YES
    userlist_deny=YES|NO
    默認文件為/etc/vsftpd/user_list
連接限制
    max_clients: 最大并發連接數
    max_per_ip: 每個IP可同時發起的并發請求數
傳輸速率
    anon_max_rate:匿名用戶的最大傳輸速率,單位是bytes/s
    local_max_rate:本地用戶的最大傳輸速率,單位是bytes/s
自定義信息配置
        ftpd_banner=Welcome to FTP Server #自定義
        dirmessage_enable=YES   #需創建.message文件

虛擬用戶訪問控制

虛擬用戶

所有的虛擬用戶會被統一映射為一個指定的系統賬號,訪問的共享位置即為此系統賬號的家目錄

各虛擬用戶可被賦予不同的訪問權限,通過匿名用戶的權限控制參數進行指定

虛擬用戶的存放方式:

hash編碼的文件(奇數行為用戶名,偶數行為密碼)

關系型數據庫(通過第三方模塊pam-mysql實現認證)

工作原理

FTP基于PAM和MySQL/MariaDB實現虛擬用戶訪問控制

配置過程

環境準備

FTP服務器:172.16.10.10(CentOS6.6)

數據庫服務器:172.16.10.211(CentOS6.6),MariaDB

安裝所需程序

首先FTP服務器需要安裝vsftpd和pam_mysql,數據庫服務器需要安裝MySQL或者MariaDB,我這里已經安裝完畢了,就直接開始配置了

創建虛擬用戶

[root@MariaDB ~]# mysql

MariaDB [(none)]> CREATE DATABASE vsftpd;

MariaDB [(none)]> use vsftpd;

MariaDB [vsftpd]> GRANT SELECT ON vsftpd.* TO vsftp@'172.16.10.10' IDENTIFIED BY 'vpass';

MariaDB [vsftpd]> FLUSH PRIVILEGES;

MariaDB [vsftpd]> CREATE TABLE users (
    -> id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> name VARCHAR(50) BINARY NOT NULL, 
    -> password CHAR(48) BINARY NOT NULL );
#添加虛擬用戶   
MariaDB [vsftpd]> INSERT INTO users (name,password) VALUES ('tom',password('scholar'));
#password('PASSWORD')加密密碼
MariaDB [vsftpd]> INSERT INTO users (name,password) VALUES ('alice',password('scholar'));

vsftpd配置

[root@lab ~]# vim /etc/pam.d/vsftpd.mysql  #創建pam認證文件

auth required pam_mysql.so user=vsftp passwd=vpass host=172.16.10.211 db=vsftpd 
table=users usercolumn=name passwdcolumn=password crypt=2 #密碼經過加密,crypt值為2
account required pam_mysql.so user=vsftp passwd=vpass host=172.16.10.211 db=vsftpd 
table=users usercolumn=name passwdcolumn=password crypt=2

[root@lab ~]# useradd -s /sbin/nologin -d /var/ftproot vuser
#創建虛擬用戶映射的系統用戶及對應的目錄
[root@lab ~]# chmod go+rx /var/ftproot  #給予權限
[root@lab ~]# vim /etc/vsftpd/vsftpd.conf 

#請確保已經啟用了以下選項
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES
#添加以下選項
guest_enable=YES
guest_username=vuser #設置的映射系統用戶
#并確保pam_service_name選項的值如下所示
pam_service_name=vsftpd.mysql #創建的pam認證文件

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

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

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

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

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

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

[root@lab ~]# mkdir /etc/vsftpd/vusers_config
[root@lab ~]# cd /etc/vsftpd/vusers_config/
[root@lab vusers_config]# touch tom alice

配置虛擬用戶的訪問權限

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

[root@lab vusers_config]# vim tom

anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

[root@lab vusers_config]# vim alice 

anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

啟動服務,設置開機自啟,查看21端口是否被監聽

FTP基于PAM和MySQL/MariaDB實現虛擬用戶訪問控制

測試虛擬用戶

FTP基于PAM和MySQL/MariaDB實現虛擬用戶訪問控制

FTP基于PAM和MySQL/MariaDB實現虛擬用戶訪問控制

The end 

好了,FTP基于PAM和MySQL/MariaDB的虛擬用戶訪問控制,就說到這里啦,配置ftp過程中請確保不要敲多空格,否則是會報錯或者登錄失敗的,我就深受其害,這確實是個坑,部署過程中遇到問題可留言,多謝關注呦。以上僅為個人學習整理,如有錯漏,大神勿噴~~~

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

(0)
書生書生
上一篇 2015-04-20
下一篇 2015-04-20

相關推薦

  • 第三周作業

    列出當前系統上所有已經登錄的用戶名,同一個用戶登錄多次,則只顯示一次 [root@app02 ~]# who |grep -o -E '^\<[a-zA-Z]+\>'|sort -u root XIAOXIN 2. 取出最后登錄到當前系統的用戶相關信息 [r…

    Linux干貨 2016-08-29
  • MooseFS性能圖表[原創]

    對MooseFS有了一定的了解,現在可以壓壓它的性能了,使用的是iozone IO測試工具。測試命令為:./iozone -a -n 512m -g 4g -i 0 -i 1 -f /mnt/mfs/logs/test.tar.gz -Rb ./iozone.xls -C測試說明1、/mnt/mfs/logs/test.tar.gz大小為9.2G,大于服務器…

    Linux干貨 2015-03-27
  • 救援模式安裝RPM

    救援模式安裝RPM 步驟如下: (1)先讓RPM“自殺”掉,必須要使用忽略依賴選項—nodeps,否則卸載不了RPM程序。 (2)卸載完成后,將機器重啟,按F2鍵進入機器的BIOS模式,如下圖選擇CD-ROM啟動,最后按F10保存退出。 (3)機器將會從光驅上使用光盤文件做引導啟動,如下圖界面,相信大家都非常熟悉,該界面在我們安裝新系統的時候,也會見到。啰嗦…

    Linux干貨 2016-08-26
  • 第10周作業(上)

    第10周作業 1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)。CentOS系統啟動詳細的過程如下(以CentOS7為例): 加電自檢(POST)按下電源開關,BIOS系統隨即開始加電自檢,檢查CPU、內存、主板及各接口、硬盤、鍵盤、光驅等,檢測它們的好壞。 讀取啟動順序檢查完成后,BIOS會根據預先設定好的啟動順序去挨個尋找可引導…

    Linux干貨 2017-01-03
  • N25期–第八周作業

    1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態; 在線的主機使用綠色顯示; 不在線的主使用紅色顯示; #!/bin/bash declare -i i=1 hostping(){     if ping -W&n…

    Linux干貨 2017-02-27
  • awk用法三

      6、結構化控制語句     6.1 if語句       格式:if(條件) {body} else {else body}         實例1:判斷/etc/passwd文件中的UID如果大于500則顯示為“common user”,否則顯…

    Linux干貨 2016-02-14

評論列表(1條)

  • stanley
    stanley 2015-04-20 21:52

    一如既往的認真,堅持,堅信,收獲最大的一定是自己。加油

欧美性久久久久