基于虛擬用戶控制的ftp服務

FTP作為最常見的文件共享服務,可提供文件的上傳,下載等服務;其用戶可分為三類:

匿名用戶:即不需要用戶賬號與密碼即可登錄FTP服務器,此時登錄用戶將會被映射為系統上的ftp用戶。

系統用戶:即用FTP服務器上的用戶賬號與密碼登錄FTP服務器。此種方法雖然在一定程度上對登錄做出了限制,但由于系統賬號的相關權限,則增大了FTP服務器的系統風險;

虛擬用戶:用戶需要利用專為FTP服務創建的用戶賬號與密碼進行登錄;如此,既能限制FTP的登錄用戶,又盡量保證了FTP服務器的系統安全;

下面我們就以CentOS7為例來實現基于mysqlFTP服務設置虛擬用戶登錄。

1、環境搭建;

首先,我們需要在系統上安裝vsftpdmariadb-server,由于需要實現虛擬用戶認證,所以我們還需要安裝pam。

yum –y install vsftpd mariadb-server pam

由于基于mysql數據庫實現虛擬用戶認證,所以我們需要將虛擬用戶的相關數據存放在mysql中,如此一來,我們還需要安裝pam_mysql。由于CentOS7上沒有pam_mysqlrpm包,所以我們需要編譯安裝。具體步驟如下:

yum –y groupinstall “Development Tools” “Server Platform Development”      #安裝開發包組    
yum –y install –y pam-devel mairadb-devel                                               #安裝所需開發包
./configure –with-pam=/usr –with-mysql=/usr –with-pam-mods-dir=/usr/lib64/security
make
mke install

至此,我們需要的環境搭建完成。

2、vsftpd常用選項;

vsftpd的配置文件主要為/etc/vsftpd/vsftpd.conf,我們以用戶相關作為分類來了解一下其常見配置;

匿名用戶相關配置:

anonymous_enable=YES|NO                #是否允許匿名用戶登錄;    
anon_upload_enable=YES|NO               #是否允許匿名用戶上傳;
anon_mkdir_write_enable=YES|NO            #是否允許匿名用戶創建文件夾;
anon_other_write_enable=YES|NO            #是否允許匿名用戶擁有其他寫權限,如刪除、新建文件等;

系統用戶相關配置:

local_enable=YES|NO             #是否允許系統用戶登錄;    
write_enable=YES|NO             #是否允許系統用戶具有寫權限;

3mysql相關配置;

我們需要在mysql中配置vsftpd服務所需的一些數據庫及內容;

a、啟動mysql服務;

systemctl start mariadb.service

b、初始化mysql

mysql_secure_installation

c、創建所需數據庫及表格;

mysql> create database vsftpd;        
mysql> use vsftpd;
mysql> create table user (id int unsigned not null auto_increment primary key,name char(10) not null,password char(48));
mysql> insert into user (name,password) values (‘tom’,password(‘mageedu’)),(‘jerry’,password(‘mageedu’));
mysql> grant all on vsftpd.* to ‘vsftpd’@’localhost’ identified by ‘mageedu’;
mysql> grant all on vsftpd.* to ‘vsftpd’@’127.0.0.1’ identified by ‘mageedu’;
mysql> flush privileges;

可以看到,我們創建了tomjerry兩個用戶,且密碼都為mageedu,如此,我們在mysql中需要創建的相關數據已經完成;

4、創建所需用戶與目錄;

由于FTP的虛擬用戶機制是將虛擬用戶映射為本機的一個來賓用戶,因此我們先在本機新建一個用戶作為虛擬用戶的映射用戶;

ueradd –d /ftproot vuser        
chown root:root /ftproot
mkdir /ftproot/{upload,pub}
setfacl –m u:vuser:rwx /ftproot/upload

5、配置pamvsftpd;

首先我們需要修改vsftpd的幾項配置選項如下:

pam_server_name=vsftpd.mysql                 #指定pam的相關配置文件;        
guest_enable=YES                       #啟用來賓賬戶;
guest_username=vuser                     #指定虛擬用戶映射的來賓賬戶名;
user_config_dir=/etc/vsftpd/user_conf             #指定虛擬用戶配置文件目錄;

然后我們在/etc/pam.d/目錄下新建文件vsftpd.myslq,內容如下:

auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=127.0.0.1 db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2        
account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=127.0.0.1 db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=2

下面即為此文件中一些字段的意義:

    user:連接mysql服務器的用戶名,此用戶要有權限訪問認證vsftpd服務的數據庫;

    passwd:連接mysql服務器用戶的密碼;

    hostmysql服務器主機地址;

    db:認證vsftpd服務的數據庫名稱;

    table:存放了用戶和密碼的表;

    usercolumn:用戶名對應的字段;

    passwdcolumn:密碼對應的字段;

    crypt:密碼加密方法

6、創建各虛擬用戶配置文件

首先我們新建vsftpd.conf配置文件中指定的用戶配置文件存放目錄。

mkdir /etc/vsftpd/user_conf

然后在此目錄下創建tomjerry兩個虛擬用戶同名的權限配置文件。對于權限配置文件我們可根據需要給予相應的權限,在此,我們為兩位用戶給予相同的權限,內容如下:

vim –o /etc/vsftpd/user_conf/{tom,jerry}        
anon_upload=YES
anon_mkdir_enable=YES
anon_other_enable=YES

至此,我們所需的服務以配置完畢。

設置好防火墻與SELinux后,啟動服務即可。

iptables –F        
setenforce 0
systemctl start vsftpd

 

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

(0)
luoliumengluoliumeng
上一篇 2016-10-23 19:53
下一篇 2016-10-23 19:58

相關推薦

  • 描述器

    Edit 描述器 |[Descriptors] 描述器的表現 用到3個魔術方法:__get__()、__set__()、__delete__() 方法用法: object.__get__(self,instance,owner) object.__set__(self,instance,value) object.__delete__(self,instan…

    Linux干貨 2017-11-29
  • 第二周博客作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 文件管理類命令:cp,mv,rm 常用的使用方法: cp命令: 單源復制: cp [OPTION]…[-T] SOURCE DEST 多源復制: cp [OPTION]… SOURCE …DIRECTORY cp [OPTION]… …

    Linux干貨 2017-02-06
  • openssh及基于ssl的https的配置

    openssh的簡介             OpenSSH 是 SSH 協議的免費開源實現。SSH協議族可以用來進行遠程控制, 或在計算機之間傳送文件。 而實現此功能的傳統方式,如telnet(終端仿真協議)、 rcp ftp、 rlogin、rs…

    Linux干貨 2017-05-30
  • Linux的程序包管理,RPM,yum及編譯安裝簡介

    Linux的程序包管理,RPM,yum及編譯安裝簡介   Linux的程序包,指的是ELF格式的二進制應用程序文件所組成的軟件包。它一般由二進制文件、庫文件、軟件配置文件及幫助文件等組成。而對這些包進行管理的工具,主流分為兩種,在debian上,用的是apt-get管理deb包;在redhat上,主要用rpm作為軟件包管理工具。在這里,我簡單的介紹…

    Linux干貨 2016-05-29
  • 【知識點】NO.1—-關于刪除文件后未及時釋放磁盤空間問題

    刪除了某些占用大存儲的文件,發現占用的磁盤空間并沒有的到釋放。怎么解決呢?
    在工作中經常遇到服務器某個存放日志或者某些數據的磁盤(或者目錄),因為檢查不及時磁盤存儲滿了的狀況。釋放空間真的只是刪除文件這么簡單嗎?nonono…

    2017-11-18
欧美性久久久久