基于虛擬用戶控制的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             #是否允許系統用戶具有寫權限;

3、mysql相關配置;

我們需要在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
下一篇 2016-10-23

相關推薦

  • Linux的初步認識

         Linux的哲學思想 (1)一切都是一個文件(包括硬件) (2)小型,單一用途的程序 (3)鏈接程序,共同完成復雜的任務 (4)避免令人困惑的用戶界面 (5)配置數據儲存在文本中 1.Linux分為普通用戶和root用戶 普通用戶:權利非常有限對系統的損害比較小 root用戶:被稱作為超級用戶,對系統接近完整的控制,對…

    2017-05-20
  • 馬哥教育網絡班22期-第13周博客作業

    第13周博客作業 1、建立samba共享,共享目錄為/data,要求:(描述完整的過程)   1)共享名為shared,工作組為zhucke;   2)添加組develop,添加用戶gentoo,centos和ubuntu,其中gentoo和centos以develop為附加組,ubuntu不屬于develop組;密碼均為用戶名; &nb…

    Linux干貨 2016-12-26
  • CentOS上配置rsyslog客戶端用以遠程記錄日志

    rsyslog是一個開源工具,被廣泛用于Linux系統以通過TCP/UDP協議轉發或接收日志消息。rsyslog守護進程可以被配置成兩種環境,一種是配置成日志收集服務器,rsyslog進程可以從網絡中收集其它主機上的日志數據,這些主機會將日志配置為發送到另外的遠程服務器。rsyslog的另外一個用法,就是可以配置為客戶端,用來過濾和發送內部日志消息到本地文件…

    Linux干貨 2015-02-14
  • n25第二周

    linux文件管理類命令     mkdir,rmdir,cp,mv,rm,chwon,chmod     1.mkdir->make directories(創建目錄)     用法:    &nbsp…

    Linux干貨 2016-12-11
  • netstat命令和ss命令

    詳解netstat命令和ss命令

    Linux干貨 2018-01-01
  • Linux進程管理常用命令(一)

    Linux系統上的進程查看及管理工具:     pstree, ps, pidof, pgrep, top, htop, glances, pmap, vmstat, dstat,kill,job,bg,fg, nohup, nice, renice, killall,…     Centos 5: Sys…

    Linux干貨 2017-01-05
欧美性久久久久