ftp
安裝包:vsftpd-2.2.2-11.el6.x86_64.rpm 服務(wù)端
lftp-4.0.9-1.el6.x86_64.rpm 客戶端
配置文件:/etc/vsftpd/vsftpd.conf
端口:20 21
服務(wù)數(shù)據(jù)目錄:/var/ftp
啟動服務(wù):service vsftpd restart
客戶端:
[root@robin ~]# lftp 172.16.110.1 ls查看重新鏈接幢炸,可能是防火墻的原因
lftp 172.16.110.1:~> get biji.txt
指定目錄下載:
lftp 172.16.110.1:~> lcd /tmp/
lftp 172.16.110.1:/> get biji.txt
或者
lftp 172.16.110.1:/> get biji.txt -o /home/
或者
[root@robin ~]# wget ftp://172.16.110.1/biji.txt
下載目錄
lftp 172.16.110.1:/> mirror software/
上傳文件
lftp 172.16.110.1:/> put /root/install.log
上傳目錄
lftp 172.16.110.1:/pub> mirror -R /boot/
匿名模式
上傳文件 (還要對文件有寫權(quán)限姜胖,777)
anonymous_enable=yes
anon_upload_enable=yes 27
anon_mkdir_write_enable=yes 31
anon_umask=022
上傳文件下載
anon_umask=022 (在添加此權(quán)限之前上傳的文件都不刻意再下載廷蓉,只有開啟次權(quán)限后再上傳的文件可以再下載)
限速
anon_max_rate=20000
修改匿名帳號登錄位置
方法:1.修改ftp用戶家目錄(家目錄權(quán)限必須是755)
ftp:x:14:50:FTP User:/tmp/ftp:/sbin/nologin
方法2:
[root@robin ftp]# vim /etc/vsftpd/vsftpd.conf
anon_root=/tmp/ftp
工作原理
主動模式
C S
1024+n---------->21
1024+m- -------->21
1024+m<------- --20
主動方式的FTP是這樣的:客戶端從一個任意的非特權(quán)端口N(N>1024)連接到FTP服務(wù)器的命令端口舆声,也就是21端口藻茂。然后客戶端開始監(jiān)聽端口N+1,并發(fā)送FTP命令"port N+1"到FTP服務(wù)器。接著服務(wù)器會從它自己的數(shù)據(jù)端口(20)連接到客戶端指定的數(shù)據(jù)端口(N+1)。
針對FTP服務(wù)器前面的防火墻來說疗琉,必須允許以下通訊才能支持主動方式FTP:
1. 任何端口到FTP服務(wù)器的21端口 (客戶端初始化的連接 S<-C)
2. FTP服務(wù)器的21端口到大于1024的端口(服務(wù)器響應(yīng)客戶端的控制端口 S->C)
3. FTP服務(wù)器的20端口到大于1024的端口(服務(wù)器端初始化數(shù)據(jù)連接到客戶端的數(shù)據(jù)端口 S->C)
4. 大于1024端口到FTP服務(wù)器的20端口(客戶端發(fā)送ACK響應(yīng)到服務(wù)器的數(shù)據(jù)端口 S<-C)
總結(jié):
命令連接:客戶端>1024端口-> 服務(wù)器21端口
數(shù)據(jù)連接:客戶端>1024端口<- 服務(wù)器20端口
端口模式
C S
1024+n--------->21
<-----------------1024+m
1024+x--------->1024+m
為了解決服務(wù)器發(fā)起到客戶的連接的問題,人們開發(fā)了一種不同的FTP連接方式歉铝。這就是所謂的被動方式盈简,或者叫做PASV,當(dāng)客戶端通知服務(wù)器它處于被動模式時才啟用太示。
在被動方式FTP中柠贤,命令連接和數(shù)據(jù)連接都由客戶端,這樣就可以解決從服務(wù)器到客戶端的數(shù)據(jù)端口的入方向連接被防火墻過濾掉的問題类缤。當(dāng)開啟一個 FTP連接時臼勉,客戶端打開兩個任意的非特權(quán)本地端口(N > 1024和N+1)。第一個端口連接服務(wù)器的21端口餐弱,但與主動方式的FTP不同宴霸,客戶端不會提交PORT命令并允許服務(wù)器來回連它的數(shù)據(jù)端口,而是提交 PASV命令膏蚓。這樣做的結(jié)果是服務(wù)器會開啟一個任意的非特權(quán)端口(P > 1024)瓢谢,并發(fā)送PORT P命令給客戶端。然后客戶端發(fā)起從本地端口N+1到服務(wù)器的端口P的連接用來傳送數(shù)據(jù)驮瞧。
對于服務(wù)器端的防火墻來說氓扛,必須允許下面的通訊才能支持被動方式的FTP:
1. 從任何端口到服務(wù)器的21端口 (客戶端初始化的連接 S<-C)
2. 服務(wù)器的21端口到任何大于1024的端口 (服務(wù)器響應(yīng)到客戶端的控制端口的連接 S->C)
3. 從任何端口到服務(wù)器的大于1024端口 (入;客戶端初始化數(shù)據(jù)連接到服務(wù)器指定的任意端口 S<-C)
4. 服務(wù)器的大于1024端口到遠(yuǎn)程的大于1024的端口(出论笔;服務(wù)器發(fā)送ACK響應(yīng)和數(shù)據(jù)到客戶端的數(shù)據(jù)端口 S->C)
總結(jié):
命令連接:客戶端>1024端口-> 服務(wù)器21端口
數(shù)據(jù)連接:客戶端>1024端口-> 服務(wù)器>1024端口
客戶端傳輸模式(客戶端開啟被動模式)
[root@robin tmp]# vim /etc/lftp.conf
set ftp:passive-mode off
服務(wù)器關(guān)閉被動模式
[root@data1 ftp]# vim /etc/vsftpd/vsftpd.conf
pasv_enable=no
用戶驗證登錄(基于系統(tǒng)用戶)
[root@robin tmp]# useradd robin 此用戶是在服務(wù)端
[root@robin tmp]# passwd robin
[root@robin tmp]# lftp -u robin,123 172.16.110.1 默認(rèn)進(jìn)入用戶的家目錄
ftp用戶將shell設(shè)置為:/sbin/nologin
當(dāng)然你要保證自己能讀寫自己的目錄,就要在配置文件vsftpd.conf里設(shè)置一下就可以讀寫了.
local_enable=yes
write_enable=yes
local_umask=022
限制本地用戶切換目錄
不限制此功能可以隨意切換目錄 ls采郎,并在有權(quán)限的目錄下上傳文件(tmp)
方法1:
[root@robin tmp]# vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES 限制所有用戶切換目錄
設(shè)置本地用戶登錄目錄(不要求目錄權(quán)限,如果上傳就需要寫權(quán)限)
local_root=/tmp/manager
限制本地用戶速度
local_max_rate=200000
限制用戶使用ftp
方法1:
將不允許登錄的用戶寫入該文件:/etc/vsftpd/ftpusers (執(zhí)行命令時,顯示連接)
方法2:黑白名單
userlist_enable=YES
userlist_deny=YES
名單文件:/etc/vsftpd/user_list 黑名單
userlist_enable=YES
userlist_deny=NO
名單文件:/etc/vsftpd/user_list 白名單(名單以外的用戶不可操作)
虛擬用戶
1.建立用戶數(shù)據(jù)庫
cat /etc/vsftpd/ftpuser.txt
test111 # 賬戶
pass111 # 密碼
test222
pass222
2.轉(zhuǎn)換文本文件為數(shù)據(jù)庫文件
[root@robin ~]# rpm -qf $(which db_load)
db4-utils-4.7.25-17.el6.x86_64
[root@robin ~]# db_load -T -t hash -f /etc/vsftpd/ftpuser.txt /etc/vsftpd/vsftpd_login.db
[root@robin ~]# chmod 600 /etc/vsftpd/vsftpd_login.db
3.更改驗證方式
[root@robin ~]# mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
[root@robin ~]# vim /etc/pam.d/vsftpd 新建一個虛擬用戶的pam文件
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
4.建立系統(tǒng)帳號做為虛擬帳號的映射帳號
[root@robin ~]# useradd -d /home/vsftp virtual
[root@robin ~]# chmod 755 /home/vsftp
5.修改配置文件啟用虛擬用戶
[root@robin ~]# vim /etc/vsftpd/vsftpd.conf
guest_enable=YES # 開啟虛擬用戶功能
guest_username=virtual # 指定虛擬用戶使用的系統(tǒng)用戶
權(quán)限:
virtual_use_local_privs=YES 該選項為YES虛擬帳號權(quán)限和本地用戶相同
virtual_use_local_privs=NO 該選項為NO虛擬帳號權(quán)限和匿名用戶相同
給每個用戶設(shè)置權(quán)限
[root@robin ~]# vim /etc/vsftpd/vsftpd.conf
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftp_user_conf
[root@robin ~]# mkdir /etc/vsftpd/vsftp_user_conf
[root@robin ~]# touch /etc/vsftpd/vsftp_user_conf/test111
[root@robin ~]# cat /etc/vsftpd/vsftp_user_conf/test111
write_enable=NO
local_max_rate=20000000
[root@robin ~]# touch /etc/vsftpd/vsftp_user_conf/test222
[root@robin ~]# cat /etc/vsftpd/vsftp_user_conf/test222
write_enable=YES
local_max_rate=1000000
登錄后目錄都是 /home/vsftp
可以在/etc/vsftpd/vsftp_user_conf/test111 中添加
local_root=/home/vsftp/test111
添加vsftp 用戶的步驟
1.在/etc/vsftpd/ftpuser.txt中添加用戶和密碼
2.運行db_load命令將用戶和密碼加入數(shù)據(jù)庫
3.在/home/vsftp 中新建文件夾與用戶同名
4.在vsftpd_user_conf 中新建和用戶同名的文件并加入local_root=/home/vsftp/name
=========================
7. 實現(xiàn)虛擬路徑
將某個目錄掛載到FTP服務(wù)器下供用戶使用,這就叫做虛擬路徑.
比如將gxl用戶的目錄掛載到FTP服務(wù)器中,供FTP服務(wù)器的用戶使用,使用如下命令即可:
[[root@localhost](mailto:root@localhost) opt]# mount --bind /home/gxl /var/ftp/pub #使用掛載命令
[[root@localhost](mailto:root@localhost) opt]# ls /var/ftp/pub
LumaQQ Screenshot.png 桌面
8. 打開vsFTPd的日志功能
添加下面一行到vsftpd.conf文件中,一般情況下該文件中有這一行,只要把前面的注釋符號#去掉即可,沒有的話就添加,或者修改:
xferlog_file=/var/log/vsftpd.log
9. 限制鏈接數(shù),以及每個IP最大的鏈接數(shù)
修改配置文件中,例如vsftp最大支持鏈接數(shù)100個,每個IP能支持5個鏈接:
max_client=100
max_per=5
10. 限制傳輸速度
修改配置文件中,例如讓匿名用戶和vsftd上的用戶(即虛擬用戶)都以80KB=1024*80=81920的速度下載
anon_max_rate=81920
local_max_rate=81920
11. 將用戶(一般指虛擬用戶)限制在自家目錄
修改配置文件中,這樣用戶就只能訪問自己家的目錄了:
chroot_local_user=yes
如果只想某些用戶僅能訪問自己的目錄,其它用戶不做這個限制,那么就需要在chroot_list文件(此文件一般是在/etc/vsftpd/中)中添加此用戶.
編輯此文件,比如將test用戶添加到此文件中,那么將其寫入即可.一般的話,一個用戶占一行.
[root@localhost vsftpd]# cat chroot_list
test
12. 綁定某個IP到vsFTPd
有時候要限制某些IP訪問服務(wù)器,只允許某些IP訪問,例如只允許192.168.0.33訪問這個FTP,同樣修改配置文件:
listen_address=192.168.0.33
配置 vsftpd.conf
anonymous_enable=NO #禁止匿名
local_enable=YES #允許本地登錄
write_enable=YES #允許寫狂魔,如需上傳蒜埋,則必須
local_umask=027 #將上傳文件的權(quán)限設(shè)置為:777-local_umask
anon_upload_enable=YES #允許虛擬用戶和匿名用戶上傳
anon_other_write_enable=YES #允許虛擬用戶和匿名用戶修改文件名和刪除文件
dirmessage_enable=YES
xferlog_enable=YES #打開日志記錄
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log #日志存放位置
xferlog_std_format=YES #標(biāo)準(zhǔn)日志格式
idle_session_timeout=600 #空閑連接超時
data_connection_timeout=120
ftpd_banner=Welcome to ChinaRise FTP service #歡迎信息
guest_enable=yes #允許虛擬用戶
guest_username=vsftpdguest #虛擬用戶使用的系統(tǒng)賬號
virtual_use_local_privs=YES #虛擬用戶擁有本地系統(tǒng)權(quán)限
chroot_local_user=NO
chroot_list_enable=YES
#以上兩行將虛擬用戶限制在其目錄下,不能訪問其他目錄最楷,或者直接用
chroot_local_user=YES
listen=yes #監(jiān)聽/被動模式
listen_port=21 #監(jiān)聽端口
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list #虛擬用戶名單保存在文件/etc/vsftpd/vsftpd.chroot_list 中
user_config_dir=/etc/vsftpd/vsftpd_user_conf #每個虛擬用戶名的更加詳細(xì)的培植保存在/etc/vsftpd/vsftpd_user_conf 中
虛擬用戶其他設(shè)置
在/etc/vsftpd/vsftpd.chroot_list 文件中寫入允許登陸的虛擬用戶名稱整份,每行一個
在/etc/vsftpd/vsftpd_user_conf 文件夾中創(chuàng)建一個以虛擬用戶用戶名命名的文件,
寫入:local_root = /var/FTP/子目錄名
然后在/var/FTP下創(chuàng)建一個對應(yīng)的目錄即可