1:安装vsftpd
yum install vsftpd -y
2:启动vsftpd
service vsftpd start
加入开机启动
chkconfig vsftpd on
启动后可以看到系统监听21端口
netstat -nltp | grep 21
3:vsftpd的文件说明
vsftpd.conf: 主要配置文件
ftpusers:配置禁止访问ftp服务器的用户列表
user_list:配置用户访问控制
4:配置阻止匿名用户访问和切换根目录
vi /etc/vsftpd/vsftp.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
service vsftpd restart
9:配置防火墙
在防火墙的配置文件中开启21端口,并重启防火墙
上述步骤即可完成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端口开启,
-A INPUT -m state --state NEW -m tcp -p tcp --dport 30000:31000 -j ACCEPT
备注:过程虽然不难,但遇到的坑比较多,按照很多网上的文章进行配置,最后都是各种错误,刚开始是无法连接,发现没有给用户设置主目录,
当找到问题后修改,可以连接上但是发现权限不够(忘记给目录赋值权限),而且竟然发现创建的用户可以直接通过ssh连接到服务器,这样子就
失去了我想要的,安全性也大大降低了,总之问题很多,最头疼的还是提示已经登陆但是无法将目录展示出来,经过自己分析日志发现是模式不对,
希望大家可以借鉴参考,尽量少入点坑