vsftpd基於pam虛擬用戶認證,還怕泄漏賬號麼?

一、ftp簡要介紹

  ftp是一個很古老的協議了,是一種基於明文傳輸的C/S架構協議。ftp基於tpc21、20端口,其中21端口爲命令端口,20端口爲數據端口。ftp命令連接同其他TCP連接一樣,不過數據連接有兩種模式:

  主動模式,也稱作PORT模式:命令請求端口時,服務器端爲減少等待,主動將數據發送給客戶端:使用本機的20端口請求客戶端的端口。這裏有個問題:服務器端想要主動連接客戶端就需要知道客戶端的端口號,可是客戶端根本沒有啓動任何端口給服務器端。協議設計中服務器端根據客戶端的命令連接端口(當然它是一個隨機端口)+1作爲請求數據連接端口,如果被用了,那麼就再次+1...。當然這種模式下,客戶端防火牆很難做。這樣就有了被動模式。

  被動模式,也稱爲PASV模式:客戶端主動請求服務器端口連接傳送數據:服務器端啓動一個隨機端口,並將端口通過命令端口發送到客戶端,客戶端知道後連接該端口,完成數據傳輸。這裏貌似服務器端口好像做防火牆較難。當然防火牆可以做了,不過這不提,以後會有博文講解防火牆對ftp被動模式的設置。

  ftp服務的權限認證有三種用戶:匿名用戶,本地用戶,虛擬用戶。匿名用戶就是將用戶權限映射到服務器上的系統用戶上,一般默認爲ftp用戶,默認路徑映射路徑到/var/ftp。前兩種用戶不是很複雜,這隻瞭解下基於虛擬用戶的設置。

二、基於pam MySQL數據庫的vsftpd 虛擬用戶認證

  安裝vsftd,mysql,這裏不做介紹,自行谷歌。

  1.pam_msyql.so的編譯安裝。這裏需要用到pam Mysql的庫文件,一般默認安裝的pam沒有包含該庫,需要自行下載編譯到pam中,準備好編譯環境和必須組件,編譯安裝它:

安裝開發環境: yum -y instal "Development Tools" "Server Plaform Tools"

安裝必要的組件:yum -y install openssl-devel  pam-devel mysql-devel

 編譯安裝:tar xf  pam_mysql-0.7RC1.tar.gz && cd pam*

                  ./configure --with-mysql=/usr --with-openssl=/usr -with-pam=/usr -with-pam-mods-dir=/lib64/security && make && make

安裝好後,可以看到庫文件安裝在/lib64/secuirty/pam_mysql.so;

# ls /lib64/security |grep mysql
pam_mysql.la
pam_mysql.so

  2.建立對應數據庫

# msyql -uroot
create database vuser;
use vuser;
create table users(id int auto_increment not null primary key,name char(30) not null,password char(48) not null);
insert into users(name,password) values ('obama',password('magedu'));
insert into users(name,password) values ('changchun',password('magedu'));
grant select on  vuser.* to 'vsftpd'@'%' identified by 'magedu';
flush privileges;

  3.建立pam配置文件

 pam 格式根據模塊不同寫法,也不同,不過這裏寫成這樣就可以了。
auth required pam_mysql.so user=vuser passwd=magedu host=172.18.29.132 db=vuser table=users usercolumn=name passwdcolumn=password crypt=2  debug
account required pam_mysql.so user=vuser passwd=magedu host=172.18.29.132 db=vuser table=users usercolumn=name passwdcolumn=password  debug

  注意裏面的庫用戶、密碼,庫名,用戶名庫中對應行,密碼的庫中對應行要寫。加上debug可以在/var/log/secure看到debug信息。自己看到的給大家提出來。

 4.建立虛擬用戶

mkdir /ftproot
useradd -s /sbin/nologin -d /ftproot vuser
chmod go+w /ftproot

 5.修改配置vsftpd.conf文件

anonymous_enable=NO # 匿名用戶開關
write_enable=YES    # 全局寫權限開關
local_enable=YES    # 非匿名用戶開關
listen_ipv6=YES
guest_enable=YES    # 來賓用戶(也就是虛擬用戶賬號)開關
guest_username=vuser    #  來賓用戶名稱
pam_service_name=vsftpd.mysql # pam認證配置文件

 這樣就完成了。可以登錄上去看看了,這裏截圖沒什麼意義,不再截圖。

 三、期間可能遇到的錯誤,主要需要關閉selinux和對應目錄的權限:因爲ftp的訪問還是基於用戶權限控制的,所以無論你是那種用戶登錄ftp都是映射到一個用戶,登錄得到的權限就是映射到用戶的權限。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章