配置的思路:使用帐号和密码登录FTP服务器,每个用户只能登录到自己用户名的目录中,可以增删改查文件。 -- 使用VSFTP的虚拟用户和chroot目录的配置。


安装vsftp。使用pam管理vsftp的虚拟用户。


vsftp使用的目录/ftp vsftp使用的本地用户:vsftpd


因为是使用vsftpd的虚拟用户,所以我们需要先在系统中创建一个用户,并且该用户对/ftp目录具有可读可写可执行权限。


在iptables中开放20、21、被动模式端口范围(30000-35000),并加载FTP驱动模块

modprobe ip_nat_ftp

modprobe ip_conntrack_ftp


/etc/vsftpd.conf文件内容

listen=YES

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022


# 指定vsftp欢迎信息及日志记录格式和日志文件路径

dirmessage_enable=YES

use_localtime=YES

xferlog_enable=YES

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=YES

ftpd_banner=Welcome to nixCraft ftp server


connect_from_port_20=YES

chroot_local_user=YES

chroot_list_enable=NO

allow_writeable_chroot=YES

# 使用的本地账户的名称

guest_enable=YES

guest_username=vsftpd


secure_chroot_dir=/var/run/vsftpd/empty

# 指定使用pam.d目录中的哪个文件

pam_service_name=vsftpd

# 启用被动模式、被动模式使用的端口号范围及被动模式使用的公网IP

pasv_enable=YES

pasv_min_port=30000

pasv_max_port=31000

pasv_address=61.139.2.69


#虚拟用户目录

user_config_dir=/etc/vsftpd/user_conf


# vsftp使用ssl key方式

rsa_cert_file=/etc/ssl/private/vsftpd.pem

rsa_private_key_file=/etc/ssl/private/vsftpd.pem


ssl_enable=YES

allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES


ssl_tlsv1=YES

ssl_sslv2=NO

ssl_sslv3=NO

require_ssl_reuse=NO

ssl_ciphers=HIGH


#结合/etc/hosts.allow和/etc/hosts.deny限制ip访问vsftpd服务。

tcp_wrappers=YES


修改/etc/hosts.deny

加入vsftpd : ALL


修改/etc/hosts.allow

加入vsftpd:.admin99.net

       vsftpd:192.168.0.

       vsftpd:192.168.0.0/255.255.255.0

第一行表示,只有admin99.net这个域里的主机允许访问vsftpd服务,注意admin99.net前面的那个点(.);

/第二行表示,只有192.168.0这个网段的用户允许访问vsftpd服务,注意0后面的点(.);

第三行表示,只有192.168.0这个网段的用户允许访问vsftpd服务,注意这里不能写为192.168.0.0/24。



/etc/pam.d/vsftpd文件内容 ,这个文件就是使用的用户名和密码的txt生成的db数据文件。/etc/vsftpd/user_config这个文件就是.db文件路径

auth sufficient pam_userdb.so db=/etc/vsftpd/user_config

account sufficient pam_userdb.so db=/etc/vsftpd/user_config



虚拟用户配置文件内容/etc/vsftpd/user_conf/username

write_enable=YES

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

local_root=/ftp/FTPUser

该配置内容为具有可读可写权限。




创建一个本地系统用户

useradd vsftpd -d /ftp -s /bin/false

chown vsftpd:vsftpd /ftp



创建文本文件loguser.txt

格式如下:

username

password

 

于是,我们/home/loguser.txt文件的内容为

cd  /home                     切换到/home目录

sudo  touch  /home/loguser.txt         创建账户和密码文件

sudo  gedit   /home/loguser.txt

然后将下面的账户文件字符粘帖入loguser.txt中,注意一行一行输入。

注意:奇数行为账户名,偶数行为密码。也就是1.3.5.等行为用户名,2.4.6行为密码;

最后一行需要回车(否则建立数据库文件时无法识别最后一行,导致报奇数行错误)。


db1

db100 

db2 

db200 

db3 

db300

test

生成数据库

sudo db_load -T -t hash -f /home/loguser.txt /etc/vsftpd_login.db


最后设置一下数据库文件的访问权限

sudo chmod 600 /etc/vsftpd_login.db



在ubuntu下要启动、停止、重启vsftpd,我们必须使用以下命令:

sudo service vsftpd stop

sudo service vsftpd start

sudo service vsftpd restart




vsftp配置ssl

1.生成证书

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

2.在vsftpd.conf配置文件中增加ssl配置项

rsa_cert_file=/etc/ssl/private/vsftpd.pem

rsa_private_key_file=/etc/ssl/private/vsftpd.pem

配置强制使用ssl

  ssl_enable=YES

  allow_anon_ssl=NO

  force_local_data_ssl=YES

  force_local_logins_ssl=YES

After this we configure the server to use TLS, which is actually a successor to SSL, and preferred:

ssl_tlsv1=YES

ssl_sslv2=NO

ssl_sslv3=NO

Finally, we will require add some additional options to flesh out our configuration file:

require_ssl_reuse=NO

ssl_ciphers=HIGH






总结:vsftp使用虚拟用户访问主要使用了单用户配置的方式。

使用了pam模块。在使用虚拟用户上传下载文件的时候映射到本地新建的用户。