FTP协议
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。
默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定
服务器端设置
安装vsftpd
sudo yum install vsftpd
备份配置文件
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
更改配置文件 /etc/vsftpd/vsftpd.conf
仅允许本地用户访问FTP服务器
anonymous_enable=NO //禁止匿名访问
local_enable=YES
允许更改文件系统
write_enable=YES
将本地用户锁定在其主目录中
chroot_local_user=YES
chroot
下允许上传
当启用chroot
后,若用户访问的目录是可写的,vsftpd
将拒绝上传文件
user_sub_token=$USER
local_root=/home/$USER/ftp
被动FTP连接
vsftpd可以使用任何端口进行被动FTP连接,我们指定一个端口范围,然后在防火墙中打开该范围
pasv_enable
默认值为YES
pasv_min_port=30000
pasv_max_port=31000
限制用户登录
仅允许/etc/vsftpd/user_list
中的用户登录FTP服务器
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
使用SSL/TLS保护传输
以下命令将创建一个有效期为10年的2048位私钥和自签名证书。私钥和证书都将保存在同一文件中
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
生成该文件时的配置选项皆可回车跳过
修改配置文件
sudo vi /etc/vsftpd/vsftpd.conf
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES
不使用加密传输时,用Wireshark进行抓包
可以看到明文的账号和密码
使用加密传输时,用Wireshark进行抓包
已经不能看到明文的信息
更多的配置请查看vsftpd官方文档
防火墙设置
查看防火墙状态
firewall-cmd --state
开启防火墙
systemctl start firewalld.service
打开防火墙端口
sudo firewall-cmd --permanent --add-port=20-21/tcp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
重新载入防火墙配置
firewall-cmd --reload
*服务器商的防火墙设置
如果服务器商配置处也有防火墙设置,也需要打开相关端口 以下是阿里云的防火墙设置
设置FTP用户
创建一个FTP用户
sudo adduser ftpuser
设置用户密码
sudo passwd ftpuser
将用户添加到允许访问FTP的列表中
echo "ftpuser" | sudo tee -a /etc/vsftpd/user_list
配置相关权限
sudo mkdir -p /home/ftpuser/ftp/upload
sudo chmod 550 /home/ftpuser/ftp
sudo chmod 750 /home/ftpuser/ftp/upload
sudo chown -R ftpuser: /home/ftpuser/ftp
禁止shell访问
创建新用户时,默认该用户具有对服务器SSH的访问权限。通过以下命令禁止特定用户的SSH访问权限
echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly
echo "/bin/ftponly" | sudo tee -a /etc/shells
usermod ftpuser -s /bin/ftponly
客户端配置
由于Windows命令行不支持被动FTP连接,以下使用WinSCP
获取SSL证书
新建会话
使用root账户连接到服务器
直接拖动文件即可复制传输文件到本地
连接FTP服务器
新建会话
配置验证参数
选择上面下载下来的SSL证书文件
连接
出现如下提示框,点击“是”
连接成功
由于上面的权限设置,ftpuser
只能访问其用户主目录,并且只能上传文件到upload
文件夹
参考文献
今天的文章CentOS 7上配置FTP服务器分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/13734.html