公司要求搭建VSFTPD服务器,一个用户只能上传,一个只能下载。粗略考虑了下,PROFTPD可能不行,就用VSFTPD,启用虚拟用户。

服务器是在OPENSTACK上面,也就是经过了NAT,子网段是192.168.201.X,外网是192.168.21.X.配置完成后。在服务器上配置防火墙,客户机上关掉防火墙,登录成功。主动模式(PORT)没有问题,被动模式(PASSIVE)出错,在输入DIR后,提示“没有路由”。已经在AIPTABLES-CONFIG里面添加了NAT模块,还是不行。最后求助同事,如果服务器在NAT后面,要在主配置文件VSFTPD.CONF里面添加一句"PASV_ADDRESS=192.168.21.X",即公网IP.



#安装

yum install vsftpd -y  


#添加系统用户

useradd -m -d /var/ftp/ftpup -s /sbin/nologin ftpup

useraad -m -d /var/ftp/ftpdown -s /sbin/nologin ftpdown

chown -R  ftpup:ftpup   /var/ftp/ftpup

chown -R ftpdown:ftpdown /var/ftp/ftpdown



#配置虚拟用户

vim /etc/vsftpd/vuser.txt

upload

123456

download

123456


db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db

#添加认证文件

vim /etc/pam.d/vsftpd

#把原有的内容全部注释掉,添加以下内容

auth required /lib64/security/pam_userdb.so  db=/etc/vsftpd/vuser   #因为是64位系统,上面带个64,32位没有。


account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser


#配置VSFTPD主配置文件 

mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

vim /etc/vsftpd/vsftpd.conf  #全局设置 

anonymous_enable=no #关闭虚拟用户

local_enable=yes #开启本地用户

#chroot_list_enable=no #默认为no

#chroot_local_user=no #默认为no

chroot_local_user=yes #所有用户都不能更改目录

pam_service_name=vsftpd #模块

guest_username=ftpdown   #虚拟用户对应系统用户

guest_username=ftpup #虚拟用户对应系统用户

virtual_user_local_privs=yes #虚拟用户使用与本地用户相同的权限

user_config_dir=/etc/vsftpd/vusrconf #虚拟用户配置文件夹

local_umask=022 #本地用户新增档案时的umask 值。默认077

pasv_enable=yes #被动模式可用

pasv_min_port=60000 #被动模式最小端口

pasv_max_port=61000 #被动模式最大端口

accept_timeout=60

connect_timeout=60

data_connection_timeout=120

idle_session_timeout=300

tcp_wrappers=yes #控制主机访问可用

xferlog_file=/var/log/vsftpd.log

log_ftp_protocol=yes #ftp请求和响应被记录 

max_clients=10

max_per_ip=10

local_max_rate=5000

pasv_address=x.x.x.x    #重要:nat后边的ftp server要加外网ip


#建立虚拟用户配置文件

mkdir /etc/vsftpd/vuserconf

cd /etc/vsftpd

touch upload download


vim upload

write_enable=yes

download_enable=no


vim download

write_enable=no

download_enable=yes



#iptables 防火墙配置

iptables -I INPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -I INPUT 1 -p tcp --dport 60000:61000 -j ACCEPT

iptables -I INPUT 1 -p tcp --dport 21 -j ACCEPT

vim /etc/sysconfig/iptables-config

IPTABLES_MODULES="ip_conntrack_ftp"

IPTABLES_MODULES="ip_nat_ftp"