1. 程式人生 > >實現驗證的vsftpd虛擬用戶

實現驗證的vsftpd虛擬用戶

利用 splay ins dir mysql- star values director https

實現基於文件驗證的vsftpd虛擬用戶--(一臺)

一、創建用戶數據庫文件

vim /etc/vsftpd/vuser

cd /etc/vsftpd/

db_load -T -t hash -f vusers.txt vusers.db //利用文本生成虛擬用戶的數據庫文件

chmod 600 vusers.db //實現基於文件驗證的vsftpd虛擬用戶

二、創建用戶和訪問FTP目錄

useradd -d /var/ftproot -s /sbin/nologin vuser

chmod +rx /var/ftproot/

centos7 還需要執行以下操作:

chmod -w /var/ftproot/

mkdir /var/ftproot/upload

setfacl -m u:vuser:rwx /var/ftproot/upload

三、創建pam配置文件

vim /etc/pam.d/vsftpd.db

auth required pam_userdb.so db=/etc/vsftpd/vusers

account required pam_userdb.so db=/etc/vsftpd/vusers

四、指定pam配置文件

vim /etc/vsftpd/vsftpd.conf

guest_enable=YES

guest_username=vuser

pam_service_name=vsftpd.db

五、SELinux設置:

禁用SELinux 或者 setsebool -P ftpd_full_access 1

六、虛擬用戶建立獨立的配置文件

mdkir /etc/vsftpd/vusers.d/ //創建配置文件存放的路徑

vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vusers.d/

cd /etc/vsftpd/vusers.d/ //進入此目錄

//允許wang用戶可讀寫,其它用戶只讀

vim zhao //創建各用戶自已的配置文件

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

vim qian //創建各用戶自已的配置文件

local_root=/ //登錄目錄改變至指定的目錄

結果:用戶zhao

  1 [root@234c27 ~]# ftp 192.168.234.17
  2 Connected to 192.168.234.17 (192.168.234.17).
  3 220 (vsFTPd 3.0.2)
  4 Name (192.168.234.17:root): zhao
  5 331 Please specify the password.
  6 Password:
  7 230 Login successful.
  8 Remote system type is UNIX.
  9 Using binary mode to transfer files.
 10 ftp> pwd
 11 257 "/"
 12 ftp> ls
 13 227 Entering Passive Mode (192,168,234,17,75,202).
 14 150 Here comes the directory listing.
 15 drwxrwxr-x    2 0        0               6 Aug 18 02:11 upload
 16 226 Directory send OK.
 17 ftp>

結果:用戶qian

  1 [root@234c27 ~]# ftp 192.168.234.17
  2 Connected to 192.168.234.17 (192.168.234.17).
  3 220 (vsFTPd 3.0.2)
  4 Name (192.168.234.17:root): qian
  5 331 Please specify the password.
  6 Password:
  7 230 Login successful.
  8 Remote system type is UNIX.
  9 Using binary mode to transfer files.
 10 ftp> cd /
 11 250 Directory successfully changed.
 12 ftp> ls
 13 227 Entering Passive Mode (192,168,234,17,218,169).
 14 150 Here comes the directory listing.
 15 lrwxrwxrwx    1 0        0               7 Aug 16 02:04 bin -> usr/bin
 16 dr-xr-xr-x    5 0        0            4096 Aug 17 01:45 boot
 17 drwxr-xr-x   20 0        0            3340 Aug 17 12:10 dev
 18 drwxr-xr-x  130 0        0            8192 Aug 18 02:10 etc
 19 drwxr-xr-x    2 0        0               6 Apr 11 04:59 home
 20 lrwxrwxrwx    1 0        0               7 Aug 16 02:04 lib -> usr/lib
 21 lrwxrwxrwx    1 0        0               9 Aug 16 02:04 lib64 -> usr/lib64
 22 drwxr-xr-x    2 0        0               6 Apr 11 04:59 media
 23 drwxr-xr-x    2 0        0               6 Apr 11 04:59 mnt
 24 drwxr-xr-x    3 0        0              16 Aug 16 02:18 opt
 25 dr-xr-xr-x  188 0        0               0 Aug 17 12:09 proc
 26 dr-xr-x---    8 0        0             271 Aug 18 02:43 root
 27 drwxr-xr-x   37 0        0            1120 Aug 18 02:32 run
 28 lrwxrwxrwx    1 0        0               8 Aug 16 02:04 sbin -> usr/sbin
 29 drwxr-xr-x    2 0        0               6 Apr 11 04:59 srv
 30 dr-xr-xr-x   13 0        0               0 Aug 17 12:10 sys
 31 drwxrwxrwt   20 0        0            4096 Aug 18 02:41 tmp
 32 drwxr-xr-x   13 0        0             155 Aug 16 02:04 usr
 33 drwxr-xr-x   23 0        0            4096 Aug 18 02:10 var
 34 226 Directory send OK.
 35 ftp>

實現基於MYSQL驗證的vsftpd虛擬用戶--(兩臺)

說明:本實驗在兩臺CentOS7主機上實現,一臺做為FTP服務器,一臺做數據庫服務器

一、安裝所需要包和包組:

在數據庫服務器上安裝包:

Centos7:在數據庫服務器上安裝 192.168.234.27

yum –y install mariadb-server

systemctl start mariadb.service

systemctl enable mariadb

centos7:無對應rpm包,需手動編譯安裝 192.168.234.17

yum -y groupinstall "Development Tools"

yum -y install mariadb-devel pam-devel vsftpd

下載pam_mysql-0.7RC1.tar.gz

tar xvf pam_mysql-0.7RC1.tar.gz

