FTP服務介紹---vsftp&sftp

一、vsftp

介紹

vsftp是基于GPL發(fā)布的FTP服務器軟件蹈丸。
一個是數(shù)據(jù)端口成黄,一個是控制端口,控制端口一般為21逻杖。
而數(shù)據(jù)端口不一定是20奋岁,這和FTP的應用模式有關,如果是主動模式荸百,應該為20闻伶,如果為被動模式,由服務器端和客戶端協(xié)商而定
centos7 安裝vsftpd后够话,默認為被動模式(pasv_enable=YES)蓝翰,允許匿名用戶(anonymous)登陸。

安裝
yum -y install vsftpd
配置文件vsftpd.conf詳解
  • 允許匿名用戶讀寫
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
  • 允許本地用戶登錄
local_enable=YES
local_mask=022
  • 記錄日志
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
  • 定制歡迎信息
dirmessage_enable=YES
ftpd_banner=Welcome to chenlf FTP service
chown_username=username #是否改變上傳文件的屬主女嘲,如果是則輸入一個系統(tǒng)用戶名
  • chroot
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list #是否將系統(tǒng)用戶限制在自己的home目錄下畜份,如果chroot_local_user選擇了yes,那么chroot_list_file中列出的是不chroot的用戶列表
max_clients=NUMBER #最大用戶訪問數(shù)
  • port 設定
connect_from_port_20
如果設為YES欣尼,則強制ftp-data的數(shù)據(jù)傳送使用port 20
ftp_data_port
設定ftp數(shù)據(jù)聯(lián)機所使用的port漂坏,默認為20
listen_port
ftp server 監(jiān)聽的端口,默認為21
pasv_enable 被動模式媒至,默認為YES
pasv_max_port
pasv_min_port
  • 更換檔案所有權
chown_uploads 用戶 YES/NO
若啟動顶别,所有匿名上傳數(shù)據(jù)的擁有者被更改為chown_username所設定的使用者。
chown_username
  • guest 設定
guest_enable
若啟用這項功能拒啰,所有非匿名用戶登陸者都視為guest驯绎,默認關閉
guest_username
定義guest的使用者名稱,默認為ftp
  • 用戶限制文件
用戶控制文件vsftpd.ftpusers,所有出現(xiàn)在此文件中的用戶就不可以通過ftp登錄系統(tǒng)
另一個用戶控制文件vsftpd.user_list谋旦,當在vsftpd.conf文件中定義了userlist_enable=YES剩失,它才會生效。
userlist_deny=YES(默認)册着,在vsftpd.user_list中定義的用戶不可以使用ftp拴孤;
當定義了userlist_deny=NO,只有在vsftpd.user_list文件中定義的用戶可以使用ftp
  • 一般啟動vsftp時,我們只會看到一個名為vsftpd的進程運行甲捏,但若希望每一個聯(lián)機都能以獨立的進程來呈現(xiàn)演熟,則:
setproctitle_enable=YES
  • 限制傳輸檔案的速度
anon_max_rate=50000 #限制匿名用戶50KB/s
local_max_rate=200000 #限制本地用戶200KB/s 
  • 針對不同的用戶限制速度
新增一行:
user_config_dir=/etc/vsftpd/userconf
新建目錄:
mkdir /etc/vsftpd/userconf
在這個目錄下新增名為用戶名的文件test1,test2
在test1文件中加入一行:
local_max_rate=25000
在test2文件中加入一行:
local_max_rate=30000
  • 建立一個防火墻下的ftp
