在Linux实例上安装并配置vsftpd 手动搭建FTP站点(CentOS 7)
如何在Ubuntu系统中开启sftp功能-阿里云帮助中心_(ECS)-阿里云帮助中心 https://help.aliyun.com/zh/ecs/enable-sftp-in-ubuntu
本文创建的用户组和用户以实际环境为准。
- Ubuntu由于没有安装openssl服务,因此需要执行如下命令进行安装。
sudo apt-get install openssh-server
- 执行如下命令,创建SFTP用户组,方便进行管理测试。
提示:也可以不进行创建,直接使用root用户。
sudo addgroup sftp-test
- 依次执行如下命令,创建SFTP用户,并配置相应权限。
sudo adduser alice
删除 sudo deluser alice
sudo usermod -G sftp-test -s /bin/false alice - 依次执行如下命令,创建SSH用户组,并把管理员加入到该组。
sudo addgroup ssh-users
sudo usermod -a -G ssh-users admin注:-a参数的意思是不从其他用户组用移除用户。
- 执行如下命令,编辑SSH配置文件。
sudo nano /etc/ssh/sshd_config
sudo vim /etc/ssh/sshd_config
- 在sshd_config文件的中,添加如下内容。
AllowGroups ssh-users sftp-users
Match Group sftp-users
ChrootDirectory /home/sftp_root
AllowTcpForwarding no
X11Forwarding no
ForceCommand internal-sftp注:
- AllowGroups ssh-users sftp-users:只允许ssh-uers及sftp-users通过SSH访问系统。
- Match Group sftp-users:针对sftp-users用户,额外增加一些设置。
- ChrootDirectory /home/sftp_root:将
/home/sftp_root
设置为该组用户的系统根目录,因此它们将不能访问该目录之外的其他系统文件。 - AllowTcpForwarding no和X11Forwarding no:禁止TCP Forwarding和X11 Forwarding。
- ForceCommand internal-sftp:强制该组用户仅仅使用SFTP。
- 重启系统以便使新配置生效。
提示:执行重启等风险操作前,需要保证业务的正常进行并做好数据备份。
实战:
1、
cat /etc/vsftpd.conf
# Example config file /etc/vsftpd.conf # # The default compiled in settings are fairly paranoid. This sample file # loosens things up a bit, to make the ftp daemon more usable. # Please see vsftpd.conf.5 for all compiled in defaults. # # READ THIS: This example file is NOT an exhaustive list of vsftpd options. # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's # capabilities. # # # Run standalone? vsftpd can run either from an inetd or as a standalone # daemon started from an initscript. listen=NO # # This directive enables listening on IPv6 sockets. By default, listening # on the IPv6 "any" address (::) will accept connections from both IPv6 # and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6 # sockets. If you want that (perhaps because you want to listen on specific # addresses) then you must run two copies of vsftpd with two configuration # files. listen_ipv6=YES # # Allow anonymous FTP? (Disabled by default). anonymous_enable=NO # # Uncomment this to allow local users to log in. local_enable=YES # # Uncomment this to enable any form of FTP write command. write_enable=YES # # Default umask for local users is 077. You may wish to change this to 022, # if your users expect that (022 is used by most other ftpd's) #local_umask=022 # # Uncomment this to allow the anonymous FTP user to upload files. This only # has an effect if the above global write enable is activated. Also, you will # obviously need to create a directory writable by the FTP user. #anon_upload_enable=YES # # Uncomment this if you want the anonymous FTP user to be able to create # new directories. anon_mkdir_write_enable=YES # # Activate directory messages - messages given to remote users when they # go into a certain directory. dirmessage_enable=YES # # If enabled, vsftpd will display directory listings with the time # in your local time zone. The default is to display GMT. The # times returned by the MDTM FTP command are also affected by this # option. use_localtime=YES # # Activate logging of uploads/downloads. xferlog_enable=YES # # Make sure PORT transfer connections originate from port 20 (ftp-data). connect_from_port_20=YES # # If you want, you can arrange for uploaded anonymous files to be owned by # a different user. Note! Using "root" for uploaded files is not # recommended! #chown_uploads=YES #chown_username=whoever # # You may override where the log file goes if you like. The default is shown # below. #xferlog_file=/var/log/vsftpd.log # # If you want, you can have your log file in standard ftpd xferlog format. # Note that the default log file location is /var/log/xferlog in this case. #xferlog_std_format=YES # # You may change the default value for timing out an idle session. #idle_session_timeout=600 # # You may change the default value for timing out a data connection. #data_connection_timeout=120 # # It is recommended that you define on your system a unique user which the # ftp server can use as a totally isolated and unprivileged user. #nopriv_user=ftpsecure # # Enable this and the server will recognise asynchronous ABOR requests. Not # recommended for security (the code is non-trivial). Not enabling it, # however, may confuse older FTP clients. #async_abor_enable=YES # # By default the server will pretend to allow ASCII mode but in fact ignore # the request. Turn on the below options to have the server actually do ASCII # mangling on files when in ASCII mode. # Beware that on some FTP servers, ASCII support allows a denial of service # attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd # predicted this attack and has always been safe, reporting the size of the # raw file. # ASCII mangling is a horrible feature of the protocol. #ascii_upload_enable=YES #ascii_download_enable=YES # # You may fully customise the login banner string: #ftpd_banner=Welcome to blah FTP service. # # You may specify a file of disallowed anonymous e-mail addresses. Apparently # useful for combatting certain DoS attacks. #deny_email_enable=YES # (default follows) #banned_email_file=/etc/vsftpd.banned_emails # # You may restrict local users to their home directories. See the FAQ for # the possible risks in this before using chroot_local_user or # chroot_list_enable below. chroot_local_user=NO # # You may specify an explicit list of local users to chroot() to their home # directory. If chroot_local_user is YES, then this list becomes a list of # users to NOT chroot(). # (Warning! chroot'ing can be very dangerous. If using chroot, make sure that # the user does not have write access to the top level directory within the # chroot) #chroot_local_user=YES chroot_list_enable=YES # (default follows) chroot_list_file=/etc/vsftpd.chroot_list #开启被动模式。 pasv_enable=YES allow_writeable_chroot=YES # # You may activate the "-R" option to the builtin ls. This is disabled by # default to avoid remote users being able to cause excessive I/O on large # sites. However, some broken FTP clients such as "ncftp" and "mirror" assume # the presence of the "-R" option, so there is a strong case for enabling it. #ls_recurse_enable=YES # # Customization # Some of vsftpd's settings don't fit the filesystem layout by # default. # # This option should be the name of a directory which is empty. Also, the # directory should not be writable by the ftp user. This directory is used # as a secure chroot() jail at times vsftpd does not require filesystem # access. secure_chroot_dir=/var/run/vsftpd/empty # # This string is the name of the PAM service vsftpd will use. pam_service_name=vsftpd # # This option specifies the location of the RSA certificate to use for SSL # encrypted connections. rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ssl_enable=NO # # Uncomment this to indicate that vsftpd use a utf8 filesystem. #utf8_filesystem=YES
手动搭建FTP站点(CentOS 7) https://help.aliyun.com/document_detail/92048.html
vsftpd(very secure FTP daemon)是Linux下的一款小巧轻快、安全易用的FTP服务器软件。本教程介绍如何在Linux实例上安装并配置vsftpd。
前提条件
已创建ECS实例并为实例分配了公网IP地址。若尚未创建,请参见创建方式导航。
背景信息
FTP(File Transfer Protocol)是一种文件传输协议,基于客户端/服务器架构,支持以下两种工作模式:
- 主动模式:客户端向FTP服务器发送端口信息,由服务器主动连接该端口。
- 被动模式:FTP服务器开启并发送端口信息给客户端,由客户端连接该端口,服务器被动接受连接。
FTP支持以下三种认证模式:
- 匿名用户模式:任何人无需密码验证就可以直接登录到FTP服务器。这种模式最不安全,一般只用来保存不重要的公开文件,不推荐在生产环境中使用。
- 本地用户模式:通过Linux系统本地账号进行验证的模式,相较于匿名用户模式更安全。
- 虚拟用户模式:FTP服务器的专有用户。虚拟用户只能访问Linux系统为其提供的FTP服务,而不能访问Linux系统的其它资源,进一步增强了FTP服务器的安全性。
本文主要介绍被动模式下,使用本地用户访问FTP服务器的配置方法。关于匿名模式的配置方式、第三方FTP客户端工具使用方式等介绍,请参见常见问题。
- 实例规格:ecs.c6.large
- 操作系统:CentOS 7.2 64位
- vsftpd:3.0.2
当您使用不同软件版本时,可能需要根据实际情况调整命令和参数配置。
步骤一:安装vsftpd
步骤二:配置vsftpd
为保证数据安全,本文主要介绍被动模式下,使用本地用户访问FTP服务器的配置方法。
步骤三:设置安全组
规则方向 | 授权策略 | 协议类型 | 端口范围 | 授权对象 |
---|---|---|---|---|
入方向 | 允许 | 自定义TCP | 21/21 | 所有要访问FTP服务器的客户端公网IP地址,多个地址之间用逗号隔开。
允许所有客户端访问时,授权对象为0.0.0.0/0。 |
入方向 | 允许 | 自定义TCP | pasv_min_port/pasv_max_port。例如:50000/50010 | 所有要访问FTP服务器的客户端公网IP地址,多个地址之间用逗号隔开。
允许所有客户端访问时,授权对象为0.0.0.0/0。 |
步骤四:客户端测试
FTP客户端、Windows命令行工具或浏览器均可用来测试FTP服务器。本文以Windows Server 2012 R2 64位系统的本地主机作为FTP客户端,介绍FTP服务器的访问步骤。
vsftp配置文件及参数说明
- /etc/vsftpd/vsftpd.conf是vsftpd的核心配置文件。
- /etc/vsftpd/ftpusers是黑名单文件,此文件中的用户不允许访问FTP服务器。
- /etc/vsftpd/user_list是白名单文件,此文件中的用户允许访问FTP服务器。
- 用户登录控制参数说明如下表所示。
参数 说明 anonymous_enable=YES 接受匿名用户 no_anon_password=YES 匿名用户login时不询问口令 anon_root=(none) 匿名用户主目录 local_enable=YES 接受本地用户 local_root=(none) 本地用户主目录 - 用户权限控制参数说明如下表所示。
参数 说明 write_enable=YES 可以上传文件(全局控制) local_umask=022 本地用户上传的文件权限 file_open_mode=0666 上传文件的权限配合umask使用 anon_upload_enable=NO 匿名用户可以上传文件 anon_mkdir_write_enable=NO 匿名用户可以建目录 anon_other_write_enable=NO 匿名用户修改删除 chown_username=lightwiter 匿名上传文件所属用户名
常见问题
- 问题一:本地主机为Windows系统,为什么我无法下载FTP服务器中的文件?
您需要根据以下操作步骤,开启IE浏览器的下载权限。
- 在本地主机中打开IE浏览器。
- 在浏览器的右上角单击图标,然后单击Internet 选项。
- 在Internet 选项对话框的顶部,单击安全页签。
- 在选择一个区域以查看或更改安全设置区域,单击Internet,然后在该区域的安全级别区域,单击自定义级别。
- 选择
- 单击应用,然后单击确定。
- 问题二:在Windows系统中,使用命令行工具、浏览器等方式连接FTP服务器报错如何处理?
您可以根据FTP的报错信息手动排查问题。当您的报错难以排查解决时,建议您使用第三方FTP客户端连接工具。例如:FileZilla。下载地址为FileZilla官网。本示例介绍使用FileZilla连接匿名模式的FTP服务器。
- 在Linux系统的FTP服务器中,安装vsftpd。
具体操作,请参见步骤一:安装vsftpd。如果您已安装vsftpd,请跳过该步骤。
- 配置vsftpd为匿名模式。
- 运行以下命令,修改配置文件/etc/vsftpd/vsftpd.conf。
如果您在安装vsftpd时,使用的是
apt install vsftpd
安装命令,则配置文件路径为/etc/vsftpd.conf。vim /etc/vsftpd/vsftpd.conf
- 按i进入编辑模式。
- 将匿名上传权限的注释去掉,修改为
anon_upload_enable=YES
。 - 按Esc退出编辑模式,然后输入:wq并回车以保存并关闭文件。
修改后的配置文件,如下图所示。
- 运行以下命令更改/var/ftp/pub目录的权限,为FTP用户添加写权限。
/var/ftp/pub为FTP服务默认的文件目录。
chmod o+w /var/ftp/pub/
- 运行以下命令重新加载配置文件。
systemctl restart vsftpd.service
- 运行以下命令,修改配置文件/etc/vsftpd/vsftpd.conf。
- 下载并安装FileZilla。
- 通过FileZilla连接匿名模式的FTP服务器。
- 打开FileZilla客户端。
- 在顶部菜单栏,选择
- 在站点管理器对话框的左下角,单击新站点。
- 输入新站点的名称,并完成站点配置。
具体的配置项说明如下:
- 新站点名称:您自定义的站点名称。例如
test-01
。 - 协议:FTP-文件传输协议。
- 主机:FTP服务器公网IP地址。本文中为Linux实例的公网IP地址,例如
121.43.XX.XX
。 - 端口:21。
- 登录类型:匿名。
本示例中使用FTP客户端连接匿名模式的FTP服务器。如果您需要使用FTP用户密码连接FTP服务器,则登录类型需要设置为正常,并需要配置用户和密码信息。
- 新站点名称:您自定义的站点名称。例如
- 单击连接。
连接成功后,您可以对文件进行上传、下载和删除等操作。FileZilla工具界面如下图所示。图中各区域的信息说明如下表所示。
序号 说明 ① 显示命令、FTP连接状态和任务执行结果。 ② 本地区域,显示本地主机的目录信息。 ③ 远程区域,显示FTP服务器的目录信息。匿名模式下,默认目录为/pub。 ④ 记录区域,可查看FTP任务的队列信息和日志信息。
- 在Linux系统的FTP服务器中,安装vsftpd。