cd pam_mysql-0.7RC1/

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

make

make install

二、在數據庫服務器上創建虛擬用戶賬號

1.建立存儲虛擬用戶數據庫和連接的數據庫用戶

mysql> CREATE DATABASE ftpdb;

mysql> SHOW DATABASES;

//ftp服務和mysql不在同一主機:

mysql> GRANT SELECT ON vsftpd.* TO vsftpd@‘192.168.234.17‘ IDENTIFIED BY ‘centos‘;

2.準備相關表

mysql> USE ftpdb;  //創建數據庫

Mysql> SHOW TABLES;

mysql> CREATE TABLE users (

id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,

name CHAR(50) BINARY NOT NULL,

password CHAR(48) BINARY NOT NULL

);

mysql>DESC users;

//測試連接

mysql -uwang -h 192.168.234.17 -pcentos

mysyl> SHOW DATABASES;

3.添加虛擬用戶

根據需要添加所需要的用戶,為了安全應該使用PASSWORD函數加密其密碼後

存儲

mysql>DESC users;

mysql> INSERT INTO users(name,password) values(‘wang‘,password(‘centos‘));

mysql> INSERT INTO users(name,password) values(‘mage‘,password(‘centos‘));

mysql> INSERT INTO users(name,password) values(‘ftp1‘,password(‘centos‘));

mysql> INSERT INTO users(name,password) values(‘ftp2‘,password(‘centos‘));

mysql> SELECT * FROM users;
//在數據庫中建立4個帳號

三、在FTP服務器上配置vsftpd服務

1.在FTP服務器上建立pam認證所需文件

vim /etc/pam.d/vsftpd.mysql 添加如下兩行

  1 [root@234c17 data]# vim /etc/pam.d/vsftpd.mysql
  2 auth required pam_mysql.so user=vsftpd passwd=centos host=192.168.234.27 db=ftpdb table=users usercolumn=name passwdcolumn=password crypt=2
  3 account required pam_mysql.so user=vsftpd passwd=centos host=192.168.234.27 db=ftpdb table=users usercolumn=name passwdcolumn=password crypt=2

註意:參考README文檔,選擇正確的加密方式

crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示使用mysql

password()函數加密,3表示md5加密,4表示sha1加密

配置字段說明

auth 表示認證

account 驗證賬號密碼正常使用

required 表示認證要通過

pam_mysql.so模塊是默認的相對路徑,是相對/lib64/security/路徑而言,也可以寫絕

對路徑;後面為給此模塊傳遞的參數

user=vsftpd為登錄mysql的用戶

passwd=magedu 登錄mysql的的密碼

host=mysqlserver mysql服務器的主機名或ip地址

db=vsftpd 指定連接msyql的數據庫名稱

table=users 指定連接數據庫中的表名

usercolumn=name 當做用戶名的字段

passwdcolumn=password 當做用戶名字段的密碼

crypt=2 密碼的加密方式為mysql password()函數加密

2.建立相應用戶和修改vsftpd配置文件,使其適應mysql認證

//建立虛擬用戶映射的系統用戶及對應的目錄

useradd -s /sbin/nologin -d /var/ftproot vsftpd

chmod 555 /var/ftproot  //centos7需除去ftp根目錄的寫權限

mkdir /var/ftproot/{upload,pub}

setfacl –m u:vfstpd:rwx /var/ftproot/upload/

//確保/etc/vsftpd.conf中已經啟用了以下選項

anonymous_enable=YES

//添加下面兩項

guest_enable=YES

guest_username=vsftpd

//修改下面一項,原系統用戶無法登錄

pam_service_name=vsftpd.mysql

四、啟動vsftpd服務

systemctl start vsftpd

systemctl enable vsftpd

//查看端口開啟情況

netstat -tnlp |grep :21

五、Selinux相關設置:在FTP服務器上執行

restorecon -R /lib64/security

setsebool -P ftpd_connect_db 1

setsebool -P ftp_home_dir 1

chcon -R -t public_content_rw_t /var/ftproot/

六、測試:利用FTP客戶端工具,以虛擬用戶登錄驗證結果

tail /var/log/secure

七、在FTP服務器上配置虛擬用戶具有不同的訪問權限

vsftpd可以在配置文件目錄中為每個用戶提供單獨的配置文件以定義其ftp服務訪

問權限,每個虛擬用戶的配置文件名同虛擬用戶的用戶名。配置文件目錄可以是任

意未使用目錄,只需要在vsftpd.conf指定其路徑及名稱即可

1、配置vsftpd為虛擬用戶使用配置文件目錄

vim /etc/vsftpd/vsftpd.conf

添加如下選項

技術分享圖片

user_config_dir=/etc/vsftpd/vsftpd.d

2、創建所需要目錄,並為虛擬用戶提供配置文件

mkdir /etc/vsftpd/vsftpd.d/

cd /etc/vsftpd/vsftpd.d/

touch ftp1 ftp2

3、配置虛擬用戶的訪問權限

虛擬用戶對vsftpd服務的訪問權限是通過匿名用戶的相關指令進行的。如果需要讓用戶wang具有上傳文件的權限,可以修改

/etc/vsftpd/vsftpd.d/ftp1文件,在裏面添加如下選項並設置為YES即可,

只讀則設為NO

註意:需確保對應的映射用戶對於文件系統有寫權限

anon_upload_enable={YES|NO}

anon_mkdir_write_enable={YES|NO}

anon_other_write_enable={YES|NO}

local_root=/ftproot 登錄目錄改變至指定的目錄

實現驗證的vsftpd虛擬用戶