ftp服务器的搭建

一、 ftp原理
vsftp 非常安全的文件传输协议
ftp file transfer protocol 文件传输协议 跨平台

data port control port control port date port
client server
主动 ----------------------------------------------------->21 listen
>1024 <---------------------------------------------------------------------------20

被动 ----------------------------------------------------->21 listen
>1024+1 <--------------------------------------------------------------- >1024

连接过程
客户端向服务器发送连接请求,服务器回应220的代码,客户端向服务器发送用户名,服务器向客户端发送331代码密码请求,客户端向服务器发送密码,服务器返回客户端230登陆成功代码,客户端向服务器发送PWD命令请求,服务器回应257代码工作路径。

1.----------------------------------tcp connection----------------------------------------->
2.<-------------------------------220 ready-------------------------------------------------
3. ----------------------------------USER----------------------------------------------------->
4.<-------------------------------331 authentication--------------------------------------
5. ----------------------------------PASSWD------------------------------------------------->
6.<-------------------------------230 login---------------------------------------------------
7. ----------------------------------PWD----------------------------------------------------->
8. <-------------------------------257 work path--------------------------------------------

二、 kylin3.3
1、 配置yum源,安装vsftpd。yum install vsftpd -y
设置开机自启 systemctl enable vsftpd
2、 匿名访问
修改/etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
//一般不会打开匿名用户上传和写权限。

xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log

默认的ftp目录为ftp用户的家目录(/var/ftp/)
修改/var/ftp/pub/权限为777
在这里插入图片描述
systemctl start vsftpd //启动vsftp
systemctl enable vsftpd //设为开机自启
在/var/ftp/pub/下面新建几个文件,然后用lftp登陆,测试上传下载。
在这里插入图片描述
在这里插入图片描述
使用ftp登陆,用户名为anonymous,没有密码。ftp没有补全功能,可以看到返回的代码与之前的连接过程对应。
在这里插入图片描述
3、 用户名访问
PS:root账户默认不能登陆。
修改/etc/vsftpd/vsftpd.conf
local_root=/var/ftp
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES //kylin3.3如果不能访问再加
在这里插入图片描述
4、 文件解析
Vsftpd.conf //ftp默认配置文件
ftpuser //黑名单,级别高于user_list
chroot_list
//当chroot_local_user=NO,chroot_list_enable=YES时,chroot_list是一个黑名单,即:所有出现在名单中的用户都被限制在ftp的工作目录。
当chroot_local_user=YES,chroot_list_enable=YES时,chroot_list是一个白名单,即:所有出现在名单中的用户将不都被限制在ftp的工作目录。
user_list
//默认是黑名单。
当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入;
当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);
PS:使用白名单后,匿名用户将无法登入!除非在user_list中加入一行:anonymous

三、 开启selinux和防火墙
1、 当服务器打开selinux之后,再次上传文件失败。
在这里插入图片描述
在这里插入图片描述
在audit.log里面能看到selinux权限拒绝。
在这里插入图片描述
可以看到当前的ftp的目录的selinux属性为public_content_t,是不具备写的功能的。
yum install setools-console –y
seinfo -t | grep public
在这里插入图片描述
可以看到除了public_content_t还有一个public_content_rw_t。
chcon –t public_content_rw_t /var/ftp/pub/ -R
在这里插入图片描述
getsebool -a | grep ftp //查看ftp的sebool值
在这里插入图片描述
能看到ftpd_anon_write --> off,匿名写功能是off的状态,需要把匿名写打开功能打开。
setsebool -P ftpd_anon_write on //-P为永久性生效,临时生效去掉-P即可。
setsebool -P ftpd_full_access on //kylin3.3用户名访问如果不能访问再加
在这里插入图片描述
再次上传文件能看到上传成功。
在这里插入图片描述
2、 开启防火墙
添加防火墙富规则
firewall-cmd --add-rich-rule=“rule family=“ipv4” source address=“192.168.31.0/24” service name=“ftp” accept” --permanent

firewall-cmd --add-rich-rule=“rule family=“ipv4” source address=“192.168.31.0/24” port port=“21” protocol=“tcp” accept” --permanent

firewall-cmd --add-rich-rule=“rule family=“ipv4” source address=“192.168.31.0/24” port port=“30000-40000” protocol=“tcp” accept” --permanent

firewall-cmd –-reload
在这里插入图片描述
四、 参数解释
anonymous_enable=YES //允许匿名用户登陆
local_enable=YES //允许本地用户登陆
anon_upload_enable=YES //允许匿名用户上传
anon_mkdir_write_enable=YES //允许匿名用户创建目录
dirmessage_enable=YES //开启目录提示功能
xferlog_enable=YES //开启上传下载日志
xferlog_std_format=YES
//传输日志文件将以标准 xferlog 的格式书写,默认为 /var/log/xferlog
xferlog_file=/var/log/xferlog //xferlog日志储存位置
dual_log_enable=YES
//生成两个相似的日志文件,默认在 /var/log/xferlog 和 /var/log/vsftpd.log 目录下。前者是 wu-ftpd 类型的传输日志,可以利用标准日志工具对其进行分析;后者是Vsftpd类型的日志。
vsftpd_log_file=/var/log/vsftpd.log //日志文件储存位置
connect_from_port_20=YES //连接数据端口
idle_session_timeout=60 //空闲超时时间
data_connection_timeout=120
//断点传输时间,120秒内再次连接会继续下载 默认300s
ftpd_banner=Welcome to blah FTP service. //欢迎信息
listen=NO //只侦听IPV4
userlist_enable=YES //是否开启user_list
userlist_deny=NO //启用user_list白名单
userlist_file=/etc/vsftpd/user_list //user_list储存位置
anon_root=/opt/alwaysdeleteftp //更改匿名用户登陆默认ftp工作目录
local_root=/opt/alwaysdeleteftp //更改用户名登陆默认ftp工作目录
chown_uploads=YES
//所有匿名上传的文件的所属用户将会被更改成chown_username
chown_username=stybxiao //匿名上传文件所属用户名
chroot_local_user=YES //将所有用户限制在ftp工作目录
chroot_list_enable=YES //是否启动限制用户的名单
chroot_list_file=/etc/vsftpd/chroot_list
//限制用户列表位置,需要自己创建,在列表中的用户被限制在ftp工作目录,不在列表内不限制。但是当它与chroot_local_user=YES一起使用时,就只能在这个列表中的用户能切换目录,其他的用户都只能在ftp的工作目录。

五、 常用命令
get //下载文件
put //上传文件
lcd //指定下载目录
mirror //下载文件夹
mirror –R //上传文件夹
rm //删除文件
rmdir //删除文件夹

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值