分享

linux基础20课16,ftp文件传输协议 晓桂科技

 昵称11935121 2018-07-09

FTP 成本低,跨平台,跨公网 file transfer protocol

文件传输协议

windows下的服务端serv-U

客户端 cuteftp leapftp flashftp 浏览器(IE,firefox)

一个很老的文件传输协议,明码传输,不安全

还有一个协议不要搞混乱了

tftp Trivial File Transfer Protocol 简单文件传输协议

使用的端口号:

数据传输端口 20

命令传输端口 21

主动:默认情况下,ftp服务是开放了21端口,用来接受控制命令,服务器用20端口去发送数据(连接客户端大于1024的随机端口)

被动:ftp服务也是开放21端口,用来接受命令控制,进行数据传输时,客户端会告知服务端打开一个大于1024的端口,然后客户端去主动连接服务

主动:

server(服务器) client(客户端)

ftp://ftp.bupt.edu.cn/ <---- 192.168.1.59

21 <------------- (登录) 随机端口m

20 --------------> 随机端口n

被动: --默认使用被动模式

server(服务器) client(客户端)

ftp://ftp.bupt.edu.cn/ <---- 192.168.1.59

21 <--------------- 随机端口m

随机端口(大于1024) <------- 随机端口n (请求数据)

主动模式:建立数据链路时由sever端去主动连接客户端的大于1024的随机端口

被动模式:建立数据链路时由client端去主动连服务端的随机端口

主动好还是被动好?

先假设一种场景:客户端用户安装个人防火墙,但又不懂防火墙的配置,所以防火墙默认配置。

个人防火墙的默认一般只会拒绝进来的包,而不会拒绝你出去的包和你出去再回来的包。

所以上面的主动模式是有可能被拒绝掉的

一般的使用方法是:使用被动模式,并固定服务端的随机端口范围,在服务端写防火墙来控制

主动ftp对ftp服务器的管理有利,但对客户端的管理不利。因为是服务端主动与客户端去建立连接,可能会被客户端的防火墙把源来自服务器的包给阻塞掉

被动ftp对ftp客户端的管理有利,但对服务端的管理不利。因为客户端主动与服务端去连,可能会被服务端的防火墙给阻塞掉

折衷的方法就是使用被动模式,并指定一个连接过来的端口范围,可以针对这个范围的端口进行一个防火墙的设置。 --(到iptables课程会介绍)

# yum install vsftpd -y --服务端

# yum install ftp lftp -y --客户端

匿名用户

ftp --系统用户,/etc/passwd里有此用户,默认进入ftp用户的家目录

anonymous --系统中无此用户(匿名),默认进入/var/ftp

# vim /etc/vsftpd/vsftpd.conf --主配置文件

man vsftpd.conf --查看配置帮助

/etc/init.d/vsftpd start

chkconfig vsftpd on

# netstat -ntl |grep :21 --现在是只能看到监听21端口,用于接受用户请求,登录到服务器,进行用户名密码验证

tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN

# lsof -i:21

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

vsftpd 3321 root 3u IPv4 21400 0t0 TCP *:ftp (LISTEN)

vsftpd默认的工作模式是被动模式

验证主动模式:

# ftp 192.168.1.59 --自己做客户端,连接自己的服务端

Connected to 192.168.1.59.

220 (vsFTPd 2.0.5)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (192.168.1.59:root): ftp --匿名用户ftp

331 Please specify the password.

Password: --它的密码任意或者为空

230 Login successful.

ftp> ? --使用?号可以查看能使用哪些命令

ftp> help passive --help+命令可以查看命令的帮助

passive toggle passive transfer mode

ftp> passive --使用passive命令关闭被动模式

Passive mode off.

ftp> ls --建立数据链路

200 PORT command successful. Consider using PASV.

150 Here comes the directory listing.

drwxr-xr-x 2 0 0 4096 May 13 2009 pub

226 Directory send OK.

在服务器打开第二个终端验证

# netstat -nt |grep TIME_ --可以看到是服务端的20端口去连客户端的大于1024的随机端口

tcp 0 0 192.168.1.59:20 192.168.1.59:56227 TIME_WAIT

