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文件中添加支持配置