centos7 搭建ftp服务器 centos7 ftp服务器怎么搭建_服务器


Server : CnetOS 7
Native : MacOS Mojave 10.14.6

vsftpd

步骤1:安装FTP服务器

1.安装vsftpd服务器很简单,只需在终端中运行以下命令即可。


# yum install vsftpd


2.安装完成后,该服务将首先被禁用,因此我们需要暂时手动启动它,并使它也可以从下一次系统启动时:


# systemctl start vsftpd
# systemctl enable vsftpd


3.接下来,为了允许从外部系统访问FTP服务,我们必须打开端口21,FTP守护进程正在监听以下端口:


# firewall-cmd --zone=public --permanent --add-port=21/tcp
# firewall-cmd --zone=public --permanent --add-service=ftp
# firewall-cmd --reload


步骤2:配置FTP服务器(可选)

4.现在,我们将执行一些配置来设置和保护FTP服务器,让我们首先备份原始配置文件/etc/vsftpd/vsftpd.conf


# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig


接下来,打开上面的配置文件,并使用以下相应值设置以下选项:


anonymous_enable=NO             # 禁用匿名登录
local_enable=YES		# 允许本地登录
write_enable=YES		# 启用更改文件系统的FTP命令
local_umask=022		        # 为本地用户创建文件的umask值
dirmessage_enable=YES	        # 允许用户首次进入时显示消息新目录
xferlog_enable=YES		# 将维护一个日志文件,详细说明上传和下载
connect_from_port_20=YES        # 使用服务器计算机上的端口20(ftp-data)进行PORT样式连接
xferlog_std_format=YES          # 保持标准日志文件格式
listen=NO   			# 防止vsftpd在独立模式下运行
listen_ipv6=YES		        # vsftpd的监听TPv6,而不是TPv4
pam_service_name=vsftpd         # PAM服务的姓名将使用
userlist_enable=YES  	        # 使vsftpd加载一个用户名列表
tcp_wrappers=YES  		# 开启TCP封装
idle_session_timeout=600        # 无操作超时时间,默认时间单位秒


5.现在将FTP配置为允许/拒绝基于用户列表文件的FTP访问/etc/vsftpd.userlist

默认情况下,如果userlist_enable = YES,userlist_deny选项设置为YES。则拒绝userlist_file=/etc/vsftpd.userlist中列出的用户

但是,userlist_deny = NO会更改设置,这意味着仅允许在userlist_file = / etc / vsftpd.userlist中明确列出的用户登录


userlist_enable=YES                   # vsftpd将从userlist_file给定的文件名中加载用户名列表
userlist_file=/etc/vsftpd.userlist    # 存储用户名
userlist_deny=NO


这还不是全部,当用户登录到FTP服务器时,他们被放置在chroot的控制中,这是本地根目录,它将仅作为FTP会话的主目录

接下来,我们将讨论两种可能的方案,如何将FTP用户chroot到FTP用户的Home目录(本地根目录),如下所述

6.现在添加以下两个选项,以将FTP用户限制在其主目录中


chroot_local_user=YES
allow_writeable_chroot=YES


chroot_local_user = YES表示默认登录后,本地用户将被置于chroot监狱中,即其主目录中。

而且默认情况下,出于安全原因,vsftpd不允许chroot监狱目录可写,但是,我们可以使用allow_writeable_chroot = YES选项覆盖此设置

保存文件并关闭它。

使用SELinux保护FTP服务器(可选)

7.现在,让我们在下面设置SELinux布尔值,以允许FTP读取用户主目录中的文件。请注意,这最初是使用以下命令完成的:


# setsebool -P ftp_home_dir on


但是,ftp_home_dir默认情况下已禁用此伪指令,如以下错误报告中所述:https://bugzilla.redhat.com/show_bug.cgi?id=1097775

现在,我们将使用semanage命令设置SELinux规则,以允许FTP读取/写入用户的主目录。


# semanage boolean -m ftpd_full_access --on


在这一点上,我们必须重新启动vsftpd才能影响到目前为止我们所做的所有更改:


# systemctl restart vsftpd


步骤4:测试FTP服务器(可选)

8.现在,我们将通过使用useradd命令创建一个FTP用户来测试FTP服务器


# useradd -s /bin/bash ravi
# passwd ravi


之后,我们必须使用 echo命令将用户ravi添加到文件/etc/vsftpd.userlist中,如下所示:


#echo "ravi" | tee -a /etc/vsftpd.userlist
#cat /etc/vsftpd.userlist


9.现在是时候测试上面的设置是否正常工作了,这里需要用到FTP客户端如果未安装请执行yum install ftp。让我们从测试匿名登录开始,我们可以从下面的屏幕快照中看到不允许匿名登录:


# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : anonymous
530 Permission denied.
Login failed.
ftp>


10.还让我们测试一下是否授予未在文件/etc/vsftpd.userlist中列出的用户的登录权限,下面的屏幕截图不是这种情况:


# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : aaronkilik
530 Permission denied.
Login failed.
ftp>


11.现在进行最后检查,是否在登录后将/etc/vsftpd.userlist文件中列出的用户实际放置在其主目录中:


# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls


警告:使用allow_writeable_chroot=YES具有一定的安全意义,尤其是在用户具有上传权限或Shell访问权限的情况下。

仅当您完全知道自己在做什么时才激活此选项。重要的是要注意,这些安全隐患不是特定于vsftpd的,它们适用于所有FTP守护程序,这些守护程序还可以将本地用户置于chroot监狱中。

因此,在下一节中,我们将探讨一种更安全的方式来设置另一个不可写的本地根目录。

步骤5:配置不同的FTP用户主目录(可选)

12.再次打开vsftpd配置文件,并首先注释以下不安全选项:


# allow_writeable_chroot=YES


然后为用户创建备用本地根目录(ravi,您的可能不同),并删除对该目录所有用户的写许可权:


# mkdir /home/ravi/ftp
# chown nobody:nobody /home/ravi/ftp
# chmod a-w /home/ravi/ftp


13.接下来,在本地根目录下创建一个目录,用户将在其中存储他/她的文件:


# mkdir /home/ravi/ftp/files
# chown ravi:ravi  /home/ravi/ftp/files
# chmod 0700 /home/ravi/ftp/files/


然后使用以下值在vsftpd配置文件中添加/修改以下选项:


user_sub_token=$USER         # inserts the username in the local root directory 
local_root=/home/$USER/ftp   # defines any users local root directory


保存文件并关闭它。再次让我们使用新设置重新启动服务:


# systemctl restart vsftpd


14.现在再次进行最终测试,看看用户本地根目录是我们在其主目录中创建的FTP目录。


# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls


步骤6:配置客户端连接FileZilla


centos7 搭建ftp服务器 centos7 ftp服务器怎么搭建_linux服务器搭建_02


总结:到这里完成了FTP安装与部署,并且可以上传下载文件

修改实名用户默认根目录


/etc/vsftpd/vsftpd.conf
local_root=/media/ftp/pub  
chroot_local_user=YES 
systemctl restart vsftpd


图书

How to Install, Configure and Secure FTP Server in CentOS 7 - [Comprehensive Guide]www.tecmint.com


centos7 搭建ftp服务器 centos7 ftp服务器怎么搭建_主目录_03