使用PORT FTP mode:
iptables -A INPUT -p tcp -m multiport --dport 21,20 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
這樣配置后fpt客戶端聯(lián)機方式不能選擇passive mode,否則無法建立數(shù)據(jù)聯(lián)機芒粹,也就是說客戶端
可以連上ftp server 但是執(zhí)行l(wèi)s get等指令兄纺,便無法操作
使用PASS FTP mode:ftp port 21,ftp-data port :9981到9985
iptables -A INPUT -p tcp -m multiport --dport 21,9981,9982,9983,9984,9985 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
修改vsftpd.conf文件:
listen_port=21
pasv_enable=YES
pasv_min_port=9981
pasv_max_port=9985
這樣配置后ftp client聯(lián)機方式只能選擇passvive mode
vsftp 配置虛擬用戶
  • 配置文件修改
anonymous_enable=NO  #禁止匿名用戶訪問
chroot_list_enable=YES   # 限定用戶不可以離開主目錄
chroot_list_file=/etc/vsftpd/chroot_list 
local_enable=YES #本地用戶是否可以訪問 注:如果為NO 則所有虛擬用戶都將不能訪問原因:虛擬用戶訪問在主機上其實是以本地ftp用戶訪問的
pam_service_name=vsftpd  #pam認證文件名在/etc/pam.d/vsftpd
guest_enable=YES    #啟用虛擬用戶功能
guest_username=ftp  # 指定虛擬用戶的宿主用戶 –centos 里面已經(jīng)有內(nèi)置的ftp用戶了(注:此用戶在chroot_list_file=/etc/vsftpd/chroot_list文件里所指定的用戶)
user_config_dir=/etc/vsftpd/vuser_conf #設置虛擬用戶個人vsftp的服務配置文件
  • 查看是否安裝 db4 db4-utils
[root@localhost ~]#rpm -qa|grep db4  運行后出現(xiàn)下面內(nèi)容 說明已經(jīng)安裝可以使用db_load命令(主要是 db4-utils)
db4-devel-4.3.29-10.el5_5.2
db4-4.3.29-10.el5_5.2
db4-devel-4.3.29-10.el5_5.2
db4-4.3.29-10.el5_5.2
db4-tcl-4.3.29-10.el5_5.2
db4-utils-4.3.29-10.el5_5.2
[root@localhost ~]#

如果沒安裝則要安裝db4-utils
[root@localhost ~]#yum -y install db4-utils
  • 創(chuàng)建 chroot_list_file=/etc/vsftpd/chroot_list文件
touch /etc/vsftpd/chroot_list
echo ftp >> /etc/vsftpd/chroot_list  #(此處ftp 也要是/etc/vsftpd/vsftpd.conf中的guest_username的值)
  • 創(chuàng)建虛擬用戶目錄(密碼文本)
[root@localhost ~]#vi /etc/vsftpd/vftpuser.txtx (奇數(shù)行為用戶名 化漆,偶數(shù)行為密碼)
本文中添加如下(用cat 命令查看)
[root@localhost ~]#cat /etc/vsftpd/vftpuser.txtx
hope
hope
  • 生成虛擬用戶的db文件
[root@localhost ~]#db_load -T -t hash -f /etc/vsftpd/vftpuser.txtx /etc/vsftpd/vftpuser.db
  • 生成虛擬用戶的認證文件
[root@localhostvsftpd]# vi /etc/pam.d/vsftpd
#%PAM-1.0

session    optional    pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=denyfile=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      system-auth
account    include     system-auth
session    include     system-auth
session    required    pam_loginuid.so
注釋掉/etc/pam.d/vsftpd中所有的內(nèi)容 反正已經(jīng)不要本地用戶的認證了

特別注意 以下區(qū)別
32位系統(tǒng)增加以下兩句:
auth      required     pam_userdb.so db=/etc/vsftpd/vftpuser
account   required     pam_userdb.so db=/etc/vsftpd/vftpuser
64位系統(tǒng)增加以下兩句:
auth   required    /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required    /lib64/security/pam_userdb.sodb=/etc/vsftpd/vftpuser

這里我發(fā)現(xiàn)加了db后綴以后就不識別數(shù)據(jù)庫了