# netstat -nt |grep TIME_

tcp 0 0 192.168.1.59:20959 10.0.0.20:36261 TIME_WAIT

tcp 0 0 192.168.1.59:10084 10.0.0.20:52731 TIME_WAIT

tcp 0 0 192.168.1.59:11956 192.168.1.59:48358 TIME_WAIT

===============================================================

配置文件参数说明:

# cat /etc/vsftpd/vsftpd.conf |grep -v ^# |grep -v ^$

-- ^#代表以#开头的行,也就是注释; ^$代表空行

anonymous_enable=YES --允许匿名用户登录

local_enable=YES --允许本地用户登录

write_enable=YES --允许本地用户登录后可写

local_umask=022 --建立文件或者目录的权限掩码

dirmessage_enable=YES --启用目录的说明或者欢迎信息

xferlog_enable=YES --打开日志功能 (只记录文件的上传和下载信息)

connect_from_port_20=YES --默认支持主动模式(两个模式都是开启的,直接使用的话是使用的被动模式)

xferlog_std_format=YES --日志使用xferlog而不是vsftpd.log,改为NO的话,则相反

listen=YES --默认运行在stand alone下

pam_service_name=vsftpd --支持pam(可植入模块)

userlist_enable=YES --打开用户列表的功能

tcp_wrappers=YES --支持tcp_wrappers

==================================================================

配置实例:

例一:不允许匿名用户登录

anonymous_enable=NO --改为no

匿名用户有两个:ftp 密码为任意值或空

anonymous 密码为任意值或空

/etc/init.d/vsftpd reload

使用匿名用户登录测试,发现登录不了

例二:匿名用户的下载

anonymous_enable=YES --改回yes

默认使用匿名用户登录的服务端的/var/ftp目录下,因为/etc/passwd里的ftp用户的家目录就是/var/ftp,所以其实就是登录到它的家目录

匿名用户默认是可以登录,也可以下载,因为/var/ftp是755权限

能读表示能下载,能写表示能上传

chmod 750 /var/ftp后使用匿名用户登录,ls都看不到文件列表,也下载不了

chmod 754 /var/ftp后使用匿名用户登录,ls都看不到文件列表,也下载不了,因为不能cd到/var/ftp

chmod 751 /var/ftp后使用匿名用户登录,ls都看不到文件列表,但是可以下载;因为它能cd到/var/ftp,ls虽然看不到,但get 文件名,是可以下载下来的

还要注意文件的权限对其是否能被下载也有关系,要登录用户对其有r权限,才可以下载

--任何服务的权限控制是要经过两道门的,一个是服务本身的权限控制,一个是操作系统的权限控制,也就是说两个都允许,才有权限;如果有防火墙的话,则还要考虑防火墙的控制

总结:匿名用户对登录的目录有rx权限,对目录里的文件有r权限就可以下载

例三:匿名用户的上传

默认是不允许匿名用户上传的

ftp> put 1

local: 1 remote: 1

227 Entering Passive Mode (10,1,1,45,135,67)

550 Permission denied. --权限拒绝,因为/var/ftp不允许ftp用户写

chmod 777 /var/ftp

Name (192.168.1.59:root): ftp

331 Please specify the password.

Password:

500 OOPS: vsftpd: refusing to run with writable anonymous root

Login failed. --/var/ftp被改为777后,发现登录不了,所以还得改回去755

因为ftp服务本身不允许系统权限给匿名写,所以解决方法是在登录目录,再去创建一个用于上传的目录,给一个写权限

chmod 755 /var/ftp --这个目录不让上传

chmod 777 /var/ftp/pub --把pub改为可写,用于上传

ftp> cd pub

250 Directory successfully changed.

ftp> put 1

local: 1 remote: 1

227 Entering Passive Mode (10,1,1,45,232,229)

550 Permission denied. --但还是权限拒绝

--因为系统权限允许了,但是服务本身的权限还是不允许,所以要去改服务的配置参数

anonymous_enable=YES

anon_upload_enable=YES --允许匿名用户上传文件

anon_mkdir_write_enable=YES --允许匿名用户创建目录

