vsftpd作为FTP服务器,在Linux系统中是非常常用的。下面我们介绍如何在centos系统上安装vsftp。
什么是vsftpd
vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开发源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。
OK !现在进入安装配置。
安装vsftpd
1、以管理员(root)身份执行以下命令
yum install vsftpd
2、设置开机启动vsftpd ftp服务
[root@ip~ vsftpd]$ systemctl enable vsftpd ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service'
3、启动vsftpd服务
systemctl start vsftpd
管理vsftpd相关命令
#停止 systemctl stop vsftpd #重启 systemctl restart vsftpd
配置vsftpd服务器, 修改的几个关键点如下:
默认的配置文件是/etc/vsftpd/vsftpd.conf,你可以用文本编辑器打开。
vi /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_std_format=YES listen=YES ## 注意这里,确认自己的服务器IPv4打开此项 #listen_ipv6=YES ## 注意这里,确认自己的服务器IPv6打开此项 pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES local_root=/adeaz/ftp ## 默认会入到ftp user的根目录,可以不指定 ascii_download_enable=YES ascii_upload_enable=YES userlist_deny=NO #### 设置:限制用户目录的访问权限 chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list allow_writeable_chroot=YES ### 设置:主被动模式参数 port_enable=YES ## default=YES, 默认情况下主动模式被打开 pasv_enable=YES ## 开启被动模式 ### 设定在PASV模式下,建立数据传输所可以使用port范围的上下界,default=0 表示任意(1024 – 65535端口) pasv_min_port=1024 ## 注意EC2 Security Group配置要对应20-21 和 1024-1048 pasv_max_port=1048 ## 注意EC2 Security Group配置要对应20-21 和 1024-1048 ### 让服务器出面发布"假"消息去欺骗客户端, 我们只需要在vsftpd的配置文件中加入如下两行即可 pasv_addr_resolve=YES ## 允许vsftpd去欺骗客户 pasv_address=<外网IP> ## 必须项,填写当前服务器的外网IP (或解析到外网的域名)
第一:添加允许访问ftp服务器的用户列表
vi /etc/vsftpd/user_list ## 在最后增加一行,输入ftpUserName 就是你刚才建立的ftp的用户名
重启vsftpd和配置开机启动
第二:添加限制用户在根目录
### chroot_list_enable=YES 并且 chroot_local_user=NO(系统默认就是NO), 两参数配合使用,详细看下面表格 ### 1. 所有用户都不被限制其主目录下 ### 2. 使用chroot_list_file指定的用户列表,这些用户作为“例外”,受到限制 sudo touch /etc/vsftpd/chroot_list ## 用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户目录的上级目录。
接下来添加ftp用户
#user为ftp的用户名, 用户目录问 /var/www/ftp sudo useradd -s /sbin/nologin -d /var/www/ftp -g ftp user ## 添加用户并指定根目录和所属的组 sudo passwd user ## 修改密码 sudo chmod 755 /var/www/ftp ## 设置目录权限
在EC2控制台中设置Security Group 增加ftp所需端口,例如:
TCP: 20-21端口和被动模式的1024-1048端口,下面是我添加的Security Group参考:
对于chroot_local_user与chroot_list_enable的组合效果,可以参考下表:
chroot_local_user=YES | chroot_local_user=NO | |
chroot_list_enable=YES | 1.所有用户都被限制在其主目录下
2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,不受限制 |
1.所有用户都不被限制其主目录下
2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,受到限制 |
chroot_list_enable=NO | 1.所有用户都被限制在其主目录下
2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户 |
1.所有用户都不被限制其主目录下
2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户 |
相关参考:
http://www.iitshare.com/installation-and-configuration-of-vsftpd.html
http://www.chilltouch.com/2013/06/aws-ec2-ftp
http://desert3.iteye.com/blog/1685734
Centos 安装FTP配置目录权限,iptables设置ftp服务