命令連接,控制連接:21/tcp
數據連接: 主動模式,運行在20/tcp端口 和 被動模式,運行在隨機端口
數據傳輸模式(自動模式):有二進制(mp3,jpg等)和文本(html)兩種傳輸模式
ftp服務器端程序:wu-ftpd:vsftpd pureftpd Filezilla Serv-U
ftp客戶端程序:CLI文本模式命令:ftp lftp
GUI圖形界面軟件:gftpd FlashFXP Cuteftp Filezilla
vsftpd:命名為Very Secure ftp Daemon proftpd
/etc/vsftpd: 配置文件目錄
/etc/init.d/vsftpd: 服務腳本
/usr/sbin/vsftpd: 主程序
/var/ftp:ftp服務和用戶的根目錄或家目錄,也是匿名用戶訪問目錄
基于PAM實現用戶認證:
/etc/pam.d/* :認證程序位置
/lib/security/*:認證程序模塊位置
可支持虛擬用戶
ftp: 系統用戶,分有以下三種用戶
匿名用戶:anonymous
系統用戶: 本地系統用戶
虛擬用戶: 需要映射到系統用戶
ftp文件服務權限:包括系統文件目錄權限和配置文件授權,取交集權限
安全通信方式:分明文和密文兩種,如下:
ftp:明文
ftps: ftp+ssl/tls,密文
sftp: OpenSSH, SubSystem, sftp(SSH),密文
2.配置vsftpd.conf文件詳解
安裝vsftpd 服務器軟件
yum install vsftpd
編輯配置vsftpd.conf文件
vim /etc/vsftpd/vsftpd.conf
配置文件內容如下:
anonymous_enable=YES ?#開啟匿名用戶訪問
local_enable=YES ? ? #開啟本地用戶訪問
write_enable=YES ? ? #開啟本地用戶上傳權限
anon_upload_enable=YES #開啟匿名用戶上傳權限
#anon_mkdir_write_enable=YES #開啟匿名用戶創建目錄權限
#anon_other_write_enable=YES #開啟匿名用戶其他權限,如創建,刪除文件等權限
#dirmessage_enable=YES #如在共享目錄創建.messages隱藏文件并添加提示語,給登入用戶提示而已
#xferlog_enable=YES ? #開啟日志功能
connect_from_port_20=YES #命令連接20/tcp端口開啟
#chown_uploads=YES ? ? #開啟修改上傳用戶的屬主功能
#chown_username=whoever ?#改變上傳用戶屬主是誰
#xferlog_file=/var/log/xferlog #對應上面的日志開啟功能,日志文件路徑位置
xferlog_std_format=YES ? ? ?#日志文件格式
#idle_session_timeout=600 ? ?#ftp命令連接時最大空閑連接時間
#data_connection_timeout=120 ?#ftp數據連接最大傳輸時間
#ftpd_banner=Welcome to blah FTP service. ?#ftp用戶連接服務器提示語
#chroot_list_enable=YES ? ?#開啟鎖定用戶家目錄,以防用戶切入至系統其他目錄
#chroot_list_file=/etc/vsftpd/chroot_list #此文件下的ftp用戶才會被鎖定在家具錄
#chroot_local_user=YES ? ? #開啟本地系統用戶全部開啟chroot機制
listen=YES ?#獨立守護進程,根據其他設置可將vsftpd變成瞬時守護進程
#max_clients= #同一時間最大并發用戶連接數
#max_per_ip= ?#同一時刻每個IP地址最大連接數
pam_service_name=vsftpd ?#基于pam認證服務名字
userlist_enable=YES ? ? #user_list文件中的用戶禁止登入ftp服務器
注意:如果上面配置開啟上傳下載或刪除文件權限,但是所共享的目錄指定的ftp登入用戶沒有寫入
權限,這樣也不能上傳下載或刪除文件
3.ftp明文傳輸服務器搭建,
實驗目的:在/var/ftp/目錄下創建upload目錄
新增本地用戶willow
允許匿名用戶和本地系統用戶willow能在upload目錄上傳下載創建刪除文件
yum install vsftpd
mkdir /var/ftp/upload
useradd willow
echo "willow" | passwd --stdin willow
setfact -m u:willow:rwx /var/ftp/upload #這步驟很重要,授權willow對此目錄有寫入權限
vim /etc/vsftpd/vsftpd.conf
確保如下配置生效:
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
ftp localhost 利用willow用戶登入測試效果
4.ftps密文傳輸服務器搭建,即ftp + tls加密認證
創建自簽名證書
cd /etc/pki/CA
mkdir certs newcerts crl
touch index.txt
echo 01 > serial
vim /etc/pki/tls/openssl.cnf
dir ? ? ? ? ? ?= ../../CA
將上面一條語句修改成下面一條語句
dir ? ? ? ? ? ? = /etc/pki/CA
(umask 077,openssl genrsa -out private/cakey.pem 1024)
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
mkdir /etc/vsftpd/ssl
cd /etc/vsftpd/ssl
(umask 077,openssl genrsa -out vsftpd.key 1024)
openssl req -new -key vsftpd.key -out vsftpd.csr
openssl ca -in vsftpd.key -out vsftpd.crt
注意到此為止,我僅給出創建證書并再申請證書步驟,并沒有給出詳細過程,依自己實驗環境而定
如需了解證書建立詳細步驟,請查看我前面的博客,在此我們得到如下信息:
私鑰文件位置:/etc/vsftpd/ssl/vsftpd.key
證書文件位置:/etc/vsftpd/ssl/vsftpd.crt
vim /etc/vsftpd/vsftpd.conf
增加如下容:
ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv3=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt ? #證書位置
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key ?#私鑰位置
重啟vsftpd服務
service vsftpd restart
使用FlashFXP客戶端軟件測試即可,加密傳輸
5.基于mysql虛擬用戶認證的ftp服務器搭建
5.1.編譯安裝pam_mysql-0.7RC1
tar zxvf ?pam_mysql-0.7RC1.tar.gz
cd ?pam_mysql-0.7RC1
./configure --with-mysql=/usr --with-openssl
make
make install
cp /usr/lib/security/pam_mysql.* /lib/security/
5.2.安裝vsftpd
yum -y install vsftpd
5.3.安裝mysql-server和mysql-devel
yum install -y mysql-server mysql-devel
service mysqld start
5.4.創建虛擬用戶賬號
5.4.1準備數據庫及相關表
#mysql ?本地連接mysql數據庫
mysql> create database vsftpd;
mysql> grant select on vsftpd.* to vsftpd@localhost identified by ‘vsftpd‘;
mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by ‘vsftpd‘;
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)
-> );
5.4.2.添加測試的虛擬用戶
mysql> insert into users(name,password) values(‘willow‘,‘willow‘);
mysql> insert into users(name,password) values(‘tom‘,‘tom‘);
注意;這里將其密碼采用明文格式存儲,原因是pam_mysql與MySQL的password()函數可能會有所不同。
可通過pam_mysql目錄下的REDME文件查看加密解釋,即less REDME
6.建立pam認證所需文件
#vim /etc/pam.d/vsftpd.mysql
添加如下兩行
auth required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
account required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
7.修改vsftpd的配置文件,使其適應mysql認證
建立虛擬用戶映射的系統用戶及對應的目錄
#useradd -s /sbin/nologin -d /var/ftpvuser vuser
#chmod go+rx /var/ftprootvuser
請確保/etc/vsftpd.conf中已經啟用了以下選項
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
chroot_local_user=YES
必須添加以下選項
guest_enable=YES
guest_username=vuser ?#虛擬用戶映射本地用戶vuser
pam_service_name=vsftpd.mysql #對照前面新增的/etc/pam.d/vsftpd.mysql名字
啟動vsftpd服務并測試效果
# service vsftpd start
# chkconfig vsftpd on
# ftp localhost
8.配置虛擬用戶具有不同的訪問權限
8.1.配置vsftpd為虛擬用戶使用配置文件目錄
# vim vsftpd.conf
關閉匿名用戶所有權限
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
必須添加如下選項
user_config_dir=/etc/vsftpd/vusers_dir
mkdir /etc/vsftpd/vusers_dir/
cd /etc/vsftpd/vusers_dir/
touch willow tom
8.2.配置虛擬用戶的訪問權限
8.2.1.讓虛擬用戶tom不能上傳,只有下載權限
vim /etc/vsftpd/vusers/tom
anon_upload_enable=NO
8.2.2.讓虛擬用戶willow具有上傳,下載,創建,刪除等權限
vim?/etc/vsftpd/vusers/willow
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
本文出自 “夏維柳” 博客,請務必保留此出處http://willow.blog.51cto.com/6574604/1786264
linux下ftp和ftps以及ftp基于mysql虛擬用戶認證服務器的搭建
標簽:linux下ftp和ftps以及ftp基于mysql虛擬用戶認證服務器的搭建
本條技術文章來源于互聯網,如果無意侵犯您的權益請點擊此處反饋版權投訴
本文系統來源:http://willow.blog.51cto.com/6574604/1786264