--总结:匿名用户只能对登录目录内的子目录里面进行上传,并且对这个子目录要有w权限,

--还要有anon_upload_enable=YES和anon_mkdir_write_enable=YES的支持就可以上传了

练习: 使客户端匿名用户登录后可以删除文件和重命名文件,并且可以上传一个同名文件把以前的覆盖(相当是修改) (man vsftpd.conf)

anon_other_write_enable=yes --加上此参数,再重启服务;

ftp > delete xxx --删除文件

ftp > rename mbr.bak mbr --重命名文件

ftp > rmdir aaa --删除目录

ftp > mkdir aaa --创建目录

--在rhel6下测试的,加上这个参数后,家目录里的文件不能删,但子目录里的可以

--实际环境:不建议使用此参数,太不安全了,包括上面允许匿名写也是不安全的

例四: 允许匿名下载刚上传的文件

为什么默认不允许下载自己上传的文件?

文件上传之后权限自动改为600,

而默认情况下anon_world_readable_only=YES,规定了匿名用户只能下载world readable的文件(也就是others里有r位的)

对于600权限文件是没有权限下载

-rw------- 1 14 50 845 Jul 19 06:12 fstab 不可以

-rw-r--r-- 1 0 0 1666 Jul 19 06:13 inittab 可以

方法一:让匿名账号上传的文件权限自动更改为644的权限

man vsftpd.conf

anon_umask=022

如果文件的权限是444 ,umask怎么设定?

anon_umask=0222

方法二:允许匿名账号下载不是所有人都可以读的文件

anon_world_readable_only=NO <---默认是yes,只允许下载所有人都可以读的文件

-------------------------------------------

例五:关于普通用户(系统的普通用户)的登录

普通用户默认是允许登录ftp的,并且是登录到自己的家目录,登录密码也就是普通用户登录系统的密码

禁止普通用户登录

方法一: local_enable=NO --建议使用服务的参数去禁止,但是这里会把所有的普通用户给禁止掉,要实现特定的用户的控制

方法二:/etc/passwd 里把普通用户最后一列,改为/bin/false

/bin/bash --可以登录系统,也可以登录ftp,也可以收邮件

/sbin/nologin --不可以登录系统,但可以登录ftp,也可以收邮件

/bin/false --又不可以登录系统,又不可以登录ftp,也可以收邮件

例六:使用用户列表来控制 --建议使用这种方式

userlist_enable=yes --打开用户列表功能

userlist_deny=YES --这一句可加可不加,默认就是有这一句的

vim /etc/vsftpd/user_list --加上要禁止的用户,一个用户写一行

黑名单

--------------

userlist_enable=yes

userlist_deny=no

vim /etc/vsftpd/user_list --加上允许的用户,一个用户写一行

白名单

--上面的主要要注意的是:

userlist_enable 指定的是用户列表功能是否有效

userlit_deny 指定的是用户列表是允许还是拒绝

--pam默认也把root和一些系统用户(uid小于500的)给禁用了。

vim /etc/vsftpd/ftpusers

--如果把/etc/pam.d/vsftpd文件中第二行的sense=deny改为allow,则表示/etc/vsftpd/ftpusers文件里的用户pam是允许登录的

--如果允许root用户登录ftp,则要/etc/vsftpd/user_list和/etc/vsftpd/ftpusers都不要禁用root登录ftp就可以了。但为了安全,不会这样去开放root用户的

例七:关于普通用户的下载和上传

默认是允许下载和上传的

允许上传除了系统目录有写权限外,还有与服务的参数write_enable=YES有关

--有没有可以userlist这样的控制部分用户可以上传,另外的用户不能下载的参数呢?

一般来说,ftp不适合做多个用户都登录到同一个目录里,然后对不同的用户做权限控制

而samba这种文件服务器就适合做

ftp1 ---> /home/ftp1 --> cd / --->系统的根目录

ftp2 ---> /home/ftp2 --> cd / --->系统的根目录

ftp3 ---> /home/ftp3 --> cd / --->系统的根目录

ftp1 ftp2 ftp3 ..... ---> /ftpdata

例八:关于chroot(cage笼环境,jail监牢) --为了增强安全性,把用户活动范围锁定到登录的目录里

