Linux下FTP伺服器原理簡介及簡單應用
v 常見的FTP伺服器程序
Ü Win:IIS、Serv-U
Ü Linux:wu-ftpd,Proftpd,vsftpd(Very Secure FTP Daemon)
v 常見的FTP客戶端程序
Ü ftp命令(cmd),瀏覽器
Ü CuteFTP、FlashFXP、LeapFTP、Filezilla
Ü gftp、kuftp
v FTP連接方式
Ü 控制連接:標準埠為21,用於發送FTP命令信息
Ü 數據連接:標準埠為20,用於上傳、下載數據
v 數據連接的建立類型:
Ü 主動模式:服務端從20埠主動向客戶端發起連接 Ü 被動模式:服務端在指定範圍內的某個埠被動等待客戶端發起連接v FTP傳輸模式
Ü 文本模式:ASCII模式,以文本序列傳輸數據
Ü 二進位模式:Binary模式,以二進位序列傳輸數據
v FTP用戶的類型
Ü 匿名用戶:anonymous或
ftpÜ 本地用戶:
î 帳號名稱、密碼等信息保存在passwd、shadow文件中Ü 虛擬用戶:
î 使用獨立的帳號/密碼數據文件v常用的FTP指令
pwd cd lcd bye help ascii binary dir !dir get mget put !put[root@ftp ~]# man 5 vsftpd.conf #參考手冊
vsftpd服務基礎
vsftpd軟體包:Ü 官方站點:http://vsftpd.beasts.org/
Ü 主程序:/usr/sbin/vsftpd
Ü 服務名:vsftpd
Ü 用戶控制列表文件 î /etc/vsftpd/ftpusers î /etc/vsftpd/user_list
Ü 主配置文件
î /etc/vsftpd/vsftpd.conf 安裝vsftpd指令:[root@ftp ~]# yum info vsftpd
[root@ftp ~]# yum install vsftpd -y
[root@ftp ~]# rpm -qc vsftpd
/etc/vsftpd/vsftpd.confv
常用的全局配置項Ü listen=YES:是否以獨立運行的方式監聽服務
Ü listen_address=192.168.4.1:設置監聽的IP地址
Ü listen_port=21:設置監聽FTP服務的埠號
Ü write_enable=YES:是否啟用寫入許可權
Ü
download_enable=YES:是否允許下載文件Ü userlist_enable=YES:是否啟用user_list列表文件
Ü userlist_deny=YES:是否禁用user_list中的用戶
Ü max_clients=0:限制併發客戶端連接數
Ü max_per_ip=0:限制同一IP地址的併發連接數
v
常用的匿名FTP配置項Ü anonymous_enable=YES:啟用匿名訪問
Ü anon_umask=022:匿名用戶所上傳文件的許可權掩碼
Ü anon_root=/var/ftp:匿名用戶的FTP根目錄
Ü anon_upload_enable=YES:允許上傳文件
Ü anon_mkdir_write_enable=YES:允許創建目錄
Ü anon_other_write_enable=YES:開放其他寫入權
Ü anon_max_rate=0:限制最大傳輸速率,單位為位元組
v常用的本地用戶FTP配置項
Ü
local_enable=YES:是否啟用本地系統用戶Ü local_umask=022:本地用戶所上傳文件的許可權掩碼
Ü local_root=/var/ftp:設置本地用戶的FTP根目錄
Ü chroot_local_user=YES:是否將用戶禁錮在主目錄
Ü local_max_rate=0:限制最大傳輸速率(位元組/秒)
[root@ftp ~]# man 5 vsftpd.conf #參考手冊
vsftpd主要設置文件/etc/vsftpd/vsftpd.conf詳解:
12 anonymous_enable=YES #匿名賬戶可以登錄15 local_enable=YES #本地賬戶可以登錄
18 write_enable=YES #本地賬戶可寫許可權
22 local_umask=022 #umask值(用於許可權控制) 23 anon_umask=022 27 #anon_upload_enable=YES #匿名賬戶是否上傳文件31 #anon_mkdir_write_enable=YES #匿名賬戶是否可以創建目錄
anon_other_write_enable #匿名賬戶其它的寫許可權(刪除等)35 dirmessage_enable=YES #啟用目錄說明功能
(切換到目錄下,顯示一些消息,在目錄下創建.message文件)
38 xferlog_enable=YES #是否啟用日誌文件 51 #xferlog_file=/var/log/vsftpd.log #日誌文件位置 54 xferlog_std_format=YES #日誌格式 41 connect_from_port_20=YES #連接時打開20埠 46 #chown_uploads=YES # 上傳身份是否改變 47 #chown_username=whoever #改變上傳身份 57 #idle_session_timeout=600 #會話超時 60 #data_connection_timeout=120 #連接超時 79 #ascii_upload_enable=YES #是否允許使用ascii上傳 80 #ascii_download_enable=YES #是否允許使用ascii下載83 #ftpd_banner=Welcome to blah FTP service. #歡迎條幅
87 #deny_email_enable=YES #是否拒絕郵箱登陸 88 # (default follows) 89 #banned_email_file=/etc/vsftpd/banned_emails#拒絕郵箱登陸文件 94 chroot_list_enable=YES #允許本地賬戶切換目錄(跳出家目錄)96 chroot_list_file=/etc/vsftpd/chroot_list #此文件中的賬戶將不能切換家目錄(必須結合chroot_list_enable=YES )
#chroot_local_user=YES #禁止所有用戶切換根目錄(chroot_list_enable=YES,chroot_local_user=YES,
chroot_list_file=/etc/vsftpd/chroot_list此時只有放入列表中的賬戶可以切換,其它賬戶不能切換)107 listen=YES #監聽功能打開
114 pam_service_name=vsftpd #pam 可插拔的驗證模塊(設置pam的認證服務的配置文件名稱,存入/etc/pam.d/目錄下)
115 userlist_enable=YES #啟用賬戶限制,啟用/etc/vsftpd/user_list文件 userlist_deny=YES #禁止user_list中文件訪問,不讓輸密碼userlist_deny=NO #只允許user_list中賬戶訪問
(/etc/vsftpd/user_list不讓輸密碼,/etc/vsftpd/ftpusers允許輸密碼)
【說明:在/etc/vsftpd/user_list中 # If userlist_deny=NO, only allow users in this file# If userlist_deny=YES (default), never allow users in this file, and do not even prompt for a password.】
116 tcp_wrappers=YES #啟動系統的簡易防火牆pasv_max_port #
被動連接的最大埠pasv_min_port #被動連接的最小埠
local_max_rate=1000000 #本地賬戶最大傳輸速率1M/s anon_max_rate=100000 #匿名賬戶最大傳輸速率100K/s ftp伺服器應用之虛擬用戶 [root@ftp ~]# mkdir /mnt/cdrom/[root@ftp ~]# mount /dev/cdrom /mnt/cdrom/
[root@ftp Server]# rpm -ivh vsftpd-2.0.5-12.el5.i386.rpm
[root@ftp Server]# rpm -ivh db4-utils-4.3.29-9.fc6.i386.rpm
[root@ftp Server]# cd /etc/vsftpd/ [root@ftp vsftpd]# vim vuser.txt zhangsan 123 lisi 123[root@ftp vsftpd]# db_load -T -t hash -f vuser.txt vuser.db
[root@ftp vsftpd]# chmod 600 vuser.db [root@ftp vsftpd]# cd /etc/pam.d/ [root@ftp pam.d]# ll [root@ftp pam.d]# cp vsftpd vsftpd.vu [root@ftp pam.d]# vim vsftpd.vu #%PAM-1.0auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
[root@ftp pam.d]# vim /etc/vsftpd/vsftpd.conf 114 guest_enable=YES 115 guest_username=qq 116 pam_service_name=vsftpd.vu[root@ftp pam.d]# useradd -d /home/virtual qq
[root@ftp pam.d]# cd /home/ [root@ftp home]# chmod 755 virtual/ [root@ftp home]# mkdir virtual/d1 [root@ftp home]# touch virtual/f1 [root@ftp home]# service vsftpd start Starting vsftpd for vsftpd: [ OK ]客戶端測試,使用虛擬賬號zhangsan成功登錄ftp.如下所示:
參考資料: FTP 是文件傳輸協議 (File Transfer Protocol) 的簡寫,主要的功能是進行伺服器與客戶端的檔案管理、傳輸等事項;
FTP 的伺服器軟體非常多,例如 Wu FTP, Proftpd, vsftpd 等等,各種 FTP 伺服器軟體的發展理念並不相同, 所以選擇時請依照你的需求來決定所需要的軟體;FTP 使用的是明碼傳輸,而過去一些 FTP 伺服器軟體也曾被發現安全漏洞,因此設定前請確定該軟體已是最新版本,避免安全議題的衍生;
由於 FTP 是明碼傳輸,其實可以使用 SSH 提供的 sftp 來取代 FTP ;
大多數的 FTP 伺服器軟體都提供 chroot 的功能,將實體用戶限制在他的家目錄內;
FTP 這個 daemon 所開啟的正規埠口為 20 與 21 ,其中 21 為命令通道, 20 為主動聯機的數據傳輸通道;
FTP 的數據傳輸方式主要分為主動與被動(Passive, PASV),如果是主動的話,則 ftp-data 在伺服器端主動以 port 20 連接到客戶端,否則需開放被動式監聽的埠口等待客戶端來連接;
在 NAT 主機內的客戶端 FTP 軟體聯機時可能發生困擾,這可以透過 iptables 的 nat 模塊或利用被動式聯機來克服;
一般來說, FTP 上面共有三個群組,分別是實體用戶、訪客與匿名登錄者(real, guest, anonymous);
可以藉由修改 /etc/passwd 裡面的 Shell 欄位,來讓使用者僅能使用 FTP 而無法登入主機;
FTP
的指令、與用戶活動所造成的登錄檔是放置在 /var/log/xferlog 裡面; vsftpd 為專註在安全議題上而發展的一套 FTP 伺服器軟體,他的配置文件在 /etc/vsftpd/vsftpd.confFTP 在建立聯機以及數據傳輸時,會建立哪些聯機?
需建立兩種聯機,分別是命令通道與數據傳輸通道.在主動式聯機上為 port 21(ftp) 與 port 20(ftp-data).
FTP 主動式與被動式聯機有何不同?主動式聯機的時候,命令聯機是由 client 端主動連接到伺服器端,但是 ftp-data 則是由伺服器端主動的聯機到 client 端.至於被動式聯機的時候,則不論 command 還是 ftp-data 的聯機,伺服器端都是監聽客戶端的要求的!
有哪些動作可以讓你的
FTP 主機更為安全 (secure) ?o 隨時更新伺服器軟體到最新版本;
o 讓 guest 與 anonymous 的家目錄限制在固定的目錄中(chroot 或是 restricted);
o 拒絕 root 的登入或者其他系統賬號的登入;o 拒絕大部分的 upload 行為!
我們知道 ftp 會啟用兩個 ports ,請問這兩個 port 在哪裡規範的 (以 vsftpd 為例)?,一般正規的 port 是幾號?
若為 stand alone 時,都是由 vsftpd.conf 規範,命令通道為 listen_port=21 規範,數據連接為 connect_from_port_20=YES 及pasv_max_port=0, pasv_max_port=0 所規範. 若是 super daemon 所管理時,命令通道則由 /etc/services 所規範了.
那幾個檔案可以用來抵擋類似 root 這種系統賬號的登入 FTP?
/etc/vsftpd/ftpusers /etc/vsftpd/user_list
在 FTP 的 server 與 client 端進行數據傳輸時,有哪兩種模式?為何這兩種模式影響數據的傳輸很重要?
數據的傳輸有 ASCII 與 Binary 兩種方式,在進行 ascii 傳送方式時,被傳送的檔案將會以文本模式來進行傳送的行為, 因此,檔案的屬性會被修改過,可能造成執行檔最後卻無法執行等的問題!一般來說,ASCII 通常僅用在文本文件與一些原始碼檔案的傳送.
我的主機明明時區設定沒有問題,但為何登入 vsftpd 這個 FTP 服務時,時間就是少八小時?該如何解決?
肯定是時區方面出了問題,應該就是 vsftpd.conf 裡面少了『 use_localtime=YES 』這個參數了.本文出自 「xjzhujunjie」 博客,請務必保留此出處http://xjzhujunjie.blog.51cto.com/3582724/811668
[火星人 ] Linux下FTP伺服器原理簡介及簡單應用已經有798次圍觀