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 21:41
下一篇 2015-04-20 22:01

相關推薦

  • shell編程及rpm包

    1. shell編程    case 實現條件判斷, 無論是case后面還是值后面都是沒有任何標點符號的。    case支持通配符, 如果想要表示其他的話, 可以使用*放到最后。 用*表示其他。   2. 用tar打包的文件或則目錄,這些文件或則目錄的的ACL(訪問控制列表)權限會丟失。…

    Linux干貨 2016-08-18
  • 第三周博客作業

    who useradd usermod groupadd

    Linux干貨 2017-12-17
  • 文本處理工具練習及作業

    練習1: 1、找出ifconfig “網卡名” 命令結果中本機的IPv4地址 ifconfig |head -n 2 |tail -n 1|tr -s ” ” : |cut -d: -f4 2、查出分區空間使用率的最大百分比值 df|tr -s ‘ ‘ %|sort -t% -k5 -n|tail -n 1|c…

    2017-07-29
  • Linux磁盤管理工具

    掛載mount          掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關系,                 進而使得此目錄做為其它文件訪問入口的行為         &n…

    Linux干貨 2016-08-29
  • 馬哥教育網絡班21期+第8周課程練習

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 集線器(HUB)是在OSI模型的第一層——物理層——連接多臺主機、延長網絡的設備。其主要功能是將從一個端口接收到的數據包轉發給所有端口。中繼器(Repeater)是將由電纜傳過來的電信號或光信號調整波形和放大再傳給另一個電纜的設備,提供多端口服務的中繼器稱作集線器。二者的主要區別…

    Linux干貨 2016-09-05
  • Centos 7 之systemd

    Centos 7 之systemd systemd POST –> Boot Sequence –> Bootloader –> kernel + initramfs(initrd) –> rootfs –> /sbin/init init: CentOS 5: Sys…

    Linux干貨 2016-09-23

評論列表(1條)

  • stanley
    stanley 2015-04-20 21:52

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

欧美性久久久久