Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux教程 >> Linux FTP服務器的搭建講解

Linux FTP服務器的搭建講解

日期:2017/2/7 14:36:04      編輯:Linux教程
 

FTP服務器的建立
 

Packages:vsftpd.i386

Daemon:vsftp(/usr/sbin/vsftpd)

Script:/etc/init.d/vsftpd

ports:21/tcp(ftp),20/tcp(ftp-data)

Configuration:

/etc/vsftpd/vsftpd.conf

/etc/vsftpd/ftpusers

/etc/pam.d/vsftpd


 

在Linux中,有好幾種實現ftp服務器的軟件,我們這裡使用redhat自帶的vsftp,它具有安全,輕量級的特性。

我們安裝vsftpd包後開啟服務,ftp即可訪問:

yum –y install vsftpd.i386

service vsftpd start

啟動服務我們就可以直接訪問ftp服務器了

ftp的根目錄位於/var/ftp/我們可以在這裡建立目錄

使用本地用戶登錄時,登錄到得目錄是用戶的家目錄

比如lftp –u zoe 192.168.0.3

登錄後顯示的就是/home/zoe目錄中的內容

 

在這裡我們主要介紹三方面內容:

1 ftp的各種配置(通過配置文件)

2 基於ssl的安全ftp

3 關於ftp虛擬用戶的建立

 

我們先認識一下vsftp的主配置文件/etc/vsftpd/vsftpd.conf

anonymous_enable=YES 是否允許用戶匿名登錄

local_enable=YES 是否允許本地用戶登錄

anon_upload_enable=YES允許用戶上傳文件

anon_mkdir_write_enable=YES允許上傳目錄

anon_other_write_enable=YES匿名用戶刪除文件的權限

dirmessage_enable=YES用戶訪問某個目錄是是否顯示歡迎信息

message_file=.message在用戶家目錄下建立一個.message文件,裡面寫上歡迎信息

xferlog_enable=YES 打開傳輸日志

xferlog_file=/var/log/vsftpd 開啟傳輸日志,定義位置

chown_loads=YES文件上傳後是否把屬主改成別的用戶

chown_username=whoever 把屬主改成誰的

idle_session_timeout=600空閒會話超時時間

data_connection_timeout=120下載超時時間

ascii_upload_enable=YES是否打開基於ascii的傳輸,一般不建議打開

ftpd_banner=Welcome to blah FTP service 歡迎信息

chroot_local_user=YES將用戶鎖定到家目錄下

如果不使用此項,用戶登錄後可以cd到ftp服務器所在主機的任一目錄進行查看

chroot_list_enable=YES 將下行定義的列表中的用戶鎖定只能訪問其家目錄

chroot_list_file=/etc/vsftpd/chroot_list 定義列表文件位置

chroot_local_user=YES鎖定所有

ls_recurse_enable=YES使用ls命令時是否使用遞歸顯示

listen=YES listen是否是獨立守護

pam_service_name=vsftpd用戶登錄模式的驗證方法定義文件

userlist_enable=YES 使用 user_list定義次文件中的用戶可以登錄

userlist_deny=N0 表示僅允許user_list文件中的用戶登錄

或者是 userlist_deny=YES 表示僅拒絕user_list文件中的用戶登錄

默認為拒絕

tcp_wrappers=YESftp是否接受tcp_wrapper的控制

 

定義在/etc/vsftpd/ftpusers中的用戶都似乎不允許登錄ftp的

 

參照上列信息,我們可以更改配置文件以使ftp服務器達到我們的要求,這裡就不再舉例,就說一下幾個ftp命令:

Lftp –u fedora 192.168.0.3 使用哪個用戶身份登錄

ftp>put issue 上傳issue文件

 

我們要匿名用戶上傳文件,則需要目錄為ftp:ftp屬主屬組

為了安全,我們這樣做

mkdir /var/ftp/upload

chown ftp:ftp /var/ftp/upload

上傳文件時cd到該目錄即可

lftp 192.168.48.3

>cd /upload

>lcd /etc

>put issue

>bye

 

我們需要關閉selinux,才能使用戶上傳文件等,那麼,我們可以可以不關閉selinux實現用戶上傳等功能呢?當然是可以的,我們主需要更改selinux策略中的選項以支持用戶上傳。

getsebool -a 顯示當前主機上所有策略支持的布爾類型的值

進行一些修改:

setsebool allow_ftpd_anon_write=1 僅對當前系統生效

或者是 setsebool -P allow_ftpd_anon_write=1 直接修改了策略庫中的值,永久生效

cd /var/ftp/

ll -Z

chcon -t public_content_rw_t upload/ 為該目錄添加讀寫權限

這樣selinux就支持了ftp的此項功能

 

-------------------------------------------SSL

 

我們登錄ftp時的密碼都是明文登錄的,這樣極不安全,所以我們可以使用基於ssl的ftp登錄傳輸方式。

首先我們要為ftp簽署證書;再在配置文件中添加下列內容

# SSL

ssl_enable=YES 啟用ssl

ssl_tlsv1=YES 啟用tls v1版本

ssl_sslv2=YES 啟用ssl v2版本

ssl_sslv3=YES

allow_anon_data_ssl=NO 匿名用戶一般不需要

force_local_data_ssl=YES本地用戶傳輸時是否使用ssl

force_local_logins_ssl=YES本地用戶登錄時是否使用ssl

rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt 證書路徑

rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key私鑰路徑

 

然後使用window端的ftp軟件進行測試,例如Flashfxp

在登錄過程中,我們可以捕獲數據包進行分析,看使用ssl前後的登錄過程中,密碼有否被加密。

捕獲數據的簡單方法:tcpdump -i eth0 A dst host 192.168.0.3

在哪個主機上執行此命令都可以,要注意網卡是否選對。

tcpdump -D 顯示網卡列表

tcpdump -i eth0 指定監聽的網卡

A 以純文本顯示首部信息

dst host IP 目標地址IP

src host IP 源地址IP

 

-------------------------------------------------虛擬用戶的建立實例:

1 建立虛擬FTP用戶的賬號數據庫文件

2 創建FTP根目錄及虛擬用戶映射的系統用戶

3 建立支持虛擬用戶的PAM認證文件

4 在vsftpd.cong文件中添加支持配置

Copyright © Windows教程網 All Rights Reserved