chroot是一个安全机制,同时它也是有一个命令叫chroot

# chroot /mnt/

chroot: failed to run command `/bin/bash': No such file or directory

--这样直接chroot一个目录是不行的,只能去chroot一个有bash环境的目录(比如说双系统环境里另一个系统的根,或者是排错时错误系统的根)

默认情况下,普通用户(匿名用户除外)可以登录ftp后,cd切换到/下的任何地方,只要有r权限,就可以get文件,那么显示是不安全的

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

vim /etc/vsftpd/chroot_list --手动创建这个文件,默认不存在,并写上要加入笼环境的用户名,一行写一个

/etc/init.d/vsftpd reload

测试发现,有笼环境的用户ftp登录后,cd .. 还是在它的登录目录,出不去了

练习:如何把所有的普通用户(匿名用户默认就是笼环境)加入到jail环境

chroot_local_user=YES

例九:登录时显示目录信息

1,针对各个目录的消息显示:

dirmessage_enable=YES

vim /home/a/.message --写上关于登录此目录,或者CD到此目录的说明信息或者欢迎信息

不管什么用户,只要是能够登录或者cd到这个目录,就会显示消息

2,针对全局的消息显示

方法一:

ftpd_banner=Welcome to my ftp server !!

# ftp 192.168.1.59

Connected to 192.168.1.59.

220 Welcome to my ftp server ,this is for students --在这里就会显示信息

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (192.168.1.59:root):

方法二:

把消息直接写到一个文件里

banner_file=/etc/vsftpd/banner --手动写一个文件,并写上消息

# ftp 192.168.1.59

Connected to 192.168.1.59.

220-@@@@@@@@@@@@@@@@@@

220-@ @

220-@ @_@ @

220-@ @

220-@@@@@@@@@@@@@@@@@

220

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (192.168.1.59:root):

总结:

关于这些消息提示的功能(大多数软件都有)

系统登录提示消息:

/etc/motd

sshd在登录时,输入密码前提示消息:

vim /etc/ssh/sshd_config

banner /etc/ssh_banner

vim /etc/ssh_banner

this is 59 server ,don't try to login my system !!!!!

/etc/init.d/sshd restart

例十: ftp的日志

43 xferlog_enable=YES --打开日志记录功能

60 xferlog_std_format=YES --使用xferlog,而不是vsftpd.log

56 xferlog_file=/var/log/xferlog --打开注释,指定日志文件路径

/etc/init.d/vsftpd reload

cat /var/log/xferlog --只记录上传和下载的日志

Tue May 3 06:24:57 2011 1 10.0.0.185 660 /etc/fstab b _ o r a ftp 0 * c

Tue May 3 06:30:21 2011 1 10.0.0.185 0 /root b _ o r a ftp 0 * i

Tue May 3 06:36:09 2011 1 10.0.0.132 2322 /etc/passwd b _ o r a ftp 0 * c

Tue May 3 06:36:12 2011 1 10.0.0.132 660 /etc/fstab b _ o r a ftp 0 * c

Tue May 3 06:36:24 2011 1 10.0.0.132 0 /etc/fstab b _ i r a ftp 0 * i

Tue May 3 06:40:58 2011 1 10.0.0.86 0 /etc/passwd b _ i r a ftp 0 * i

以下面这条为例:

Tue May 3 06:40:58 2011 1 10.0.0.86 0 /etc/passwd b _ i r a ftp 0 * i

Tue May 3 06:40:58 2011 current-time访问时间

1 transfer-time传输时间,花费了多久

10.0.0.86 remote-host 远程操作的主机名或IP地址

0 byte-count 传输大小

/etc/passwd filename 操作的文件

b transfer-type a表示ascii传输 b表示binary传输

_ special-action-flag

_ no action was taken

C the file was compressed (not in use)

U the file was uncompressed (not is use)

T the file was tar'ed (not is use)

i direction 方向

i the incoming transfer

o the outgoing transfer

r access-mode 访问模式

a (anonymous) the anonymous guest user

g (guest) the real but chrooted user

r (real) the real user

a username 用户名

ftp service-name 服务名

0 authentication-method 验证类型

0 none

1 RFC931 authentication (not in use)

* authenticated-user-id

* symbol is used if an authenticated user id is not available

i completion-status

c a complete transfer

i an incomplete transfer

例十一:

使用vsftpd自己带的日志

vim /etc/vsftpd/vsftpd.conf

dual_log_enable=YES --vsftpd.log和xferlog都会产生

xferlog_std_format=NO --此参数为NO,表示只有vsftpd.log产生

# /etc/init.d/vsftpd reload

# ls /var/log/vsftpd.log --重装载服务后,就会产生这个日志文件,原来默认没有的

# cat /etc/logrotate.d/vsftpd --logrotate

--这个日志里清楚的记录了登录的成功和失败,上传下载的成功和失败等各种信息

--这两种日志的时间是比北京晚8个小时,也就是说北京时间为下午2点,它记录的是早上6点

--注意:在rhel6下,这个时间是正常的时间,不是格林威治时间了

例十二:

1,关于下载限速

anon_max_rate --匿名用户下载传输率

local_max_rate --本地用户下载传输率

local_max_rate=10000 下载传输率为10k

/etc/init.d/vsftpd reload

然后使用一个普通用户登录,去下载一个较大点的文件做测试

关于限制链接数的

max_clients --ftp服务允许的总的连接数

max_per_ip --单个客户端的最大连接数

max_per_ip=2 --指定单个客户端的最大连接数为2

/etc/init.d/vsftpd reload

测试,使用一个客户端去连接ftp服务器,第三次连接就会报下面的错误

# ftp 192.168.1.59

Connected to 192.168.1.59.

421 There are too many connections from your internet address.

在测试限速下载时,如果要重复输入一个命令去查看状态的话,可以在前面加watch(默认是每2秒查看一次,但不支持ll这种别名,换成ls -l就可以)

# watch ls -lh

例十三:vsftpd托管super daemon(xinetd)

# netstat -ntlup |grep :21

tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 3460/vsftpd

# vim /etc/xinetd.d/vsftp

service ftp

{

socket_type = stream

protocol = tcp

wait = no

user = root

server = /usr/sbin/vsftpd

disable = no

}

/etc/init.d/vsftpd stop

/etc/init.d/xinetd restart

# netstat -ntlup |grep 21

tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 3486/xinetd --由xinetd托管

# ftp 192.168.1.59 --但是登录失败

Connected to 192.168.1.59.

421 Service not available, remote server has closed connection

ftp>

# vim /etc/vsftpd/vsftpd.conf

listen=NO --要改为no

# /etc/init.d/xinetd restart

ftp 192.168.1.59 --再次访问OK

=======================================================================

tcpwrapper

# rpm -qi tcp_wrappers-7.6-40.7.el5

Summary : A security tool which acts as a wrapper for TCP daemons.

Description :

The tcp_wrappers package provides small daemon programs which can

monitor and filter incoming requests for systat, finger, FTP, telnet,

rlogin, rsh, exec, tftp, talk and other network services.

Install the tcp_wrappers program if you need a security tool for

filtering incoming network services requests.

This version also supports IPv6.

/etc/hosts.allow

/etc/hosts.deny

man hosts.allow 或 man hosts.deny

看程序是否支持tcpwrapper方式

比如说看sshd

# which sshd

/usr/sbin/sshd

# ldd /usr/sbin/sshd |grep wrap

libwrap.so.0 => /lib/libwrap.so.0 (0x00d39000) --有此模块就表示支持

# rpm -qf /lib/libwrap.so.0

tcp_wrappers-7.6-40.7.el5

--不是所有的服务都支持,很多软件编译时会有./configure --enable-libwrap来支持tcpwrapper

由两个文件来控制访问权限

/etc/hosts.allow

/etc/hosts.deny

访问控制机制为先去匹配/etc/hosts.allow,再去匹配/etc/hosts.deny,如果都没有,则都允许

vim /etc/hosts.deny

sshd: all --拒绝所有

sshd: all EXCEPT 192.168.1.59 --只允许104ssh上来,EXCEPT是例外

sshd: all EXCEPT 192.168.1.59 192.168.1.19

sshd: 192.168.1.0/255.255.255.0 EXCEPT 192.168.1.59 --拒绝192.168.1.0网段的人ssh访问,除了104外;注意子网掩码不支持/24写法

sshd:all:spawn echo '`date`' %c %d >> /var/log/tcpwrapperdeny.log

--拒绝所有人登录,并把拒绝的时间和IP等信息保存到日志文件

sshd:all:spawn wall %c 'login denied'

--拒绝所有人登录,只要一登录被拒绝,就发送广播信息

sshd:all EXCEPT 192.168.1.59: spawn wall %c 'login denied'

--man hosts.deny查看帮助

例十四:ftp支持tcp_wrapper

# ldd /usr/sbin/vsftpd |grep wrap

libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fe2acf7c000)

# vim /etc/hosts.deny --参考前面讲的sshd的写法,只要把sshd换成vsftpd就可以,其它写法一样

vsftpd:all

vsftpd: all EXCEPT 192.168.1.19

例十五:

被动连接模式,控制服务器数据传输端口的范围

vim /etc/vsftpd/vsftpd.conf

在最后加上

pasv_enable=YES --这一句默认不加也可以

pasv_min_port=3000

pasv_max_port=3005 --最小端口范围和最大端口范围可以自定义

--然后使用ftp 登录后,输入ls使之有数据传输,netstat -nt去验证查看会发现端口一定会在3000到3005范围内

=======================================================================

搭建ftp服务器,允许本地用户登录,但只允许a,b,c三个用户登录,所有的普通用户都默认登录到/ftp目录下;也允许匿名用户登录,登录到/var/ftp;

匿名用户可以下载,不能上传

a,b,c用户都只能上传和下载自己的文件;不同用户之间不能互相删除文件

只使用vsftp形式(/var/log/vsftpd.log)的日志记录,并且实现日志轮转(每月轮转一次,最多保留两个副本)

只使用主动模式的ftp连接方式

三个用户只能在/ftp目录下活动

允许匿名用户和普通用户下载的最大传输率都为100kb/s

允许ftp服务器最大的总连接为300

一个客户端最大只能有3个连接

只能在上午9:30到晚上的8:30访问ftp

允许192.168.1.0/24网段登录,但拒绝10.0.0.10登录,并将拒绝的信息保存到/var/log/ftp_denyip.log

在/var/ftp下保存光盘文件,用另一个机器配置yum,要求可以通过ftp方式的yum安装软件(也就是做一个远程的FTP式的yum源)

用另一台机每天晚上6点使用lftp下载ftp服务器的/ftp里的所有内容到自己的/backup目录下(--提示,只能用a,b,c三个普通用户登录到ftp服务器的/ftp目录,但lftp的a,b,c用户的密码如何写?man lftp)

mkdir /ftp

chmod 757 /ftp

chmod o+t /ftp

anonymous_enable=YES

userlist_enable=yes

userlist_deny=no

local_root=/ftp

local_umask=0066

xferlog_enable=YES

xferlog_std_format=NO

pasv_enable=NO --这个参数这样做是对的,但是只使用主动模式的数据连接方式会造成yum用不了(因为yum客户端默认使用被动)

chroot_local_user=YES

anon_max_rate=100000

local_max_rate=100000

max_clients=300

max_per_ip=3

listen=NO

# vim /etc/vsftpd/user_list --原来的基础上加下下面三个

a

b

c

ftp

anonymous --这个要加,否则会造成匿名用户用lftp登录不了,也会造成yum用不了

# vim /etc/logrotate.d/vsftpd

/var/log/vsftpd.log {

# ftpd doesn't handle SIGHUP properly

nocompress

missingok

monthly --加上这一句

rotate 2 --加上这一句

}

# vim /etc/xinetd.d/ftp

service ftp

{

disable = no

socket_type = stream

protocol = tcp

wait = no

user = root

server = /usr/sbin/vsftpd

access_times = 9:30-20:30

}

vim /etc/hosts.allow

vsftpd: 10.1.1.0/255.255.255.0 EXCEPT 10.1.1.10 :spawn echo '`date`' %c >> /var/log/ftp_denyip.log

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多