第一步:准备安装环境:
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。
1、关闭firewall:
systemctl stopfirewalld.service #停止firewall
systemctl disablefirewalld.service #禁止firewall开机启动
2、安装iptables防火墙
yum installiptables-services #安装
vi/etc/sysconfig/iptables #编辑防火墙配置文件,添加下面红色部分进入iptables,说明:21端口是ftp服务端口;30000到31000是Vsftpd被动模式需要的端口,可自定义一段大于1024的tcp端口
-A INPUT -p tcp -mmultiport --dport 20,21 -m state --stateNEW -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp--dport 21 -j ACCEPT
-A INPUT -p tcp --dport 30000:31000 -j ACCEPT
:wq! #保存退出
systemctl restartiptables.service #最后重启防火墙使配置生效
systemctl enableiptables.service #设置防火墙开机启动
ftp通信需要开启被动端口,防火墙规则开放,要不加载ftp目录数据失败
关闭selinux
第二步:安装
yum install -y vsftpd
yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI
systemctl start vsftpd.service
systemctl enable vsftpd.service
安装完成以后,配置虚拟目录坑比较多
首先是配置文件
#端口可以自己定义
#listen_port=10021
#不允许匿名连接
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
#开启访问日志
xferlog_file=/var/log/xferlog
dual_log_enable=YES
#开启连接日志
vsftpd_log_file=/var/log/vsftpd.log
connect_from_port_20=YES
#不允许切换到其他目录
allow_writeable_chroot=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
max_clients=20
max_per_ip=2
#限制连接速率4M
local_max_rate=409600
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
#开启被动连接模式
pasv_enable=YES
#被动连接端口
pasv_min_port=65530
pasv_max_port=65535
#开启虚拟用户
pasv_promiscuous=YES
pam_service_name=vsftpd.su
guest_enable=YES
guest_username=ftp
user_config_dir=/etc/vsftpd/vuser_conf
定义用户密码文件:
root@test1 vsftpd]# cat vuser_passwd.txt
test 用户
123456 密码
haha
123
daoyan
daoyan123
生成pam验证的db文件
db_load -T -t hash -f/etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
以上配置好 配置pam验证这里我遇到了坑,虚拟用户验证不过去
[root@test1 vsftpd]# cat vuser_conf/test
local_root=/data/ftp
write_enable=YES
anon_umask=022