红联Linux门户
Linux帮助

centos7在NAT环境下搭建vsftp

发布时间:2015-10-23 10:37:47来源:linux网站作者:小卡车7号

今天收到一个需求,开放服务器的一个目录来上传文件.开始想做个chroot环境,但会产生很多文件(bin,etc等),便放弃了,最终选择用VSFTP.

网络拓扑如下:

centos7在NAT环境下搭建vsftp


1,安装vsftp,db4,db4-utils

如果没epel源,先添加下

wget  http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

rpm -Uvh epel-release-7-5.noarch.rpm

yum install vsftp db4 db4-utils -y

systemctl enable vsftpd


2.配置虚拟用户给vsftp
添加用户名密码,第一行写用户,第二行写密码
vi /etc/vsftpd/vuser_passwd.txt
 
生成虚拟用户认证的db文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
 
编辑认证文件/etc/pam.d/vsftpd,全部注释掉原来语句,再增加以下两句:
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
 
创建虚拟用户配置文件
mkdir /etc/vsftpd/vuser_conf/
vi /etc/vsftpd/vuser_conf/test  #文件名等于vuser_passwd.txt里面的账户名,否则下面设置无效
内容如下
local_root=/ftp/www  #虚拟用户根目录,根据实际情况修改
write_enable=YES
anon_umask=022 #掩码
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES


3.设置目录权限

确定selinux关闭

mkdir /ftp/www   #创建目录
chmod R 755 /ftp
chmod R 777 /ftp/www 


4.创建SSL证书
查看vsftp是否支持SSL,有libssl.so即可.
ldd `which vsftpd`|grep ssl

生成SSL证书:
openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem
chmod 400 vsftpd.pem
cp vsftpd.pem /etc/ssl/certs/


5.配置vsftp
配置文件主要内容如下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_list_enable=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

guest_enable=YES
guest_username=ftp
user_config_dir=/etc/vsftpd/vuser_conf
chroot_list_file=/etc/vsftpd/vuser_passwd.txt
allow_writeable_chroot=YES

listen_port=2121               #把默认21端口改为其他端口
pasv_enable=YES            #使用pasv模式
pasv_min_port=10000
pasv_max_port=10100
pasv_promiscuous=YES

ssl_enable=YES                #使用ssl加密
allow_anon_ssl=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
force_anon_logins_ssl=YES
force_anon_data_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/certs/vsftpd.pem

配置完成后,启动vsftp
systemctl start vsftpd


6.配置防火墙及NAT
在vsftp服务器上开放2121,10000:10100端口
vi /etc/sysconfig/iptables,添加如下规则
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2121 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10000:10100 -j ACCEPT

在linux网关服务器上做vsftp的NAT映射
nat链添加如下规则
-A PREROUTING -p tcp -d 10.10.10.10 --dport 2121 -j DNAT --to-destination 192.168.1.116
-A PREROUTING -p tcp -d 10.10.10.10 --dport 10000:10100 -j DNAT --to-destination 192.168.1.116
-A POSTROUTING -p tcp -m tcp -s 192.168.1.116 --sport 20 -j SNAT --to 10.10.10.10
-A POSTROUTING -p tcp -m tcp -s 192.168.1.116 --sport 2121 -j SNAT --to 10.10.10.10
-A POSTROUTING -p tcp -m tcp -s 192.168.1.116 --sport 10000:10100  -j SNAT --to 10.10.10.10

配置完成后重启下iptables


7.测试使用
使用ftp工具连接vsftp服务器,比如FileZilla
下载链接:http://ftp-idc.pconline.com.cn/d31e7654b5f340018866472a9a75e5a9/pub/download/201010/FileZilla_3.14.1_win32.zip


cenos 6.5安装VSFTPD服务器:http://www.linuxdiyf.com/linux/14678.html

搭建Linux vsFTPd服务器:http://www.linuxdiyf.com/linux/11352.html

CentOS 5.5编译安装vsftpd-2.3.4配置虚拟用户全攻略:http://www.linuxdiyf.com/linux/13089.html

CentOS 6.4下安装vsftpd:http://www.linuxdiyf.com/linux/11463.html

Linux下安装vsftpd详解 安全的ftp:http://www.linuxdiyf.com/linux/859.html