注:db=/etc/vsftpd/vftpuser 中的vftpuser 是你生成的虛擬用戶的db文件
  • 創(chuàng)建每個虛擬用戶自己的配置文件
配置文件的路徑是 /etc/vsftpd/vsftpd.conf 中的
user_config_dir=/etc/vsftpd/vuser_conf路徑

在 /etc/vsftpd/vuser_conf/下D面創(chuàng)建以用戶名為名稱的文件(名稱是/etc/vsftpd/vftpuser.txtx 下面的奇數(shù)行)
[root@localhostvsftpd]# mkdir vuser_conf
[root@localhostvsftpd]# vi /etc/vsftpd/vuser_conf/hope
內(nèi)容如下

local_root=/var/www(虛擬用戶的根目錄根據(jù)實際修改)
write_enable=YES (可寫)
allow_writeable_chroot=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_umask=022

by default, virtual users are treated with anonymous (i.e. maxi-mally restricted) privilege.
默認情況下估脆,匿名用戶所有上傳下載,所使用的用戶都是ftp用戶的權限座云,若要上傳文件疙赠,則需要ftp用戶有寫的權限,若要下載朦拖,則需要ftp用戶有讀的權限棺聊,也就是說一般情況下,ftp用戶對文件有讀權限就對文件有下載權限了文件有三種權限贞谓,文件所有人限佩,文件所有組,文件的其他人裸弦,這個anon_world_readable_only參數(shù)意思是祟同,當他為YES時候,文件的其他人必須有讀的權限才允許下載理疙,單單所有人為ftp且有讀權限是無法下載的晕城,必須其他人也有讀權限,才允許下載窖贤,這是為安全性的一方面考慮砖顷,若為NO則只要ftp用戶對文件有讀權限即可下載

  • 給文夾權限(否則不能上傳 權限可自定 本人給的是 777)
[root@localhostvsftpd]# chmod 777 /var/www/
  • 重啟vsftpd
[root@localhostvsftpd]# systemctl restart vsftpd

ftp數(shù)字代碼意義

110 重新啟動標記應答
120 服務在多久時間內(nèi)ready
125 數(shù)據(jù)鏈路埠開啟,準備傳送
150 文件狀態(tài)正常赃梧,開啟數(shù)據(jù)連接端口
200 命令執(zhí)行成功
202 命令執(zhí)行失敗
211 系統(tǒng)狀態(tài)或是系統(tǒng)求助響應
212 目錄的狀態(tài)
213 文件的狀態(tài)
214 求助的訊息
215 名稱系統(tǒng)類型
220 新的聯(lián)機服務ready
221 服務的控制連接已關閉滤蝠,可以注銷
225 數(shù)據(jù)連接開啟,但無傳輸動作
226 關閉數(shù)據(jù)端口授嘀,請求的文件操作成功
227 進入passive mode
230 使用者登入
250 請求的文件操作完成
257 顯示目前的路徑名稱
331 用戶名稱正確物咳,需要密碼
332 登入時需要賬號信息
350 請求的操作需要進一步的命令
421 無法提供服務,關閉控制連接
425 無法開啟數(shù)據(jù)鏈路
426 關閉聯(lián)機蹄皱,終止傳輸
450 請求的操作未執(zhí)行
451 命令終止览闰,有本地的錯誤
452 未執(zhí)行的命令,磁盤空間不足
500 格式錯誤巷折,無法識別命令
501 參數(shù)語法錯誤
502 命令執(zhí)行失敗
503 命令順序錯誤
504 命令所接的參數(shù)不正確
530 未登入
532 儲存文件需要賬戶登入
550 未執(zhí)行請求的操作
551 請求的命令終止压鉴,類型未知
552 請求的文件終止,儲存位溢出
553 未執(zhí)行請求的命令锻拘,名稱不正確

二油吭、sftp

