FTP服务器vsftpd及net2ftp部署

vsftpd简介

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。 vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。 在开源操作系统中常用的FTPD套件主要还有ProFTPD、PureFTPd和wuftpd等

  • 工作模式

    FTP有2种工作模式: 主动模式和被动模式.
    FTP会话时包含了两个通道,一个叫控制通道,一个叫数据通道。
    控制通道:控制通道是和FTP服务器进行沟通的通道,连接FTP,发送FTP指令都是通过控制通道来完成的。
    数据通道:数据通道是和FTP服务器进行文件传输或者列表的通道。
    FTP协议中,控制连接均由客户端发起,而数据连接有两种工作方式:PORT方式(主动方式)和PASV方式(被动方式)

  • 主动模式

    1.客户端从大于1024端口到服务器的21端口

    2.服务器的21端口到客户端大于1024的端口

    3.FTP服务器的20端口到大于1024的端口

    4.客户端大于1024端口到FTP服务器的20端口

  • 被动模式

    1.客户端从任何大于1024的端口到服务器的21端口

    2.服务器的21端口到客户端任何大于1024的端口

    3.客户端从任何大于1024端口到服务器的大于1024端口

    4.服务器的大于1024端口到远程的大于1024的端口

  • 登录方式

    vsftp允许三种用户登录:

    1.本地用户(系统中的用户)
    
    2.匿名用户(anonymous免密码登录)
    
    3.虚拟用户(基于本地用户)

    虚拟用户以本地用户为宿主(一般是不能登录系统的本地用户),仅仅用于登录vsftp,无法登陆系统; 可以建立多个虚拟用户,设置各自的密码,并且根据其用途设置相应的配置,能适应多种情况。

1.环境准备

[root@niaoyun50524 ~]# cat /etc/redhat-release
CentOS Linux release 7.0.1406 (Core) 
[root@niaoyun50524 ~]# uname -r
3.10.0-123.el7.x86_64
[root@niaoyun50524 ~]# getenforce
Disabled
[root@niaoyun50524 ~]# systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled)
   Active: inactive (dead)

2.yum安装vsftpd

