70.4. vsftpd - The Very Secure FTP Daemon

70.4.1. 安装 vsftpd

70.4.1.1. Ubuntu 环境安装

$ sudo apt-get install vsftpd
				

test

[08:25:37 jobs:0] $ ncftp ftp://127.0.0.1
NcFTP 3.2.1 (Jul 29, 2007) by Mike Gleason (http://www.NcFTP.com/contact/).
Connecting to 127.0.0.1...
(vsFTPd 2.0.7)
Logging in...
Login successful.
Logged in to 127.0.0.1.
Current remote directory is /.
ncftp / >

enable local user

$ sudo vim /etc/vsftpd.conf

# Uncomment this to allow local users to log in.
local_enable=YES
chroot_local_user=YES

$ sudo /etc/init.d/vsftpd reload
				

testing for local user

$ ncftp ftp://neo@127.0.0.1/
NcFTP 3.2.1 (Jul 29, 2007) by Mike Gleason (http://www.NcFTP.com/contact/).
Connecting to 127.0.0.1...
(vsFTPd 2.0.7)
Logging in...
Password requested by 127.0.0.1 for user "neo".

    Please specify the password.

Password: *******

Login successful.
Logged in to 127.0.0.1.
Current remote directory is /home/neo.
ncftp /home/neo >

70.4.1.2. CentOS 7 环境安装

yum install -y vsftpd

systemctl enable vsftpd

cp /etc/vsftpd/vsftpd.conf{,.original}

sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf
sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf
sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf
sed -i 's/listen_ipv6=YES/listen_ipv6=NO/' /etc/vsftpd/vsftpd.conf

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

systemctl start vsftpd

firewalld 防火墙

# firewall-cmd --permanent --add-port=21/tcp
				

iptables

sed -i 's/IPTABLES_MODULES=""/IPTABLES_MODULES="ip_conntrack_ftp"/' /etc/sysconfig/iptables-config

# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
				

70.4.2. ftp 帐号的shell权限

我们不想让FTP用户通过shell登录系统, 可以将用户的Shell改为/sbin/nologin

neo:x:1000:1000:neo,,,:/home/neo:/sbin/nologin
			

70.4.3. vsftpd 认证模块

70.4.3.1. pam_shells.so

# 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	system-auth
account    include	system-auth
session    include	system-auth
session    required     pam_loginuid.so
				

/etc/vsftpd/ftpusers 列表中的用户将不能登录ftp服务器

70.4.3.2. virtual user

创建明文密码文件,一行用户名后回车跟一行密码

# cat virtual-users.txt
user
password
neo
123456
jam
654321
				

转为数据库文件

# sudo apt-get install db-util
# db_load -T -t hash -f virtual-users.txt /etc/vsftpd/virtual-users.db
				

创建插件认证配置文件 /etc/pam.d/vsftpd-virtual

auth required pam_userdb.so db=/etc/vsftpd/virtual-users
account required pam_userdb.so db=/etc/vsftpd/virtual-users
				
/etc/vsftpd/vsftpd.conf:

# virtual users to use local privs, not anon privs
virtual_use_local_privs=YES

# the PAM file used by authentication of virtual uses
pam_service_name=vsftpd-virtual

# in conjunction with 'local_root',
# specifies a home directory for each virtual user
user_sub_token=$USER
local_root=/var/www/virtual/$USER
# the virtual user is restricted to the virtual FTP area

chroot_local_user=YES
# hides the FTP server user IDs and just display "ftp" in directory listings
hide_ids=YES

guest_enable=YES
guest_username=nobody

# the umask for file creation
local_umask=022
				

guest_username=nobody 虚拟用户将使用nobody用户作为他的uid,gid.

# mkdir /var/www/virtual/mary
# chown ftp:ftp /var/www/virtual/mary
				

70.4.3.3. 虚拟用户权限

vim /etc/vsftpd.conf

user_config_dir=/etc/vsftpd/conf.d

mkdir /etc/vsftpd/conf.d
				

neo 只能下载不能上传

echo "anon_world_readable_only=NO" > /etc/vsftpd/conf.d/neo

jam 可以下上传跟下载

echo "anon_world_readable_only=NO" > /etc/vsftpd/conf.d/jam
echo "anon_upload_enable=YES" >> /etc/vsftpd/conf.d/jam
echo "write_enable=YES" >> /etc/vsftpd/conf.d/jam

70.4.4. chroot

70.4.4.1. local user

chroot 所有本地用户

chroot_local_user=YES
				

70.4.4.2. /etc/vsftpd/chroot_list

受限用户用户添加到文件vsftpd.chroot_list

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
				

注意:每行一个用户名

70.4.4.3. test

adduser -o --home /www --shell /sbin/nologin --uid 99 --gid 99 --group nobody www
echo "www:chen" | chpasswd
echo www > /etc/vsftpd/chroot_list
ncftp ftp://www:chen@172.16.0.1
				

70.4.5. FAT

70.4.5.1. vsftpd: refusing to run with writable root inside chroot()

添加 allow_writeable_chroot=YES 项到 /etc/vsftpd/vsftpd.conf 配置文件

echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf
				
重启 vsftpd 

原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

时间: 2024-10-13 20:06:04

70.4. vsftpd - The Very Secure FTP Daemon的相关文章

vsftpd 安全快速的FTP服务器

如果问哪种FTP服务器最安全?那么在Unix和Linux中,首推的就是vsftpd(Very Secure FTP Daemon,非常安全的FTP服务器).顾名思义,vsftpd就是非常安全的文件传输协议服务.vsftpd设计的出发点就是安全性,像RedHat.Debian.GNU.GNOME.KDE等一些大型站点都采用vsftpd作为它们的FTP服务器. 安装vsftpd 路径: /usr/ports/ftp/vsftpd命令: make install ; make clean语法:vsft

Secure FTP:安全的企业级FTP服务器

ftp服务器|安全 Secure FTP 服务器,提供安全的文件传输. 提起GlobalScape公司的CuteFTP软件家族,可以说是人尽皆知.这次要介绍的Secure FTP 服务器也属于GlobalScape公司的FTP软件产品线.也许是觉得CuteFTP这个名字不是很吸引企业用户,从2002年7月起,GlobalScape将CuteFTP产品线中的FTP服务器重命名为Secure FTP Server(安全FTP服务器).它的服务器客户商仍然采用人们所熟知的CuteFTP命名. Secu

Secure FTP服务器

Secure FTP服务器,提供安全的文件传输. 提起GlobalScape公司的CuteFTP软件家族,可以说是人尽皆知.这次要介绍的Secure FTP 服务器也属于GlobalScape公司的FTP软件产品线.也许是觉得CuteFTP这个名字不是很吸引企业用户,从2002年7月起,GlobalScape将CuteFTP产品线中的FTP服务器重命名为Secure FTP Server(安全FTP服务器).它的服务器客户商仍然采用人们所熟知的CuteFTP命名. Secure FTP 服务器的

Bftpd v3.2发布 运行在Linux下的小巧的ftp daemon

Bftpd一个可以运行在Linux下的小巧的ftp daemon,配置简单,适合PC上用.使用standalone模式运行时用/usr/sbin/bftpd -d命令,终止服务要用kill命令. 其可以广泛应用于Linux.BSD/OS.FreeBSD.Solaris.DG-UX以及Tru64平台.Bftpd 主旨成为一款高速.小巧而且配置方便的服务器,我们可以使用其默认的配置选项,也可以通过交叉编译将其嵌入在我们不同的应用平台上. The Bftpd file server is http:/

基于vsftpd+pam+mysql架设ftp并实现虚拟用户登录

1.系统环境和所需软件包 Redhat Enterprise-5.8.vsftpd.mysql.pam-mysql-0.7RC1 2.本文大致内容 ①.vsftpd安装 ②.vsftpd配置文件的介绍 ③.vsftpd服务器的基本实现和一般控制设置 ④.虚拟用户vsftpd服务器的搭建.测试等 3.FTP服务器介绍 FTP服务器的连接分为两种: 控制连接:客户端向服务器端请求连接,而且一旦建立就不在断开,等到人为断开的时候此连接才会释放,此连接是 利用tcp的21号端口 数据连接:客户端和服务器

vsftpd+pam+mysql实现ftp构建的步骤

一.安装所需要程序 1.事先安装好开发环境和mysql数据库; 首先配置好yum的server.repo文件 [root@localhost yum.repos.d]# cd [root@localhost ~]# mkdir /mnt/cdrom [root@localhost ~]# mount /dev/cdrom /mnt/cdrom/ //上边是挂载镜像,以便使用yum [root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost y

Linux下用vsftpd构建FTP服务器

在Linux下如何使用vsftpd构建FTP服务器,构建后的FTP服务器有哪些特点?本文将作详细介绍. vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux.BSD.Solaris. HP-UNIX等系统上面,是一个完全免费的.开发源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征.比如:非常高的安全性需求.带宽限制.良好的可伸

vsftpd配置简介

如果问哪种FTP服务器最安全?那么在Unix和Linux中,首推的就是vsftpd(Very Secure FTP Daemon,非常安全的FTP服务器).顾名思义,vsftpd就是非常安全的文件传输协议服务.vsftpd设计的出发点就是安全性,像RedHat.Debian.GNU.GNOME.KDE等一些大型站点都采用vsftpd作为它们的FTP服务器. 安装vsftpd 路径: /usr/ports/ftp/vsftpd命令: make install ; make clean语法:vsft

Centos 6.2中vsftpd虚拟用户的配置

vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux.BSD.Solaris. HP-UNIX等系统上面,是一个完全免费的.开发源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征.比如:非常高的安全性需求.带宽限制.良好的可伸缩性.可创建虚拟用户.支持IPv6.速率高等. 之前就有弄过vsftpd,就不再介绍了! 安装: [ro