標籤:linux下ftp和ftps以及ftp基於mysql虛擬使用者證明伺服器的搭建
linux下ftp和ftps以及ftp基於mysql虛擬使用者證明伺服器的搭建
1.FTP協議:有命令和資料連線兩種
命令串連,控制串連: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 [email protected] identified by ‘vsftpd‘;
mysql> grant select on vsftpd.* to [email protected] 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虛擬使用者證明伺服器的搭建