4.21 詳解Linux中搭建一個ftp服務器

轉載至Linux公社:http://www.linuxidc.com/Linux/2015-06/118442.html


詳解Linux中搭建一個ftp服務器。

ftp工作是會啓動兩個通道:
控制通道 , 數據通道
在ftp協議中,控制連接均是由客戶端發起的,而數據連接有兩種模式:port模式(主動模式)和pasv(被動模式)
PORT模式:
在客戶端需要接收數據時,ftp_client(大於1024的隨機端口)-PORT命令->ftp_server(21)  發送PORT命令,這個PORT命令包含了客戶端是用什麼端口來接收數據(大於1024的隨機端口),在傳送數據時,ftp_server將通過自己的TCP 20 端口和PORT中包含的端口建立新的連接來傳送數據。

PASV模式:
傳送數據時,ftp_client--PASV命令-->ftp_server(21) 發送PASV命令時,ftp_server自動打開一個1024--5000之間的隨機端口並且通知ftp_client在這個端口上傳送數據,然後客戶端向指定的端口發出請求連接,建立一條數據鏈路進行數據傳輸。
安裝ftp
#rpm -qa vsftpd 查看是否已經安裝

#yum install -y vsftpd

#rpm -ql vsftpd  
/etc/logrotate.d/vsftpd.            vsftpd的日誌文件 
/etc/pam.d/vsftpd                    PAM認證文件 
/etc/rc.d/init.d/vsftpd              啓動腳本 
/etc/vsftpd                          vsftpd的配置文件存放的目錄 
/etc/vsftpd/ftpusers                禁止使用vsftpd的用戶列表文件 
/etc/vsftpd/user_list                禁止或允許使用vsftpd的用戶列表文件 
/etc/vsftpd/vsftpd.conf              主配置文件 
/etc/vsftpd/vsftpd_conf_migrate.sh  vsftpd操作的一些變量和設置 
/usr/sbin/vsftpd                    vsftpd的主程序 
其他一些說明文檔和手冊文件略! 
/var/ftp                            匿名用戶主目錄 
/var/ftp/pub                        匿名用戶的下載目錄

#service vsftpd start 
#chkconfig --level vsftpd 
#chkconfig --level 2345 vsftpd on

2 匿名用戶的登錄名:ftp(anonymous)  密碼空 ,登錄的目錄爲/var/ftp
 用匿名用戶登錄的時候默認是隻有下載的權限,沒有上傳,創建和刪除的權限:

#vim  /etc/vsftpd/vsftpd.conf  
anon_upload_enable=YES      上傳 
anon_mkdir_write_enable=YES    創建 
anon_other_write_enable=YES    刪除 
#service vsftpd restart

爲了安全應該禁止匿名用戶的登錄:
123456 #vim  /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO 
#anon_upload_enable=YES      上傳 
#anon_mkdir_write_enable=YES    創建 
#anon_other_write_enable=YES    刪除 
#service vsftpd restart

3 創建一個直接登錄系統用戶來登錄ftp:
#useradd -s /sbin/nologin viong 
#passwd viong

用戶具有 上傳 創建 下載 切換目錄
------------------------------------------------------------------
4 加強vsftp安全設置:
限制系統用戶鎖定在家目錄:
#vim  /etc/vsftpd/vsftpd.conf 
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list  限制更多的系統用戶,把需要限制的用戶加入/etc/vsftpd/chroot_list中即可 
#touch /etc/vsftpd/chroot_list 
#cut -d: -f 1 /etc/passwd >>/etc/vsftpd/chroot_list 將本地用戶都加入到chroot_list

限制重要系統用戶不能登錄ftp:
#cat /etc/vsftpd/ftpusers  默認已經添加了系統中一些比較重要的用戶 
#echo "viong" >>/etc/vsftpd/ftpusers  此時viong不能登錄ftp

利用ftp用戶策略允許登錄ftp的系統用戶:
/etc/vsftpd/user_list 只有在這個文件中的用戶才能登錄系統: 
#vim /etc/vsftpd/vsftpd.conf 
#在userlist_enable=YES 的後面添加 
userlist_deny=NO 
userlist_file=/etc/vsftpd/user_list

設置登錄ftp目標ip地址:用iptables設置

---------------------------------------  
搭建支持SSL加密傳輸的vsftpd:
#openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem    生成證書 
#vim /etc/vsftpd/vsftpd.conf 
ssl_enable=YES 
allow_anon_ssl=NO 
force_local_data_ssl=YES 
force_local_logins_ssl=YES 
ssl_tlsv1=YES 
ssl_sslv2=YES 
ssl_sslv3=YES 
rsa_cert_file=/etc/vsftpd/vsftpd.pem

下面是ssl參數一些定義,根據自己需求去修改:

ssl_enable=yes/no            //是否啓用 SSL,默認爲no
allow_anon_ssl=yes/no        //是否允許匿名用戶使用SSL,默認爲no
rsa_cert_file=/path/to/file      //rsa證書的位置
dsa_cert_file=/path/to/file      //dsa證書的位置
force_local_logins_ssl=yes/no    //非匿名用戶登陸時是否加密,默認爲yes
force_local_data_ssl=yes/no    //非匿名用戶傳輸數據時是否加密,默認爲yes
force_anon_logins_ssl=yes/no    //匿名用戶登錄時是否加密,默認爲no
force_anon_data_ssl=yes/no    //匿名用戶數據傳輸時是否加密,默認爲no
ssl_sslv2=yes/no              //是否激活sslv2加密,默認no
ssl_sslv3=yes/no                //是否激活sslv3加密,默認no
ssl_tlsv1=yes/no                //是否激活tls v1加密,默認yes
ssl_ciphers=加密方法            //默認是DES-CBC3-SHA


#service vsftpd restart

用flashftp連接:
連接類型爲:FTP使用公開SSL(驗證SSL)
地址:192.168.137.130:21
登錄類型:普通
用戶:viong  
密碼:123

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