一、安装
http://www.myhack58.com/Article/48/66/2015/57586.htm
http://blog.csdn.net/huangbiao86/article/details/6641952
http://www.flybi.net/article/37
http://www.aiezu.com/system/linux/linux_vsftpd_install_configure.html
Debian下使用apt-get命令安装vsftp
#apt-get install vsftpd -y
二、ftp用户配置
1.先检查一下nologin的位置,通常是/usr/sbin/nologin或者/sbin/nologin。
2.接着创建系统账户
#useradd -d /home/www/ftproot -s /usr/sbin/nologin ftpuser
/home/www/ftproot 为该系统用户家(home)目录,ftpuser为用户名
为该帐户设置密码:
#passwd ftpuser
输入两次相同密码即可
3.然后修改指定目录的权限
#chown -R ftpuser.ftpuser /home/www/ftproot
chown -R命令改变文档/目录所有者。详解
4.配置vsftp
编辑vsftp配置文件,命令如下:
#vi /etc/vsftpd.conf
将配置文件中”anonymous_enable=YES “改为 “anonymous_enable=NO”
删除如下配置前的注释符号(#):
local_enable=YES
write_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
:wq 保存退出
接着创建vsftpd.chroot_list文件,并将ftp用户名添加进去
#touch /etc/vsftpd.chroot_list && echo ftpuser > /etc/vsftpd.chroot_list
5.修改shell配置
vi编辑/etc/shells,如果该文件里没有/usr/sbin/nologin或者/sbin/nologin(具体看当前系统配置)则追加进去
6.重启vsftp服务并测试登录
#service vsftpd restart
然后用帐号ftpuser测试下是否可以登陆ftp。目录是/home/www/ftproot
三、vsftp安全配置
前面配置了用户访问权限管理中的使用nologin禁止FTP帐户登录Linux服务器,现在再配置些更安全的。
1.限制恶意占有带宽的用户
在vsftp中,匿名用户和本地用户的速度限制是分开的。前者是anon_max_rate,后者是local_max_rate。 它们的单位都是byte(字节)。
如果让匿名用户和本地的用户都以最高300KB的速度下载,那么这个数字应该是1024×300=307200。在vsftpd.conf文件末尾中加入下面的两行即可:
anon_max_rate=307200
local_max_rate=307200
然后重启vsftpd服务即可。
另外,还可以限制FTP的最大连接数和每个IP的最大连接数。这两个参数分别是Max_clients和Max_per_ip。和上面一样,也只需要在vsftpd.conf文件末尾添加参数即可,如下设成了最大连接数100,每个IP的最大连接数5个:
max_clients=100
max_per_ip=5
2.防止FTP密码被恶意嗅探
由于vsftpd发送的数据是以明文方式传输,尤其是密码容易被恶意的嗅探(Sniffering)到,所以通常需要采用SSL(Secure Sockets Layer,安全套接字层)技术,使得vsftpd支持SSL加密传输,以此来抵御恶意嗅探攻击。
使用SSL技术,依赖于另外一个软件:OpenSSL,它是一个可以自由使用的SSL实现,首先需要安装这个软件。用户可以从网站 http://www.openssl.org/source/上下载Linux下OpenSSL的稳定版本,编译安装,然后执行命令生成密钥。
#wget http://www.openssl.org/source/openssl-1.0.1f.tar.gz
#tar -xvzf openssl-1.0.1f.tar.gz
#cd openssl-1.0.1f
#./config
#make
#make install
安装成功!
接下来开始生成密钥
1.检查/etc/ssl/private 目录是否存在,不存在就创建
mkdir -p /etc/ssl/private
chmod 700 /etc/ssl/private
2.执行命令生成密钥
#openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
3.修改vsftpd配置文件
#vi /etc/vsftpd.conf
在末尾增加如下代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | # Turn on SSL ssl_enable=YES # Allow anonymous users to use secured SSL connections allow_anon_ssl=YES # All non-anonymous logins are forced to use a secure SSL connection in order to # send and receive data on data connections. force_local_data_ssl=YES force_anon_data_ssl=YES # All non-anonymous logins are forced to use a secure SSL connection in order to send the password. force_local_logins_ssl=YES force_anon_logins_ssl=YES # Permit TLS v1 protocol connections. TLS v1 connections are preferred ssl_tlsv1=YES # Permit SSL v2 protocol connections. TLS v1 connections are preferred ssl_sslv2=NO # permit SSL v3 protocol connections. TLS v1 connections are preferred ssl_sslv3=NO # Disable SSL session reuse (required by WinSCP) require_ssl_reuse=NO # Select which SSL ciphers vsftpd will allow for encrypted SSL connections (required by FileZilla) ssl_ciphers=HIGH # This option specifies the location of the RSA certificate to use for SSL # encrypted connections. rsa_cert_file=/etc/ssl/private/vsftpd.pem |
然后重启vsftp
#service vsftpd restart
打开FTP工具(我用的是FlashFXP),连接类型选择“FTP使用公开SSL(验证TLS)” 如下图
连接,会弹出是否接受证书,选择“接受并保存”之后我们即可登入远程的ftp服务器。
连接成功!
若使用不支持SSL的客户端工具访问时有可能会出现:530 Non-anonymous sessions must use encryption.的错误提示。所以提醒用户尽量选择flashfxp或CoreFtp这类的多功能客户端。
到这里为止,采用SSL机制保护下的vsftpd就算配置完成了。用户使用FTP登录和上传下载数据的过程都将是加密传输的,其中AES256-SHA是默认的加密方式,用户可以修改“ssl_ciphers=xxx”的方式来选择想要的加密方式。
http://blog.chinaunix.net/uid-22141042-id-1789602.html
如何修改 vsftpd 的默认根目录 /var/ftp/ 到另一个目录? Post By:2009-6-27 18:14:10
默认配置下,匿名用户登录 vsftpd 服务后的根目录是 /var/ftp/;
系统用户登录 vsftpd 服务后的根目录是系统用户的家目录。
若要修改登录 vsftpd 服务后的根目录,只要修改 /etc/vsftpd/vsftpd.conf 文件即可。
假设要把 vsftpd 服务的登录根目录调整为 /vae/www/html,可加入如下三行:
local_root=/var/www/html
chroot_local_user=YES
anon_root=/var/www/html
注解:local_root 针对系统用户;anon_root 针对匿名用户。
编辑 vsftpd.conf 文件后,保存退出,参照如下指令重新启动服务: service vsftpd restart
之后 ftp 客户端登陆 vsftpd 服务后,其根目录是 /var/www/html。