[root@niaoyun50524 ~]#  wget -O /etc/yum.repos.d/epel.repo  http://mirrors.aliyun.com/repo/epel-7.repo   #更新epel源,换成阿里源
[root@niaoyun50524 yum.repos.d]# rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
Retrieving http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
^[[Cwarning: /var/tmp/rpm-tmp.2PdaKo: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:epel-release-7-7                 ################################# [100%]代码
[root@niaoyun50524 ~]# yum -y install vsftpd    #安装vsftpd

3.配置启动vsftpd

  • 3.1 编辑vsftpds配置文件/etc/vsftpd/vsftpd.conf

[root@niaoyun50524 skins]# grep -v "^#" /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO	    # 禁止匿名登陆
local_enable=YES		# 设置本地用户可以访问		
write_enable=YES
local_umask=022			# 本地用户新建文件权限
dirmessage_enable=YES	
xferlog_enable=YES		# 开启上传下载日志
connect_from_port_20=YES	# 主动连接的端口号
xferlog_file=/var/log/xferlog	# 启用日志记录
xferlog_std_format=YES			# 日志格式
ascii_upload_enable=YES			# 设定支持ASCII模式的上传和下载功能
ascii_download_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list  # 不能离开主目录的用户列表
listen=YES
pam_service_name=vsftpd			# PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证
userlist_enable=YES			# 在/etc/vsftpd/user_list中的用户将不得使用FTP
tcp_wrappers=YES			# 支援 TCP Wrappers 的防火墙机制
guest_enable=YES         # 启用虚拟用户功能
guest_username=ftp       # 将虚拟用户映射为本地ftp用户(指定虚拟用户的宿主用户)。Centos默认有ftp用户
virtual_use_local_privs=YES  # 虚拟用户的权限符合他们的宿主用户
user_config_dir=/etc/vsftpd/vuser_conf  # 虚拟用户个人vsftpd的配置文件存放路径。注意:配置文件名必须和虚拟用户名相同 
allow_writeable_chroot=YES   #登陆用户可写权限
  • 3.2 配置虚拟用户访问

[root@niaoyun50524 vsftpd]# echo ftp > chroot_list  #创建chroot_list文件,并把vsftpd.conf配置文件中的guest_username(这里是ftp)写入
[root@niaoyun50524 vsftpd]# cat chroot_list 
ftp
[root@niaoyun50524 vsftpd]# echo -e "anzhihe\n123456" > vuser_passwd.txt   #创建虚拟用户密码文件/etc/vsftpd/vuser_passwd.txt
[root@niaoyun50524 vsftpd]# cat vuser_passwd.txt 			    #注意奇行是用户名,偶行是密码。
anzhihe
123456
[root@niaoyun50524 vsftpd]# db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db  #生成虚拟用户认证的db文件,将文本内的帐号及密码添加到db4的数据库文件内
[root@niaoyun50524 vsftpd]# ls
chroot_list  ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh  vuser_conf  vuser_passwd.db  vuser_passwd.txt
#编辑认证文件/etc/pam.d/vsftpd,把注释全部去掉,然后加上以下两条
系统为64位:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
系统为32位:
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd 
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
#注:db/etc/vsftpd/vuser_passwd中的vuser_passwd是你生成的虚拟用户的db文件
#查看系统版本号:getconf LONG_BIT
[root@niaoyun50524 vsftpd]# cat /etc/pam.d/vsftpd 
#%PAM-1.0
#session    optional     pam_keyinit.so    force revoke
#auth       required	pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required	pam_shells.so
#auth       include	password-auth
#account    include	password-auth
#session    required     pam_loginuid.so
#session    include	password-auth
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
  • 3.3 虚拟用户权限文件设置

1、在文件vsftpd.conf中指定虚拟用户的权限目录
user_config_dir=/etc/vsftpd/vuser_conf
2、创建虚拟用户配置文件
[root@niaoyun50524 vsftpd]# mkdir -pv /etc/vsftpd/vuser_conf
mkdir: created directory ‘/etc/vsftpd/vuser_conf’
[root@niaoyun50524 vuser_conf]# mkdir -p /data/ftp/www
[root@niaoyun50524 vuser_conf]# cat /etc/vsftpd/vuser_conf/anzhihe #文件名必须为vuser_passwd.txt里面的账号,否则下面的配置无效
local_root=/data/ftp/www      # 虚拟用户根目录,根据实际情况修改,目录必须可写
anon_umask=022                # 虚拟用户文件权限,新建目录权限 777-022=755,新建文件权限 666-022=644
write_enable=YES              # 可写
anon_world_readable_only=NO   # 显示文件目录
anon_upload_enable=YES        # 上传
anon_mkdir_write_enable=YES   # 新建文件、目录
anon_other_write_enable=YES   # 修改、重命名
download_enable=YES           # 下载

[root@niaoyun50524 vuser_conf]# chown -R ftp.ftp /data/ftp/www
#注意: ftp根目录的文件权限数组,如果用户访问的根目录的权限数组设置不当,用户可能就无法上传或修改文件

iptables添加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state--state NEW -m tcp -p tcp --dport 40000:40100 -j ACCEPT(被动模式,同时要在配置文件中添加如下配置)
### 开启PASV模式(被动模式)
pasv_enable=YES  
pasv_min_port=40000  # 最小端口号
pasv_max_port=40100  # 最大端口号
pasv_promiscuous=YES
### 会话限制(全局),同时可以在用户的权限文件里面设置(配置文件中不要有中文注释,登陆时会产生500报错)
idle_session_timeout=600     # 用户会话空闲后10分钟
data_connection_timeout=120     # 将数据连接空闲2分钟断
max_clients=10          # 最大客户端连接数
max_per_ip=5           # 每个ip最大连接数
local_max_rate=0         # 限制上传速率,0为无限制
  • 3.4 启动vsfpd服务

[root@niaoyun50524 vsftpd]# systemctl restart iptables.service
[root@niaoyun50524 vsftpd]# systemctl start vsftpd.service
[root@niaoyun50524 vsftpd]# systemctl status vsftpd.service
vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled)
   Active: active (running) since Mon 2016-07-04 13:27:02 CST; 9s ago
  Process: 4397 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 4398 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─4398 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Jul 04 13:27:02 niaoyun50524 systemd[1]: Starting Vsftpd ftp daemon...
Jul 04 13:27:02 niaoyun50524 systemd[1]: Started Vsftpd ftp daemon.
# ps –ef| grep vsftp 查看进程是否启动
  • 3.5 使用FlashFXP连接测试,截图如下:

FTP服务器vsftpd及net2ftp部署

遇到的问题:

  • 500 OOPS: bad bool value in config file for: write_enable

    注意你的vsftpd和虚拟用户的配置文件中保证每一行最后没有任何空格,一般出错就是在多余的空格上,建议配置文件中不用中文注释。

  • 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

    echo 'allow_writeable_chroot=YES' >> /etc/vsftpd/vsftpd.conf

    systemctl restart vsftpd

4.部署Net2ftp客户端

  • 4.1 安装http、MySQL5.6

[root@niaoyun50524 /]# yum install -y httpd  #安装web服务(httpd)
[root@niaoyun50524 /]# wget http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm  
[root@niaoyun50524 /]#  yum localinstall -y mysql57-community-release-el6-7.noarch.rpm   #安装mysql yum源
#修改安装mysql版本,我们这选5.6版本 vi /etc/yum.repos.d/mysql-community.repo
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[root@niaoyun50524 /]# yum install -y mysql-community-server #yum安装mysql5.6
[root@niaoyun50524 /]# rpm -qa|grep mysql
mysql-community-libs-5.6.31-2.el6.x86_64
mysql57-community-release-el6-7.noarch
mysql-community-client-5.6.31-2.el6.x86_64
mysql-community-server-5.6.31-2.el6.x86_64
mysql-community-common-5.6.31-2.el6.x86_64
[root@niaoyun50524 /]# systemctl start mysqld #启动mysql数据库
[root@niaoyun50524 /]# mysqladmin -uroot password "rootroot" #设置密码
Warning: Using a password on the command line interface can be insecure.
[root@niaoyun50524 /]# mysql -uroot -prootroot -e 'create database vsftpd' #创建vsftpd数据库
mysql> grant all privileges on vsftpd.* to 'vsftpd'@'%' identified by 'vsftpd';  #创建vsftpd用户并授权
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
  • 4.2 下载安装net2ftp文件

[root@niaoyun50524 /]# cd /var/www/html
[root@niaoyun50524 html]# wget http://www.net2ftp.com/download/net2ftp_v1.0.zip #下载net2ftp压缩包
[root@niaoyun50524 html]# unzip net2ftp_v1.0.zip  #解压
[root@niaoyun50524 html]# ll
total 4356
drwxr-xr-x 3 root root     124 Apr 24  2013 net2ftp_v1.0
-rw-r--r-- 1 root root 4460502 Apr 26  2013 net2ftp_v1.0.zip
[root@niaoyun50524 html]# cd net2ftp_v1.0/files_to_upload/
[root@niaoyun50524 files_to_upload]# vi settings.inc.php   #修改settings.inc.php文件
[root@niaoyun50524 files_to_upload]# egrep -v '^/|^\s*$' settings.inc.php 
 <?php
$net2ftp_settings["email_feedback"] = "350510947@qq.com"; 
$net2ftp_settings["default_language"] = "en";  #推荐使用英文,中文可能会出现问题
$net2ftp_settings["default_skin"]     = "Shinra";#皮肤
$net2ftp_settings["help_text"] = "";
$net2ftp_settings["help_link"] = "";
$net2ftp_settings["error_reporting"] = "standard";
$net2ftp_settings["fix_png"] = "yes";
$net2ftp_settings["encryption_string"] = "462E16CB7C3F369BD9F4DBEE0A926F8F14FFB3";
$net2ftp_settings["admin_username"] = "anzhihe";  #配置管理员用户名
$net2ftp_settings["admin_password"] = "xxxxxx";   #配置管理员密码
$net2ftp_settings["message_browse"] = "";
$net2ftp_settings["use_database"] = "yes"; // "yes" or "no"  #是否记录登陆日志,默认NO,可修改为YES,但要把create_tables.sql导入到你的MySQL里面
$net2ftp_settings["dbusername"] = "vsftpd";   #数据库配置,按之前我们设定的来填写
$net2ftp_settings["dbpassword"] = "vsftpd";
$net2ftp_settings["dbname"]     = "vsftpd";
$net2ftp_settings["dbserver"]   = "localhost"; // on many configurations, this is "localhost"
$net2ftp_settings["log_access"] = "yes";
$net2ftp_settings["log_error"]  = "yes";
$net2ftp_settings["log_length_months"] = 12; // number of months
$net2ftp_settings["use_syslog"] = "no";
$net2ftp_settings["syslog_priority"] = LOG_NOTICE;
$net2ftp_settings["syslog_facility"] = LOG_MAIL;
$net2ftp_settings["syslog_ident"] = "net2ftp";
$net2ftp_settings["max_filesize"]  = "200000000";  // in Bytes, default 10 MB,文件上传最大大小,我这设置了了200M
$net2ftp_settings["check_consumption"] = "no";
$net2ftp_settings["max_consumption_ipaddress_datatransfer"] = 50000000; // per IP address,每个IP每天最多的传送的字节
$net2ftp_settings["max_consumption_ftpserver_datatransfer"] = 50000000; // per FTP server,每天FTP服务器每天最多接受的字节
$net2ftp_settings["max_consumption_ipaddress_executiontime"] = 1500; // per IP address
$net2ftp_settings["max_consumption_ftpserver_executiontime"] = 1500; // per FTP server
$net2ftp_settings["check_homedirectory"] = "no";
$net2ftp_settings["application_version"] = "1.0";
$net2ftp_settings["application_build_nr"] = "47";
$net2ftp_settings["net2ftpdotcom"] = "no";
$net2ftp_settings["show_ads"] = "no";
?>
#记录登陆日志,导入create_tables.sql
[root@niaoyun50524 files_to_upload]# mysql -uroot -prootroot -e 'use vsftpd;source /var/www/html/net2ftp_v1.0/create_tables.sql;'
[root@niaoyun50524 files_to_upload]# systemctl start httpd #启动httpd服务
[root@niaoyun50524 files_to_upload]# ps -ef|grep httpd
root      5767     1  3 15:28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    5768  5767  0 15:28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    5769  5767  0 15:28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    5770  5767  0 15:28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    5771  5767  0 15:28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    5772  5767  0 15:28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
  • 4.3 测试net2ftp

  1. 打开浏览器输入:http://你的IP地址/net2ftp_v1.0/files_to_upload/index.php,出现登陆界面

FTP服务器vsftpd及net2ftp部署

  2.点击登陆即可在Web操作,上传下载编辑文件非常方便

   FTP服务器vsftpd及net2ftp部署 

  • 遇到的问题:

    1.打开时报500错误,查看apache日志发现MySQL数据库没有给vsftpd本地登陆权限

    2.打开index.php,一片空白,后面发现index.php没有可执行权限,好坑!

    -rwxr-xr-x  1 apache apache  4072 Jan 24  2013 index.php
  • 参考: http://liumissyou.blog.51cto.com/4828343/1760565


anzhihe 安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/682.html | ☆★★每天进步一点点,加油!★★☆ | 

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注