公司要求搭建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"