VSFTPD文件服務器

      vsftpd是一款在Linux發行版中最受推崇的FTP服務器程序。特點是小巧輕快,安全易用。

  vsftpd 的名字代表"very secure FTP daemon", 安全是它的開發者 Chris Evans 考慮的首要問題之一。在這個 FTP 服務器設計開發的最開始的時候,高安全性就是一個目標。

一、安裝vsftpd

使用本地yum源安裝:

# yum -y install vsftpd

開啓服務:

# service vsftpd start

 

二、安裝pam_mysql-0.7RC1

 

# tar zxvf  pam_mysql-0.7RC1.tar.gz

# cd  pam_mysql-0.7RC1

# ./configure --with-mysql=/usr/local/mysql --with-openssl

# make

# make install

 

三、安裝數據庫

1、準備數據存放的文件系統

新建一個邏輯卷,並將其掛載至特定目錄

新建分區的步驟省略,將分區創建成邏輯卷

# pvcreate /dev/sda5

# vgcreate myvg /dev/sda5

# lvcreate -L 2G -n mydata myvg

# mke2fs -j /dev/myvg/mydata

 

這裏假設其邏輯卷的掛載目錄爲/mydata,而後需要創建/mydata/data目錄做爲mysql數據的存放目錄。

# mkdir -pv /mydata/data

# vim /etc/fstab

編輯此文件,添加如下行,以實現開機自動掛載:

/dev/myvg/mydata        /mydata            ext3    defaults        0 0

 

# mount -a

 

2、新建用戶以安全方式運行進程:

 

# groupadd -r mysql

# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql

# chown -R mysql:mysql /mydata/data

 

3、安裝並初始化mysql-5.5.20

 

首先下載平臺對應的mysql版本至本地,這裏是32位平臺,因此,選擇的爲mysql-5.5.20-linux2.6-i686.tar.gz,下載此rpm包。

解壓縮mysql,並指定其目錄:

# tar xf mysql-5.5.20-linux2.6-i686.tar.gz -C /usr/local

# cd /usr/local/

# ln -sv mysql-5.5.20-linux2.6-i686  mysql

# cd mysql 

# chown -R mysql:mysql  .

初始化mysql

# scripts/mysql_install_db --user=mysql --datadir=/mydata/data

# chown -R root  .

 

4、爲mysql提供主配置文件:

 

# cd /usr/local/mysql

# cp support-files/my-large.cnf  /etc/my.cnf

 

並修改此文件中thread_concurrency的值爲你的CPU個數乘以2,比如這裏使用如下行:

thread_concurrency = 2

另外還需要添加如下行指定mysql數據文件的存放位置:

datadir = /mydata/data

 

5、爲mysql提供sysv服務腳本:

 

# cd /usr/local/mysql

# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld

 

添加至服務列表:

# chkconfig --add mysqld

# chkconfig mysqld on

 

而後就可以啓動服務測試使用了。

# service mysqld start

 

爲了使用mysql的安裝符合系統使用規範,並將其開發組件導出給系統使用,這裏還需要進行如下步驟:

 

6、輸出mysqlman手冊至man命令的查找路徑:

 

編輯/etc/man.config,添加如下行即可:

MANPATH  /usr/local/mysql/man

 

7、輸出mysql的頭文件至系統頭文件路徑/usr/include

 

這可以通過簡單的創建鏈接實現:

# ln -sv /usr/local/mysql/include  /usr/include/mysql

 

8、輸出mysql的庫文件給系統庫查找路徑:

 

# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

 

而後讓系統重新載入系統庫:

# ldconfig

 

9、修改PATH環境變量,讓系統可以直接使用mysql的相關命令。編輯相關文件/etc/profile

    # vim /etc/profile

    添加如下行:

    PATH=$PATH:/usr/local/mysql/bin

mysql就此安裝完成

 

10.準備數據庫及相關表

 

在此,我們建立名爲vsftp的數據庫來存放相關虛擬用戶的帳號

 

mysql> create database vsftpd;

 

設置默認數據庫:

mysql> use vsftpd;

 

創建表:

mysql> create table users (

    -> id int AUTO_INCREMENT NOT NULL PRIMARY KEY,      自動增長

    -> name char(20) NOT NULL UNIQUE KEY,   定長檢索速度快

    -> passwd char(48) NOT NULL   

    -> );

    對於一個表而言,只能有一個字段使用自動增長

 

添加測試的虛擬用戶,其密碼採取加密存放的方式

往表中插入數據,id字段不用插入,自動初始化:

mysql> insert into users(name,password) values('magedu',password('123456'));

mysql> insert into users(name,password) values('marion',password('123456'));

 

