您的位置:首页 > 运维架构 > Linux

centos7 在NAT环境下搭建vsftp

2015-10-22 20:15 531 查看
今天收到一个需求,开放服务器的一个目录来上传文件.开始想做个chroot环境,但会产生很多文件(bin,etc等),便放弃了,最终选择用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


  
mkdir
 
/etc/vsftpd/vuser_conf/


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 服务器 NAT vsftpd