標籤:ftp mysql pam 虛擬使用者 mariadb 存取控制
前言
vsftpd是一款在Linux發行版中最受推崇的FTP伺服器程式,特點是小巧輕快,安全易用,目前在開源作業系統中常用的FTP套件主要有proftpd、pureftp、ServU和wu-ftpd等。本文將講解vsftpd的準系統和如何基於PAM和MySQL/MariaDB實現虛擬使用者存取控制。
基礎配置介紹
工作原理
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6B/AB/wKioL1U0crDDiyOgAAFcT6Kq79I735.jpg" title="FTP工作原理.jpg" alt="wKioL1U0crDDiyOgAAFcT6Kq79I735.jpg" />
狀態響應碼
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:本機使用者上傳檔案的umaskvsftpd使用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實現認證)
工作原理
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6B/AE/wKioL1U0lX7SMeqEAADUzbJtf8I522.jpg" title="虛擬使用者存取控制原理.jpg" alt="wKioL1U0lX7SMeqEAADUzbJtf8I522.jpg" />
配置過程
環境準備
FTP伺服器:172.16.10.10(CentOS6.6)
資料庫伺服器:172.16.10.211(CentOS6.6),MariaDB
安裝所需程式
首先FTP伺服器需要安裝vsftpd和pam_mysql,資料庫伺服器需要安裝MySQL或者MariaDB,我這裡已經安裝完畢了,就直接開始配置了
建立虛擬使用者
[[email protected] ~]# mysqlMariaDB [(none)]> CREATE DATABASE vsftpd;MariaDB [(none)]> use vsftpd;MariaDB [vsftpd]> GRANT SELECT ON vsftpd.* TO [email protected]‘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配置
[[email protected] ~]# 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值為2account required pam_mysql.so user=vsftp passwd=vpass host=172.16.10.211 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2[[email protected] ~]# useradd -s /sbin/nologin -d /var/ftproot vuser#建立虛擬使用者映射的系統使用者及對應的目錄[[email protected] ~]# chmod go+rx /var/ftproot #給予許可權[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf #請確保已經啟用了以下選項anonymous_enable=YESlocal_enable=YESwrite_enable=YESanon_upload_enable=NOanon_mkdir_write_enable=NOchroot_local_user=YES#添加以下選項guest_enable=YESguest_username=vuser #設定的映射系統使用者#並確保pam_service_name選項的值如下所示pam_service_name=vsftpd.mysql #建立的pam認證檔案
配置虛擬使用者具有不同的存取權限
vsftpd可以在設定檔目錄中為每個使用者提供單獨的設定檔以定義其ftp服務存取權限,每個虛擬使用者的設定檔名同虛擬使用者的使用者名稱。設定檔目錄可以是任意未使用目錄,只需要在vsftpd.conf指定其路徑及名稱即可。
配置vsftpd為虛擬使用者使用設定檔目錄
[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf#添加如下選項user_config_dir=/etc/vsftpd/vusers_config
建立所需要目錄,並為虛擬使用者提供設定檔
[[email protected] ~]# mkdir /etc/vsftpd/vusers_config[[email protected] ~]# cd /etc/vsftpd/vusers_config/[[email protected] vusers_config]# touch tom alice
配置虛擬使用者的存取權限
虛擬使用者對vsftpd服務的存取權限是通過匿名使用者的相關指令進行的。比如,如果需要讓tom使用者具有上傳檔案的許可權,可以修改/etc/vsftpd/vusers_config/tom檔案,在裡面添加如下選項即可。
[[email protected] vusers_config]# vim tomanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES[[email protected] vusers_config]# vim alice anon_upload_enable=NOanon_mkdir_write_enable=NOanon_other_write_enable=NO
啟動服務,設定開機自啟,查看21連接埠是否被監聽
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6B/B0/wKioL1U0o7aySHnUAABzZrUoe9w172.jpg" title="1.jpg" alt="wKioL1U0o7aySHnUAABzZrUoe9w172.jpg" />
測試虛擬使用者
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6B/B5/wKiom1U0ujLjFDnqAAHiQJfvXi8688.jpg" title="2.jpg" alt="wKiom1U0ujLjFDnqAAHiQJfvXi8688.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6B/B1/wKioL1U0u6fBt_wYAAE1pXpZmxg827.jpg" title="3.jpg" alt="wKioL1U0u6fBt_wYAAE1pXpZmxg827.jpg" />
The end
好了,FTP基於PAM和MySQL/MariaDB的虛擬使用者存取控制,就說到這裡啦,配置ftp過程中請確保不要敲多空格,否則是會報錯或者登入失敗的,我就深受其害,這確實是個坑,部署過程中遇到問題可留言,多謝關注呦。以上僅為個人學習整理,如有錯漏,大神勿噴~~~
本文出自 “北城書生” 部落格,請務必保留此出處http://scholar.blog.51cto.com/9985645/1636190
FTP基於PAM和MySQL/MariaDB實現虛擬使用者存取控制