- 积分
- 16843
在线时间 小时
最后登录1970-1-1
|

楼主 |
发表于 2022-5-14 09:05:45
|
显示全部楼层
3.使用系统用户访问 FTP 服务器. m' i- }8 F. N$ G( H; o$ m
3.1.修改配置文件并重启服务
0 L& q' [2 ], j P& gvim /etc/vsftpd/vsftpd.conf
/ u, K3 }- h9 M& R-------------------------------! S$ X! m/ J2 Z1 M- }( `
anonymous_enable=NO
. r" l1 M6 r w/ [local_enable=YES
6 Q% u \3 A/ Xwrite_enable=YES! J; @8 m) Z R7 }& T" R8 J
local_umask=0224 y" T5 f! H! p: r6 C7 p
chroot_local_user=YES
0 p7 \& Y: y" Buserlist_enable=YES
2 O' P+ m: w: Euserlist_deny=NO
, z: d; ^" j: B1 s& I+ j( R5 h2 w/ @userlist_file=/etc/vsftpd/user_list
. z1 c' K0 M' {5 h2 q% qpam_service_name=vsftpd) g. G; p( g( n
tcp_wrappers= YES- P# d# D% ` t; t% i# b6 i
-------------------------------# A9 K c0 s$ O& E' a3 b
systemctl restart vsftpd
, L' q! V# n% l5 A) Y/ X+ }systemctl status vsftpd0 D. i+ Y+ r6 ?( g
配置注解:
- z- W" u! m* Q* l' y- Banonymous_enable=NO # 修改,禁止匿名用户登录7 U4 X4 Q2 c) i9 W; v! M0 ?5 o2 j# h
local_enable=YES # 默认启用,允许本地用户登录,虚拟用户需要映射到本地用户才可以使用9 ^1 h% t& h0 x5 A; G
write_enable=YES # 默认启用,本地用户开放写权限9 {) O- K# l8 Q ]! p& T
#local_umask=022 # 注释掉,本地用户创建的文件的权限反码022,创建的文件为644
$ M5 N$ C' @/ |2 l5 P& \5 xchroot_local_user=YES # 默认启用,将本地用户锁定在自己的家目录中
2 R% i; d @, Y: Zuserlist_enable=YES # 是否启用用户控制列表,默认启用
% b7 \+ I/ j# p/ h- Y0 b, V5 X$ kuserlist_deny=NO # 指定用户控制列表的作用,默认为 YES,表示该文件内的用户列表禁止登录FTP服务器,这里修改为 NO,作为授权访问的用户列表使用 ! F& L& k+ Z! r) @3 D) v
userlist_file=/etc/vsftpd/user_list # 指定用户控制列表的文件名) r4 j) o7 B, I. @$ X
anon_umask=022 # 增加,匿名用户新增文件的umask数值。默认值为077,需要修改为022,否则上传后的文件为600* c9 s$ b* q7 }5 n$ C' s
dirmessage_enable=YES # 设置切换到目录时显 示message 隐含文件的内容
0 Q) B0 q6 I* J1 C' s N9 nxferlog_enable= YES # 激活上传和下载日志
! s3 @$ t- U$ L$ ]" Qconnect_from_port_20= YES # 启用FTP数据端口连接
8 e; x Z+ F' t1 [6 ^pam_service_name=vsftpd # 设置PAM认证服务的配置文件名称, 该文件存放在/etc/pam.d目录下7 t% h% f" A. b! E. U
listen= YES # 是否使用独占启动方式
' Y, Z# K/ O5 L0 \tcp_wrappers= YES # 使用防火墙6 }5 S) S7 \4 P
#file_open_mode=0755# F: W1 Q1 L1 x# y! t* |. j
pasv_min_port=50000 # 被动模式下的最小端口
* n! H4 b5 G( \$ }- Z2 F0 [$ z) Vpasv_max_port=60000 # 被动模式下的最大端口5 V$ j- n6 h. Z
# 设置连接服务器后的欢迎信息3 T9 e# b5 \: w6 k+ G
ftpd_banner=welcome to ftp service.+ I5 X$ k7 q3 \+ m7 U
banner_file=/etc/vsftpd/vsftpd_banner_file
- t/ L6 `/ K" l# K$ g4 k配置建议:
) p! j( X% h h# _userlist_deny=NO ,这里设置为NO,做为允许登陆的用户列表,可以手动指定允许登录 ftp 的用户,比较实用,如果设置为YES,作为禁止登录 ftp 的用户列表,与 ftpusers 功能重复,没有必要8 b- n3 f( D3 D3 s/ |
vsftpd 的配置文件列表
' \8 d% E O" C0 W7 ^/etc/vsftpd/vsftpd.conf # 主配置文件, [7 [5 [+ k! W% E
/etc/vsftpd/ftpusers # FTP限制访问的用户,里面是一些系统用户,默认不允许访问,防止被入侵,一般不需要修改
8 T/ N ?/ m" j( `' {/etc/vsftpd/user_list # 授权用户列表,可以控制哪些用户可以访问或者禁止访问,我一般配置为允许访问 ftp 的用户列表
1 Y0 B% M' R2 \1 Q9 u+ v5 ~" t特别注意:
+ L ~5 m' d( H8 d: }1 b1)vsftpd.conf 文件中每个选项设置为一行,格式为“option=value”,“=”号两边不能留空白符& r+ w6 k6 x0 {: ]1 U
3.2.创建测试用的本地用户
" f3 B) A4 w1 }$ e X$ I+ Nuseradd zhaoshuai: E# U" M( k+ k" i% R
passwd zhaoshuai
4 N; X, U" I9 e! ~' h: I创建测试用的文件和目录1 V9 ~& h# Q# j5 K2 y
[root@srv05-CT75 vsftpd]# touch /home/zhaoshuai/aaa.txt5 U& Y0 U8 R) I
[root@srv05-CT75 vsftpd]# mkdir -p /home/zhaoshuai/bbb
) ~5 n) B; i& c& \: o[root@srv05-CT75 vsftpd]# ll /home/zhaoshuai/
' l- Z4 o# d/ @4 E) J1 P& btotal 43 W0 k; N* i' k/ `; |) ]$ |' q& q
-rw-r--r-- 1 root root 0 Jun 19 02:18 aaa.txt# I0 d6 s \( a" k
drwxr-xr-x 2 root root 4096 Jun 19 02:18 bbb
1 |& r4 } Q v, H3.3.修改授权的本地用户列表: q# L9 U, L6 H: ]& R, B0 s
ftpusers 禁止登录 ftp 服务器的用户列表,一般是系统用户不需要修改,可以增加
4 r- L$ U( k2 W. a6 i% bvim /etc/vsftpd/ftpusers/ ^6 k: f" N* ~4 H4 {- h
-------------------------------* i: X' r9 O0 G- }6 z! m/ [5 m- w
root
" O% g: ?/ C# V Sbin
- e2 t& O) T/ g7 R+ U, D4 s$ W* [daemon
6 A3 K' Y- g- O9 P p: F2 nadm& k% o8 Q" ~) h& c' @6 |' z2 @( \# U7 o' B
lp: W- p( y0 N( Z: L" w/ ~ p
sync8 Z6 r, v1 f! l- u
shutdown3 g9 p+ @# U& A/ [/ `; Q+ a7 Y, J
halt
' n9 O: ]! L; wmail3 n! s' u! R @; l
news& D9 H5 p5 O! V2 j
uucp
" j3 K; T& [; C1 ]operator
4 t/ [" _% z* X6 }games
: }% W |! ?0 I( a6 _9 H ] X$ C- \nobody1 g3 D* T) x3 ~& Y" Q2 |
-------------------------------
% [2 C0 H* Q- m$ K: w9 P9 tuser_list 允许登陆 ftp 服务器的用户列表
g% [0 O( |+ g0 E' Ovim /etc/vsftpd/user_list
# C: {% s$ G# H; C/ q; X; v-------------------------------
3 V& o: n5 t2 Z" b6 b& n' bzhaoshuai
' T$ g' ^7 J. y8 L-------------------------------
8 ]* m. T! [% w( V- E备注:以上两个文件修改完不需要重启 vsftpd 服务3 [, E- m. ?0 O/ l" G8 L
3.4.使用本地用户登陆测试
: s# C) H$ b3 a7 F, c0 zftp 127.0.0.1
* ?! C5 P7 V$ I7 v# r实例演示:
+ {4 U* l7 S* Q* ^; k. W% N[root@srv05-CT75 pam.d]# ftp 127.0.0.1 9 s- C2 u7 @, v* L- X
Connected to 127.0.0.1 (127.0.0.1).
8 w5 y& W2 D' y- K" f1 O220 (vsFTPd 3.0.2)$ V/ h1 V, K+ j
Name (127.0.0.1:root): zhaoshuai _0 h5 q2 i% R z
331 Please specify the password.
7 P, J% Q) `+ V! B4 c* bPassword:7 F& i' H8 X. M3 K' G9 f3 W* Q/ d- C: m
230 Login successful.
5 s$ i9 M3 M% D& d; }* s7 eRemote system type is UNIX.! N8 t; n" @7 ?9 M1 b3 B' S2 H
Using binary mode to transfer files. x3 {; C y0 B- G9 m
ftp>
) x8 S' q" w1 ^3 z) @: hftp>
& T0 v- ?: D& S" wftp> ls c2 G: S" r6 G8 S- r
227 Entering Passive Mode (127,0,0,1,94,91).
# s3 q8 j1 @! |% K% r: _, T150 Here comes the directory listing.. Y G0 V6 o* ~2 X: {/ b
-rw-r--r-- 1 0 0 0 Jun 18 18:18 aaa.txt
/ t6 L+ x. o6 f/ _9 udrwxr-xr-x 2 0 0 4096 Jun 18 18:18 bbb }0 ?8 {- ?' b( `( n
226 Directory send OK.$ d+ r* `: I; Z5 a) c
ftp> exit# H2 k8 p. T! }4 ?2 W: u
221 Goodbye.: [/ \1 y6 d1 o6 V
如果要使用 xftp 等图形工具,需要选择主动模式
1 U4 u6 [. X3 U. F, r' e9 \% Q对于阿里云,青云等云平台的虚拟机,需要考虑安全组:允许20,21端口的接入请求
5 G0 }, N8 t7 ?4 |& }! W阿里云配置nat网关的端口转发可以通过公网连接,或者直接绑定EIP,青云需要直接绑定EIP进行公网连接- T: ~, R) n' K- P4 f. Y
阿里云和青云都无法通过负载均衡的端口转发提供ftp服务的访问,因为经过了他们内部的路由转发,无法直接找到对应的主机,总之ftp需要直连服务器才行# o& h" v; F) e& U" K
回到顶部
: X/ k3 z6 d: J7 n# ~4.使用虚拟用户访问 FTP 服务器
' h+ _( P0 I% k, o4 m( n# d8 Hftp配置为匿名访问显然是不安全也不便于管理的,另外,单纯使用系统用户的 ftp 也较难管理,通常情况下是使用一个系统用户作为ftp用户登陆ftp服务器的代理用户进行管理% d) U- H+ \ s1 F
4.1.修改vsftpd.conf 文件,重启服务
/ Q( l7 m; a8 a1 l+ Hcd /etc/vsftpd/
6 s; D7 a j5 bvim vsftpd.conf
+ N6 ~! L p |3 b2 Y7 `----------------------------------------
: x: p6 @) O1 o: E: U# ]9 `6 wanonymous_enable=NO
3 o; ~" _4 ] T1 ~$ Flocal_enable=YES
2 w$ b$ q4 ]6 `% B* Cwrite_enable=YES
6 \- G3 T: |6 H# \ F#local_umask=022
3 G1 s( r1 P4 [chroot_local_user=YES; M3 A# d1 ?6 I H
userlist_enable=YES
$ G* h0 B9 f9 I/ K( C8 zuserlist_deny=NO
7 ]: e0 p4 X" ^3 G* ]" Q; duserlist_file=/etc/vsftpd/user_list
9 ~0 f& i0 s2 D* V+ `# l$ b. wchroot_local_user=YES" T% ]& F: `$ k* ~" H3 K
# made for virtual user* A% E7 E5 F3 y* ~; m9 I+ f2 r
guest_enable=YES
# g& [3 h1 X- T! o! _( c3 Aguest_username=ftpvuser
/ e3 k, V k+ q! ]* kpam_service_name=/etc/pam.d/ftpvuser.pam
2 B( p6 ^ U( t1 f# Z" k) M }/ F' Auser_config_dir=/etc/vsftpd/vuser.d
1 g7 ~3 `1 L. K, l7 ?% w& Z7 nanon_umask=022% C9 n9 R/ m0 I J5 @- n
-------------------------------------- j* R/ ]5 ?( G
systemctl restart vsftpd5 R7 f) }# {, V! @0 G9 I d- t
systemctl status vsftpd
& F" p( j! W( |0 X" d& Z) P; x配置注解:
$ M0 [% N7 S) N+ u7 O: R+ j3 [guest_enable=YES # 增加,启用虚拟用户模式
" |9 T: i" t6 q, ?guest_username=ftpvuser # 增加,配置虚拟用户映射到的本地用户名! t% J5 S f" Z8 v- j
pam_service_name=/etc/pam.d/ftpvuser.pam # 修改,配置虚拟用户的认证方式
" K* p2 I5 y. L& Ouser_config_dir=/etc/vsftpd/vuser.d # 增加,虚拟用户的配置文件目录
' ^5 c* e' Y+ ^6 Y' M: J注意:
7 F4 E9 o9 s' K. e1)除了主配置文件外,还可以给特定用户设定个人配置文件
8 s- _# q5 d1 X" H1 d0 V1 i0 k2)虚拟用户默认可以读写,访问时映射为本地用户,所以需要启用对本地用户的控制% A: s' }9 R1 s4 T
3)实际的访问权限可由用户独立的配置文件进行单独控制+ f5 _8 A* s5 K2 S2 R+ A3 K# D
4.2.设置 ftp 虚拟用户的验证授权方式
" ?$ F* o* u9 ?* O; M0 C1)创建虚拟用户的秘钥文件* `/ ~. e0 ]& Z" b# a6 V' {! t
mkdir -p /etc/vsftpd/vuser.d
0 ~, H' _- ~4 x, e* ?cd /etc/vsftpd/vuser.d A" g7 @7 V; a7 i# i
touch vuser.list b8 Q( c- H8 |. Y6 m) G3 W
2)加密虚拟用户的秘钥文件, n# V1 G3 ]3 k F8 m' r; I6 v
# 使用 db_load 工具生成加密文件
; c, N; Q ]4 g$ L8 Ayum install db4-utils -y- L; n% |' T7 Y7 g6 ]4 \
db_load -T -t hash -f vuser.list vuser.db
' o; h0 A r% W& ^+ f6 i; c3 }file vuser.list
# K U+ A5 l9 O0 a3 Sfile vuser.db 0 n6 d. ~& C) {1 A. v& s9 R
# 为了安全,修改虚拟用户文件的访问权限
+ x9 b$ N1 u8 b/ }+ Q# N! h5 I! d& X- kchmod 600 /etc/vsftpd/vuser.*
2 w& R. `9 z" rll /etc/vsftpd/vuser.*" Y0 L2 b8 X6 ^% ]# ?3 a/ i
3)创建虚拟用户的授权认证文件" {4 s+ f2 E# E7 ?. \) b# r
cd /etc/pam.d/3 b: q% m& _5 b. l
mv vsftpd vsftpd.ori # 备份原有的ftp的pam认证文件) t% R1 M* F& _$ V, y6 w9 l1 D
vim ftpvuser.pam # 创建新的ftp虚拟用户认证文件: g" W) W4 A3 u, }; T" V
-----------------------------------
6 h3 i6 \( x4 W' [#%PAM-1.0
: I( g3 N b' tauth required pam_userdb.so db=/etc/vsftpd/vuser.d/vuser9 L! B: \ J* v K% F3 [
account required pam_userdb.so db=/etc/vsftpd/vuser.d/vuser" Q: {# o" @* e' o2 K; ?. K
-----------------------------------
2 n9 v( G% ~& e3 M4 p" E注意:db=/etc/vsftpd/vuser.d/vuser 不可以加.db的扩展名,否则认证不成功6 J: O+ o1 W7 u
4.3.实例演示:配置一个虚拟用户
( M- ]2 Z) I7 ^1)创建 ftp 虚拟用户 test1 的数据目录和秘钥文件2 |8 O5 k! o/ t t. P3 j5 k% k& X- Z
mkdir -p /data/ftpdata/zhaoshuai
5 t" x% Q; M. p( g6 ^ Otouch /data/ftpdata/zhaoshuai/ccc.txt # 创建测试文件! F% d, `7 }$ t
mkdir -p /data/ftpdata/zhaoshuai/ddd) b' F5 |5 c* L7 C$ H& P) w( }
chown -R ftpvuser.ftpvuser /data/ftpdata& @6 {: `) o( n" f' [3 E7 a. |4 j
chmod 755 /data/ftpdata/
$ t3 X4 t% e; F7 s- mls -lhd /data/ftpdata/# _0 ~7 N4 }" m2 j5 I, ^
ls -lh /data/ftpdata/
7 v* L* Q. Y; \) u+ A' B# K- G2)把该虚拟用户 test1 添加到 user_list 文件中- r' N- p% Z$ A1 _2 j+ D
vim /etc/vsftpd/user_list
$ K5 [) p2 y7 L* U- R$ o---------------------
5 D9 w+ `1 X- Z2 U. Azhaoshuai
( {: _$ H1 B9 k8 V1 l----------------------% c, `7 t8 F+ H( z# N6 I8 M' L
备注:/ e- b! }2 A% r% J* A
1)注释掉其他本地用户认证的内容,因为启用了 guest_enable 后,本地用户将失效,所有非匿名用户变成虚拟用户6 }+ y8 a& ?$ l0 c1 o7 ?! ^# X
2)因为需要授权访问的用户比较少,所以user_list设置为可以访问ftp服务的用户2 Q2 S% |6 w$ Q9 R) a
3)创建或修改虚拟用户秘钥信息
0 s& l8 R _1 I- f" e/ lcd /etc/vsftpd/vuser.d+ ]0 T1 L$ u1 @& d6 [4 e! K
vim vuser.list4 h+ H0 Z/ T, y: X; v
--------------------
) y! v; O3 F4 b2 u u" ?# h9 lzhaoshuai3 H* u1 Q( a4 q6 d1 b
zhaoshuai # 这里的密码和系统用户 zhaoshuai 的密码不同用以区分
; E4 ~' S* G/ s7 U--------------------" a/ Q3 v/ E2 Q6 P# @; w% h9 f0 u. `
db_load -T -t hash -f vuser.list vuser.db
4 \* T9 r% f2 L5 _该文件的格式为:一行用户名一行密码
4 R+ L ?$ F! {( g: k4)为用户创建授权配置文件(文件名必须为虚拟用户名)7 j, ~) _; u7 J8 ~+ X
cd /etc/vsftpd/vuser.d! f2 R* R! O; J- Z" P L
vim zhaoshuai ^+ c4 |, |* u
---------------------------
. S' L! o( e- ]* _, `( { k9 Q/ Y# 指定宿主目录,配置访问权限: k! o" L- V) X5 D5 l1 d* o
local_root=/data/ftpdata/zhaoshuai # 虚拟用户的宿主目录
1 M* F3 [" V7 C9 D6 kwrite_enable=YES
1 _3 ?( o1 {4 h4 Y7 ranon_upload_enable=YES # 上传
n l# L4 G( a4 Lanon_mkdir_write_enable=YES # 创建目录写权限4 I" U, G# _ T; Z) T* K
anon_other_write_enable=YES # 其他写入权限
* G0 a4 X8 m3 j# }* V---------------------------# P4 K3 j' d7 C. o
5)配置完成刷新配置信息
) W7 X1 u2 o2 Y5 ]" psystemctl restart vsftpd6 B; z( h6 F5 T3 C( e3 Y2 F
systemctl status vsftpd
1 G" ?, V* B( j" [6 ?6 z7 d; B6)登陆测试' s0 u; `1 l' V& y7 D! j
[root@srv05-CT75 vuser.d]# ftp 127.0.0.14 h0 K+ q; c/ D, ?
Connected to 127.0.0.1 (127.0.0.1).( f* z( x/ o6 ?' W& a! o
220 (vsFTPd 3.0.2)
% q5 \4 m" Q! s% H5 I& [3 T6 OName (127.0.0.1:root): zhaoshuai5 Y3 z% d9 _3 Q- s1 A( U6 j
331 Please specify the password.
7 h, c3 W( W7 u6 I2 fPassword: # 在这里使用系统用户zhaoshuai的密码无法登陆: y* b! d, v6 M$ n0 }7 T8 A& O2 p
530 Login incorrect.
" s, o" p, t; _8 B5 O* H; xLogin failed.
- G6 b0 Z+ v) O% @1 ^; zftp> exit
4 H9 f5 E2 C. l: Y5 P221 Goodbye./ _- s) w6 U# P$ G# ~! w
[root@srv05-CT75 vuser.d]# ftp 127.0.0.1
" W) J. J. K( Z) I: X7 ^Connected to 127.0.0.1 (127.0.0.1).
/ U4 n, @/ [/ D' u7 [' ]220 (vsFTPd 3.0.2)
9 H# Z8 G2 w0 k. v" i1 |% ZName (127.0.0.1:root): zhaoshuai# p+ F- e8 o, C) ?! k1 J
331 Please specify the password.5 \0 P/ h. n5 S3 [$ V
Password: # 使用虚拟用户zhaoshuai的密码可以正常登录: r, w# s3 N. _* A& z! T7 @1 z
230 Login successful.; C0 S5 j2 u5 ]" T$ e
Remote system type is UNIX.
6 A: j0 K% U L$ D% z. A/ _9 nUsing binary mode to transfer files.' F9 W- n+ w! S6 A' ]4 } b" `
ftp> ( k- S7 a, z5 `9 F' Z
ftp> ls # 可以查看到上面创建的测试文件
- t5 E3 H/ W8 \# o3 i J9 |. E, I227 Entering Passive Mode (127,0,0,1,226,175).; k0 I9 t7 T+ w7 O. Y$ ^6 G$ B; l
150 Here comes the directory listing.
9 E' d; R! k: W! r0 zdrwxr-xr-x 3 1000 1000 4096 Jun 12 07:59 ccc.txt' s# o$ G, x3 X5 ]- \" t
drwxr-xr-x 6 1000 1000 4096 Jun 12 07:45 ddd3 [5 z( T7 L$ X, u3 H& A
226 Directory send OK.2 d, q+ L t5 G: L: R W1 M
ftp> exit- f/ s$ [8 S8 n2 z; ~* b
221 Goodbye.2 q9 t2 o+ X$ {8 t
回到顶部
7 C" X, G9 G, P: u/ ?拓展1:ftp 的防火墙配置
3 X. ~4 H/ Y. Z) a; E6 t8 b3 ~iptables -I INPUT -p tcp --dport 21 -j ACCEPT # FTP连接端口
3 Z/ h% a* U# U! _iptables -I INPUT -p tcp --dport 33000:34000 -j ACCEPT # pasv模式下的随机端口
! m* G+ |. i, n5 riptables-save >/etc/sysconfig/iptables # 保存防火墙配置
$ t: o' c3 {1 g$ s' f$ Wsystemctl restart iptables.service% ^9 i$ Q! ~9 t, z) M: V6 E6 m
systemctl restart vsftpd.service- N' V2 `( j- p6 O
回到顶部
! f/ r. {+ }7 F. F7 T! b* w/ n拓展2:CentOS6安装vsftpd
$ c, w) d" Q* S$ \7 O3 F+ R方法相同,区别在于服务的启动命令是7 \, c( Q5 e' v
service vsftpd restart @4 z/ k" _+ q1 F4 h8 Q1 s5 Q
service vsftpd status7 }5 `9 H, ~$ G6 m6 p9 O5 h0 y
|
|