Centos7.4 搭建FTP服务器以及遇到的坑

1:安装vsftpd

yum install vsftpd -y


2:启动vsftpd

systemctl start vsftpd

加入开机启动

systemctl enable vsftpd


 启动后可以看到系统监听21端口

netstat -nltp | grep 21


3:vsftpd的文件说明

vsftpd.conf: 主要配置文件

ftpusers:配置禁止访问ftp服务器的用户列表

user_list:配置用户访问控制

4:配置阻止匿名用户访问和切换根目录

vi /etc/vsftpd/vsftpd.conf


找到以下两处并按下面的样子修改

# 禁用匿名用户
anonymous_enable=NO
# 禁止切换根目录
chroot_local_user=YES

#开启以下配置

chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list     #如果没有此文件则创建此文件,不需要添加内容


文件末尾添加

allow_writeable_chroot=YES 

不添加此项,连接ftp服务器的时候会报500 OOR。。。。

5:创建ftp用户

useradd ftpuser


 为用户设置密码

echo "ftpuser123" | passwd ftpuser --stdin


6:限制上步创建的用户只能通过ftp访问

usermod -s /sbin/nologin ftpuser


7:为用户分配主目录

用以下命令创建,但是该目录不能上传文件

mkdir -p /home/ftp/pub 


创建欢迎文件

echo "Welcome to use FTP service." > /home/ftp/welcome.txt


设置访问权限

chmod a-w /home/ftp && chmod 777 -R /home/ftp/pub


设置为用户主目录

usermod -d /home/ftp ftpuser


8:保存后重启vsftpd

systemctl restart vsftpd


9:配置防火墙

在防火墙的配置文件中开启21端口,并重启防火墙

firewall-cmd --add-port=21/tcp --permanent


上述步骤即可完成vsftpd搭建,但是客户端只能通过主动模式访问vsftpd,例如使用filezilla需要将传输模式的默认模式改为主动模式才能访问ftp服务器,如果发现可以正常登陆但是无法将目录列出来,就是这个原因.如果需要直接可以访问的话,需要将ftp服务器开启被动模式

1:修改配置文件

vi /etc/vsftpd/vsftpd.conf

 
2:在末尾添加

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000


3:重启vsftpd并将上述的30000端口至31000端口开启,

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 30000:31000 -j ACCEPT

 
  备注:过程虽然不难,但遇到的坑比较多,按照很多网上的文章进行配置,最后都是各种错误,刚开始是无法连接,发现没有给用户设置主目录,

当找到问题后修改,可以连接上但是发现权限不够(忘记给目录赋值权限),而且竟然发现创建的用户可以直接通过ssh连接到服务器,这样子就

失去了我想要的,安全性也大大降低了,总之问题很多,最头疼的还是提示已经登陆但是无法将目录展示出来,经过自己分析日志发现是模式不对,

希望大家可以借鉴参考,尽量少入点坑
---------------------
作者:bpandaw
来源:CSDN
原文:https://blog.csdn.net/bpandaw/article/details/78061964
版权声明:本文为博主原创文章,转载请附上博文链接!