CentOS 7上配置FTP服务器

CentOS 7上配置FTP服务器FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。 默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制…

FTP协议

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。

默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定

服务器端设置

安装vsftpd

sudo yum install vsftpd

CentOS 7上配置FTP服务器

备份配置文件

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进行抓包

可以看到明文的账号和密码

CentOS 7上配置FTP服务器

使用加密传输时,用Wireshark进行抓包

已经不能看到明文的信息

CentOS 7上配置FTP服务器

更多的配置请查看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

CentOS 7上配置FTP服务器

*服务器商的防火墙设置

如果服务器商配置处也有防火墙设置,也需要打开相关端口 以下是阿里云的防火墙设置

CentOS 7上配置FTP服务器

设置FTP用户

创建一个FTP用户

sudo adduser ftpuser

设置用户密码

sudo passwd ftpuser

CentOS 7上配置FTP服务器

将用户添加到允许访问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

CentOS 7上配置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

CentOS 7上配置FTP服务器

客户端配置

由于Windows命令行不支持被动FTP连接,以下使用WinSCP

获取SSL证书

新建会话

CentOS 7上配置FTP服务器

使用root账户连接到服务器

CentOS 7上配置FTP服务器

直接拖动文件即可复制传输文件到本地

连接FTP服务器

新建会话

CentOS 7上配置FTP服务器

配置验证参数

选择上面下载下来的SSL证书文件

CentOS 7上配置FTP服务器

连接

出现如下提示框,点击“是”

CentOS 7上配置FTP服务器

连接成功

CentOS 7上配置FTP服务器

由于上面的权限设置,ftpuser只能访问其用户主目录,并且只能上传文件到upload文件夹

参考文献

www.myfreax.com/how-to-setu…

www.cnblogs.com/chencidi/p/…

blog.nowcoder.net/n/e0b8d3e39…

baike.baidu.com/item/FTP%E5…

今天的文章CentOS 7上配置FTP服务器分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/13734.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注