一、关闭防火墙
systemctl status firewalld.service #查看防火墙状态systemctl stop firewalld.service #停止防火墙服务systemctl disable firewalld.service #关闭防火墙开启自启动vi /etc/selinux/config #把文件中的SELINUX=enforcing 改为SELINUX=disabled
二、安装vsftpd并启动服务
1、安装vsftpd
yum install -y vsftpd
2、启动服务
systemctl start vsftpd.service 启动服务systemctl enable vsftpd.service 设置开机自动启动服务
三、编辑配置
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #是否开启匿名用户,匿名都不安全,不要开local_enable=YES#允许本机账号登录FTPwrite_enable=YES#允许账号都有写操作local_umask=022 #意思是指:文件目录权限:777-022=755,文件权限:666-022=644,这有点反人类了,并且没有人跟我说是减去的。注意理解!dirmessage_enable=YES#进入某个目录的时候,是否在客户端提示一下xferlog_enable=YES #日志记录connect_from_port_20=YES #开放port模式的20端口的连接xferlog_std_format=YES #日志成为std格式chroot_local_user=YES#限制用户只能在自己的目录活动chroot_list_file=/etc/vsftpd/chroot_listls_recurse_enable=NO#是否允许使用ls -R等命令listen=YES#监听ipv4端口,开了这个就说明vsftpd可以独立运行,不用依赖其他服务pam_service_name=vsftpd #pam模块的名称,放置在 /etc/pam.d/vsftpd ,认证用userlist_enable=YES #使用允许登录的名单userlist_deny=NO#限制允许登录的名单,前提是userlist_enable=YES,其实这里有点怪~!allow_writeable_chroot=YES#允许限制在自己的目录活动的用户 拥有写权限tcp_wrappers=YES#Tcp wrappers : Transmission Control Protocol (TCP) Wrappers 为由 inetd 生成的服务提供了增强的安全性。pasv_min_port=6301 #被动模式起始端口,0为随机分配pasv_max_port=6305 #被动模式结束端口,0为随机分配user_config_dir=/etc/vsftpd/userconfig #主目录配置,修改后到这个目录中在修改用户配置
纯净版配置文件(配置文件有空格无法启动ftp):
anonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESchroot_local_user=YESchroot_list_file=/etc/vsftpd/chroot_listls_recurse_enable=NOlisten=YESpam_service_name=vsftpduserlist_enable=YESuserlist_deny=NOallow_writeable_chroot=YEStcp_wrappers=YESpasv_min_port=6301pasv_max_port=6305user_config_dir=/etc/vsftpd/userconfig
修改完之后需要重启FTP服务刷新配置:
systemctl start vsftpd.service #重启FTP服务
建议:把默认21端口,最好和pasv端口改成连续的。
例如:FTP的默认监听端口为6000,pasv端口范围改为6001-6005 (5个就够了)
那么这样架设到公网的话,只需要在路由器里面端口映射一条就好了,一般的路由器端口映射的数量是有限制的。要不然你最少要设置两条。
四、新建用户并设置密码
1、新建用户:helloftp
我们如果直接使用useradd -d helloftp新建的用户是可以登录系统的。这样会给FTP服务器带来安全隐患。因此我们必须不能让FTP用户登录系统。但是如果把/etc/passwd中helloftp用户后面改成/sbin/nologin,FTP也就无法登录了。这好像是一个坑。所以我们一步一步来。
#为ftp用户统一创建一个不能登录系统的shell,这一行的命令只运行一次即可,后面新建用户就不需要执行了echo /usr/bin/nologin>>/etc/shells创建用户useradd -d /home/ftp_data/helloftp -m -s /usr/bin/nologin helloftp #创建并指定用户主目录和shell
把ftp用户的shell改为/usr/bin/nologin。注意这里的bin不是sbin。这里需要注意的是千万不要删除用户,删除时会同时删除用户主目录,主目录内的资料也会同时删除
2、设置用户helloftp密码
passwd helloftp
五、允许新建用户登录FTP
vi /etc/vsftpd/user_list
编辑/etc/vsftpd/user_list ,这个是允许登录ftp的名单。一行一个用户,不能把多个写到一行。
到了这一步,FTP其实就可以登录了。
但是有个非常大的缺点就是,我们没有给用户指定主目录,这样的话默认每个用户的主目录都在自己的家目录。也就是说每个用户的主目录都是在不同目录中,这样的状况会给我们后期数据备份带来不便。所以我们必须想办法把用户主目录集中管理,最好能放到一个目录里面。
六、自定义用户主目录
在这里我们准备把用户主目集中放到/home/data/ftp下集中管理。之前我们在/etc/vsftpd/vsftpd.conf配置文件中写了这么一行:user_config_dir=/etc/vsftpd/userconfig ,那么这一行的作用是什么呢?就是定义用户的主目录。userconfig默认是没有的,必须新建。然后我们可以把,给每个用户定义的主目录配置文件放到这个目录里面下。就可以实现自定义主目录。
1、新建主目录配置
mkdir /etc/vsftpd/userconfigvim /etc/vsftpd/userconfig/helloftp #新建主目录配置文件helloftp,配置文件名字必须要和用户名相同helloftp文件中写入下面一行保存:local_root=/home/ftp_data/helloftp
注意:配置文件名字必须要和用户名相同。
2、给用户新建主目录并授权
mkdir -p /home/ftp_data/helloftpchmod -R 777 /home/ftp_data/helloftp
七、防火墙配置
我们的监听端口是6000,被动模式端口范围是6001-6005
firewall-cmd --version #查看防火墙版本0.6.3firewall-cmd --zone=public --add-port=6000-6005/tcp --permanent #开启6000-6005 tcp端口successfirewall-cmd --reload #刷新,重新载入successfirewall-cmd --zone=public --query-port=6000-6005/tcp #检测端口是否开启yes
至此搭建成功。
八、腾讯云防火墙
如下
如果觉得《腾讯云服务器搭建ftp》对你有帮助,请点赞、收藏,并留下你的观点哦!