sftp有以下優(yōu)點
  • 從安全方面看,sftp會更安全一點
  • 線上服務器提供在線服務,對用戶需要控制上鞠,只能讓用戶在自己的home目錄下活動
  • 用戶只能使用sftp际邻,不能ssh到機器進行操作
配置步驟
  • 創(chuàng)建sftp服務用戶組,創(chuàng)建sftp服務根目錄
groupadd sftp
#此目錄及上級目錄的所有者必須為root芯丧,權限不高于755芍阎,此目錄的組最好設定為sftp
mkdir /data/sftp
chown -R root:sftp /data/sftp
chmod -R 0755 /data/sftp
  • 修改sshd配置文件
cp /etc/ssh/{sshd_config,_bk}  #備份配置文件
vi /etc/ssh/sshd_config
注釋掉/etc/ssh/sshd_config文件中的此行代碼:
Subsystem      sftp    /usr/libexec/openssh/sftp-server
添加如下代碼:
Port 2222
Subsystem sftp internal-sftp -l INFO -f AUTH
Match Group sftp
ChrootDirectory /data/sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp -l INFO -f AUTH

凡是在用戶組sftp里的用戶,都可以使用sftp服務缨恒;使用sftp服務連接上之后谴咸,可訪問目錄為/data/sftp/username
舉個例子:
test是一個sftp組的用戶,它通過sftp連接服務器上之后骗露,只能看到/data/sftp/test目錄下的內(nèi)容
test2也是一個sftp組的用戶岭佳,它通過sftp連接服務器之后,只能看到/data/sftp/test2目錄下的內(nèi)容

  • 創(chuàng)建sftp用戶
#創(chuàng)建test sftp家目錄:test目錄的所有者必須是root萧锉,組最好設定為sftp珊随,權限不高于755
mkdir /data/sftp/test
chmod 0755 /data/sftp/test
chown root:sftp /data/sftp/test
useradd -g sftp -s /sbin/nologin test  #添加用戶,參數(shù)-s /sbin/nologin禁止用戶通過命令行登錄
  • 在test目錄下創(chuàng)建一個可以寫的upload目錄
mkdir /data/sftp/test/upload
chown -R test:sftp /data/sftp/test/upload

注:sftp服務的根目錄的所有者必須是root柿隙,權限不能超過755(上級目錄也必須遵循此規(guī)則)叶洞,sftp的用戶目錄所有者也必須是root,且最高權限不能超過755。

  • 啟動sftp
systemctl restart sshd
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末禀崖,一起剝皮案震驚了整個濱河市衩辟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌波附,老刑警劉巖艺晴,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異掸屡,居然都是意外死亡封寞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門仅财,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钥星,“玉大人,你說我怎么就攤上這事满着∏矗” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵风喇,是天一觀的道長宁改。 經(jīng)常有香客問我,道長魂莫,這世上最難降的妖魔是什么还蹲? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上谜喊,老公的妹妹穿的比我還像新娘潭兽。我一直安慰自己,他們只是感情好斗遏,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布山卦。 她就那樣靜靜地躺著,像睡著了一般诵次。 火紅的嫁衣襯著肌膚如雪账蓉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天逾一,我揣著相機與錄音铸本,去河邊找鬼。 笑死遵堵,一個胖子當著我的面吹牛箱玷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播陌宿,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼锡足,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了限番?” 一聲冷哼從身側響起舱污,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎弥虐,沒想到半個月后扩灯,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡霜瘪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年珠插,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颖对。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡捻撑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缤底,到底是詐尸還是另有隱情顾患,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布个唧,位于F島的核電站江解,受9級特大地震影響,放射性物質發(fā)生泄漏徙歼。R本人自食惡果不足惜犁河,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一鳖枕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧桨螺,春花似錦宾符、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至缠局,卻和暖如春则奥,著一層夾襖步出監(jiān)牢的瞬間考润,已是汗流浹背狭园。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留糊治,地道東北人唱矛。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像井辜,于是被迫代替她去往敵國和親绎谦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348