vsftp匿名使用者,本地使用者,虛拟使用者+mysql認證詳情配置
一,簡介
vsftpd 是“very secure FTP daemon”的縮寫,安全性是它的一個最大的特點。vsftpd 是一個 UNIX 類作業系統上運作的伺服器的名字,它可以運作在諸如 Linux、BSD、Solaris、 HP-UNIX等系統上面,是一個完全免費的、開發源代碼的ftp伺服器軟體,支援很多其他的 FTP 伺服器所不支援的特征。比如:非常高的安全性需求、帶寬限制、良好的可伸縮性、可建立虛拟使用者、支援IPv6、速率高等。注意這個是linux系統上必須掌握的基礎服務之一。工作中各種上傳下載下傳都要用到它。--松鼠&青蛙
下面資料傳輸端口計算227*256+73
使用者認證分為匿名使用者,本地使用者,虛拟使用者:
nsswitch:network server switch,名稱解析架構
配置檔案:/etc/nsswitch.conf
子產品:/lib64/libnss*,/usr/lib64/libnss*
pam:pluggable authentication module,使用者認證架構
子產品:/lib64/security
配置檔案:/etc/pam.conf,/etc/pam.d/*
匿名使用者:Anonymous
本地使用者:
虛拟使用者:僅用于通路某特定服務中的資源
配置檔案
centos 6.5 vsftpd
/etc/logrotate.d/vsftpd 完成日志滾動
/etc/pam.d/vsftpd 使用者認證配置檔案
/etc/rc.d/init.d/vsftpd 服務腳本
/etc/vsftpd 配置檔案
/var/ftp匿名使用者共享資源位置 ftp使用者家目錄就是/var/ftp/
系統使用者通過ftp通路的資源的位置:使用者自己的家目錄
虛拟使用者用過ftp通路的資源的位置:給虛拟使用者指定的映射成為的系統使用者的家目錄
二,匿名使用者配置
anonymous_enable=YES 啟用匿名使用者
anon_upload_enable=YES 匿名使用者上傳權限
anon_mkdir_write_enable=YES 匿名建立目錄權限
anon_other_write_enable=YES 匿名删除檔案權限
注意還必須給匿名使用者主目錄授權
setfacl -m u:ftp:rwx /var/ftp/pub/ 給匿名使用者目錄權限讀寫權限
三,本地使用者配置
local_enable=YES 本地使用者上傳檔案
write_enable=YES
local_umask=022 本地用上傳檔案預設的檔案權限
禁锢所有的ftp本地使用者于其家目錄中
chroot_local_user=YES
或隻鎖定指定使用者與其家目錄中
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list 在此檔案中鎖定使用者
資訊驗證檢視
cat /var/log/secure使用者登入驗證資訊
其他設定
給關鍵目錄添加警告說明提示資訊
dirmessage_enable=YES目錄消息使用者通路目錄是回報的資訊
在ftp對應的目錄下echo "hello world" > .message
日志:
傳輸日志put,get的user資訊
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES指定日志格式
使用者上傳檔案屬主
chown_uploads=YES 是否改變上傳檔案的屬主
chown_username=whoever 改成哪個系統使用者
空閑會話逾時時長
idle_session_timeout=600
資料連結逾時時長
data_connection_timeout=120
不建議啟用:文本格式上傳下載下傳;強制如果本來是二進制程式,上傳下載下傳會出現問題。
#ascii_upload_enable=YES
#ascii_download_enable=YES
歡迎資訊
#ftpd_banner=Welcome to blah FTP service.
黑白名單控制
vsftpd使用pam完成使用者認證,其用到的pam配置檔案 /etc/vsftpd/ftpusers黑名單
pam_service_name=vsftpd
[root@localhost pam.d]# cat vsftpd
#%PAM-1.0
會話session optional pam_keyinit.so force revoke
認證auth requiredpam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed(終止)黑名單
auth requiredpam_shells.so
auth includepassword-auth
賬号account includepassword-auth
session required pam_loginuid.so
session includepassword-auth
vsftpd不使用pam自己控制使用者登入的清單檔案/etc/vsftpd/user_list
userlist_enable=YES是否啟用這個檔案控制使用者登入
userlist_deny=YES|NO 出現在這個檔案中的使用者就拒絕或允許
速率限制
連結限制:
max_clients:最大并發連接配接數
max_per_ip:每個ip可同時發起的并發請求數;
傳輸速率:
anon_max_rate:所有匿名使用者的一共最大傳輸速率,機關是"位元組/秒"
local_max_rate:本地使用者
四,虛拟使用者
所有的虛拟使用者會被統一映射為一個指定的系統賬号,通路的共享位置即為此系統賬号的家目錄;各虛拟使用者可被賦予不用的通路權限:通過匿名使用者的權限控制參數進行指定;
虛拟使用者賬号的存儲方式;
檔案:編輯檔案
奇數行為使用者
偶數行為密碼
此檔案需要被編碼為hash格式
關系型資料庫中的表中:
計數查詢資料庫完成使用者認證;
mysql庫,此時pam要依賴pam_mysql子產品
pam_mysql的使用說明
配置文檔
一、安裝所需要程式
1、安裝mysql和pam_mysql
# yum -y install mysql-server mysql-devel pam_mysql
注意:pam_mysql由epel源提供。
二、建立虛拟使用者賬号
1.準備資料庫及相關表
首先請確定mysql服務已經正常啟動。而後,按需要建立存儲虛拟使用者的資料庫即可,這裡将其建立為vsftpd資料庫。
mysql> create database vsftpd;
mysql> grant select on vsftpd.* to vsftpd@localhost identified by 'www.magedu.com';
mysql> grant select on vsftpd.* to [email protected] identified by 'www.magedu.com';
mysql> flush privileges;
mysql> use vsftpd;
mysql> create table users (
id int AUTO_INCREMENT NOT NULL,
name char(20) binary NOT NULL,
password char(48) binary NOT NULL,
primary key(id)
);
2、添加測試的虛拟使用者
根據需要添加所需要的使用者,需要說明的是,這裡将其密碼為了安全起見應該使用PASSWORD函數加密後存儲。
mysql> insert into users(name,password) values('magedu1',password('magedu'));
mysql> insert into users(name,password) values('magedu2',password('magedu'));
三、配置vsftpd
1.建立pam認證所需檔案
#vi /etc/pam.d/vsftpd.mysql
添加如下兩行
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
crypt (plain)
The method to encrypt the user's password:
0 (or "plain") = No encryption. Passwords stored in plaintext.
HIGHLY DISCOURAGED. 沒加密
1 (or "Y") = Use crypt(3) function. 加密的
2 (or "mysql") = Use MySQL PASSWORD() function. It is possible
that the encryption function used by PAM-MySQL
is different from that of the MySQL server, as
PAM-MySQL uses the function defined in MySQL's
C-client API instead of using PASSWORD() SQL function
in the query. MySQL PASSWORD()加密的
3 (or "md5") = Use plain hex MD5.
4 (or "sha1") = Use plain hex SHA
注意:由于mysql的安裝方式不同,pam_mysql.so基于unix sock連接配接mysql伺服器時可能會出問題,此時,建議授權一個可遠端連接配接的mysql并通路vsftpd資料庫的使用者。
2.修改vsftpd的配置檔案,使其适應mysql認證
建立虛拟使用者映射的系統使用者及對應的目錄
# useradd -s /sbin/nologin -d /var/ftproot vuser -s為了不讓使用者登入
# chmod go+rx /var/ftproot 其他使用者能讀能進入
請確定/etc/vsftpd.conf中已經啟用了以下選項
anonymous_enable=NO
local_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
而後添加以下選項
guest_enable=YES
guest_username=vuser
并確定pam_service_name選項的值如下所示
pam_service_name=vsftpd.mysql
四、啟動vsftpd服務
# service vsftpd start
# chkconfig vsftpd on
檢視端口開啟情況
# netstat -tnlp |grep :21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 23286/vsftpd
使用虛拟使用者登入,驗正配置結果,以下為本機的指令方式測試,你也可以在其它Win Box上用IE或者FTP用戶端工具登入驗正
# ftp localhost
五、配置虛拟使用者具有不同的通路權限。本地使用者映射到虛拟使用者其實是匿名使用者權限
vsftpd可以在配置檔案目錄中為每個使用者提供單獨的配置檔案以定義其ftp服務通路權限,每個虛拟使用者的配置檔案名同虛拟使用者的使用者名。配置檔案目錄可以是任意未使用目錄,隻需要在vsftpd.conf指定其路徑及名稱即可。
1、配置vsftpd為虛拟使用者使用配置檔案目錄
# vim vsftpd.conf
添加如下選項
user_config_dir=/etc/vsftpd/vusers_config
2、建立所需要目錄,并為虛拟使用者提供配置檔案
# mkdir /etc/vsftpd/vusers_config/
# cd /etc/vsftpd/vusers_config/
# touch tom jerry
3、配置虛拟使用者的通路權限
虛拟使用者對vsftpd服務的通路權限是通過匿名使用者的相關指令進行的。比如,如果需要讓tom使用者具有上傳檔案的權限,可以修改/etc/vsftpd/vusers_config/tom檔案,在裡面添加如下選項即可。
anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}
pam驗證
1.生成虛拟使用者密碼庫檔案。為了建立此密碼庫檔案,先要生成一個文本檔案。該檔案的格式如下,單數行為使用者名,偶數行為密碼:
#vi account.txt
magedu1
magedu
magedu2
2.生成密碼庫檔案,并修改其權限:
#db_load -T -t hash -f ./account.txt /etc/vsftpd/account.db
#chmod 600 /etc/vsftpd/account.db
3.建立一個虛拟使用者的PAM檔案。加上如下兩行内容:
#vi /etc/pam.d/vsftp.pam
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/account
account required /lib/security/pam_userdb.so db=/etc/vsftpd/account
4,建立虛拟使用者映射的系統使用者及對應的目錄
pam_service_name=vsftp.pam
本文轉自 吃草的青蛙 51CTO部落格,原文連結:http://blog.51cto.com/tlinux/1721981,如需轉載請自行聯系原作者