天天看點

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服務腳本:

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

添加至服務清單:

# chkconfig --add mysqld

# chkconfig mysqld on

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

# service mysqld start

為了使用mysql的安裝符合系統使用規範,并将其開發元件導出給系統使用,這裡還需要進行如下步驟:

6、輸出mysql的man手冊至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

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

5.通路FTP:

VSFTPD檔案伺服器

連接配接成功。在此要知道,虛拟使用者的權限與匿名使用者的相同,是以,我們設定匿名使用者有上傳權限時,看看虛拟使用者是否有上傳權限。

修改/etc/vsftpd/vsftpd.conf檔案:

将此項開啟:anon_upload_enable=YES

通路FTP:

    ftp> lcd C:\windows\system32

    ftp> !dir 

VSFTPD檔案伺服器

五、如何讓不同的虛拟使用者有不同的權限:

假如讓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_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:

VSFTPD檔案伺服器

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

# 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

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