centos7 在NAT环境下搭建vsftp

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

网络拓扑如下:

centos7 在NAT环境下搭建vsftp_第1张图片

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

8.参考

  http://www.pythontab.com/html/2014/linuxkaiyuan_0722/832.html
  http://www.myhack58.com/Article/sort099/sort0101/2013/37644.htm
  http://bbs.chinaunix.net/thread-1448316-1-1.html

你可能感兴趣的:(centos,服务器,vsftpd,NAT)