查看結果

mysql> select * from users;

 

授權:

mysql> grant select on vsftpd.* to vsftpd@localhost identified by '123456';

mysql> grant select on vsftpd.* to [email protected] identified by '123456';

兩個完全不同的用戶。

mysql> flush privileges;

 

四、建立pam認證

所需文件:

 

#vi /etc/pam.d/vsftpd.mysql

編輯此文件,添加如下兩行:

auth required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users  usercolumn=name passwdcolumn=password crypt=2

account required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users  usercolumn=name passwdcolumn=password crypt=2

    也可以使用絕對路徑,中間的用戶之類的信息,要與數據庫一致。

 

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

 

#useradd -r -s /sbin/nologin -d /var/ftproot ftpuser

#chmod go+rx /var/ftproot

 

4.修改vsftpd的配置文件,使其適應mysql認證

 

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

anonymous_enable=YES

local_enable=YES

write_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

listen=YES

chroot_local_user=YES        最好開啓,開啓更安全

 

/etc/vsftpd/vsftpd.conf添加以下選項

guest_enable=YES      是否啓用來賓賬號

guest_username=ftpuser    

 

修改/etc/vsfptd/vsftpd.conf中的pam_service_name=vsftpd爲如下內容:

pam_service_name=vsftpd.mysql

 

重啓服務:

# service vsftpd restart

關閉Selinux

# setenforce 0

 

在驗證之前,先使用mysql命令,查看用戶能否使用:

# mysql -uvsftpd -p

Enter password

 

mysql> show databases;

mysql> use vsftpd

mysql> select * from users;

若可以出現結果,則此用戶可以使用

 

5.訪問FTP

                

連接成功。在此要知道,虛擬用戶的權限與匿名用戶的相同,因此,我們設置匿名用戶有上傳權限時,看看虛擬用戶是否有上傳權限。

 

修改/etc/vsftpd/vsftpd.conf文件:

將此項開啓:anon_upload_enable=YES

 

訪問FTP

    ftp> lcd C:\windows\system32

    ftp> !dir 

      

 

五、如何讓不同的虛擬用戶有不同的權限

假如讓magedu這個用戶僅有上傳權限,marion用戶僅有下載權限,改如何實現?

vsftpd來講,有一個指令:user_config_dir,可以實現指定一個目錄,在目錄中建與用戶同名的配置文件,用於定義用戶訪問FTP時獨有的權限。在目錄中可以定義能否上傳、下載,以及最大傳輸速率等訪問控制權限:

anon_max_rate

anon_umask

local_max_rate

max_clients

max_per_ip

    guest_username

listen_address

user_config_dir

1. 創建虛擬用戶配置文件目錄:

# cd /etc/vsftpd/

# mkdir virusers

# cd virusers

2. 編輯虛擬用戶配置文件:

# vim magedu

添加如下行:  

anon_upload_enable=YES

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

    

# vim marion

添加如下行:

    anon_upload_enable=NO

    anon_mkdir_write_enable=NO

    anon_other_write_enable=NO

3. 編輯主配置文件:

# cd ..

# vim vsftpd.conf

添加: user_config_dir=/etc/vsftpd/virusers

# service vsftpd reatart

4.訪問FTP


 

六、虛擬用戶可以使用以後,系統用戶無法登陸,那如何才能讓系統用戶與本地用戶都可以登陸呢?

 

# vim /etc/pam.d/vsftpd

    將文件/etc/pam.d/vsftpd.mysql/etc/pam.d/vsftpd的內容合併起來,要把/etc/pam.d/vsftpd.mysql中移過來的required改爲sufficient,還要把/etc/pam.d/vsftpd中的session行註釋掉。讀取文件的時候,是從上往下依次讀取的,要注意訪問控制的次序。修改後的內容如下:

 

#%PAM-1.0

#session    optional     pam_keyinit.so    force revoke

 

auth     sufficient        /lib/security/pam_mysql.so user=vsftpd passwd=123 host=localhost db=vsftpd table=users  usercolumn=name passwdcolumn=password crypt=2

auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

auth       required     pam_shells.so

auth       include      system-auth

auth     sufficient        /lib/security/pam_mysql.so user=vsftpd passwd=123 host=localhost db=vsftpd table=users  usercolumn=name passwdcolumn=password crypt=2

account    include      system-auth

#session    include     system-auth

#session    required     pam_loginuid.so

 

修改主配置文件:

# vim /etc/vsftpd/vsftpd.conf 

pam_service_name=vsftpd.mysql

改爲pam_service_name=vsftpd

 

重啓服務:

# service vsftpd restart

 

連接FTP

         

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