在Linux系统中,vsftpd(Very Secure FTP Daemon)是一款功能强大且安全性高的FTP服务器软件
本文将详细介绍如何在Linux系统上安装与配置vsftpd,涵盖匿名访问控制、本地用户访问、安全设置、以及被动模式配置等关键内容
一、安装vsftpd 首先,我们需要确保vsftpd软件包已经正确安装在Linux系统上
以CentOS系统为例,可以使用以下命令进行安装: yum install -y vsftpd 安装完成后,可以通过以下命令查看vsftpd服务状态: systemctl status vsftpd.service 此外,还可以使用以下命令管理服务: - 启动vsftpd服务:`systemctl start vsftpd.service` - 重启vsftpd服务:`systemctl restart vsftpd.service` - 停止vsftpd服务:`systemctl stop vsftpd.service` - 设置开机自启:`systemctl enable vsftpd.service` - 关闭开机自启:`systemctl disable vsftpd.service` 二、配置vsftpd vsftpd的配置文件通常位于`/etc/vsftpd/vsftpd.conf`
编辑该文件,我们可以对FTP服务器进行详细的配置
1.全局配置 打开配置文件: bash vim /etc/vsftpd/vsftpd.conf 以下是一些常用的配置项: -`anonymous_enable=NO`:禁止匿名访问(默认允许)
-`local_enable=YES`:允许本地系统用户访问(默认已开启)
-`write_enable=YES`:允许服务器写操作(开启上传功能,必须开启)
-`ascii_upload_enable=YES` 和`ascii_download_enable=YES`:允许ASCII文件上传和下载
-`ftpd_banner=Welcome to FTPservice.`:设置FTP服务器的欢迎信息
-`chroot_local_user=YES` 和`chroot_list_enable=YES`:将用户限制在为其配置的主目录
-`chroot_list_file=/etc/vsftpd/chroot_list`:指定例外用户列表文件
-`listen_port=21`:监听端口设置为21
-`idle_session_timeout=300`:空闲会话超时时间设置为300秒
-`allow_writeable_chroot=YES`:允许被限制的用户主目录具有写权限
-`data_connection_timeout=1`:数据连接超时时间
-`virtual_use_local_privs=YES`:虚拟用户使用本地用户权限
-`pasv_min_port=40000`和 `pasv_max_port=40010`:设置被动模式下的端口范围
-`accept_timeout=5` 和`connect_timeout=1`:连接超时时间
-`use_localtime=YES`:使用本地时间
2.保存并退出 编辑完成后,保存并退出配置文件: bash :wq 三、FTP账号、组、目录配置 1.创建FTP用户组 创建一个新的FTP用户组,例如`ftpuser`: bash groupadd ftpuser 2.创建FTP用户 创建一个新的FTP用户,并设置其家目录和禁止登录系统: bash useradd -g ftpuser -M -d /home/ftpuser -s /sbin/nologin ftpuser 3.设置用户密码 为新创建的FTP用户设置密码: bash passwd ftpuser 4.设置目录权限 将用户家目录的所有权赋予FTP用户: bash chown -R ftpuser:ftpuser /home/ftpuser 设置目录权限为755: bash chmod 755 -R /home/ftpuser 四、虚拟用户配置 1.创建虚拟用户密码文件 在`/etc/vsftpd/`目录下创建虚拟用户密码文件`vuser_passwd`,并添加虚拟用户信息: bash cd /etc/vsftpd/ vim vuser_passwd 添加内容如下: ftpuser 123456 2.生成虚拟用户数据文件 安装`db_load`命令,并生成虚拟用户数据文件: bash yum install libdb-utils db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db 将密码文件的权限设置为600: bash chmod 600 /etc/vsftpd/vuser_passwd.db 3.编辑PAM认证文件 备份并编辑PAM认证文件: bash mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak vim /etc/pam.d/vsftpd 根据系统位数,添加以下内容: - 32位系统: ``` auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd account required pam_userdb.so db=/etc/vsftpd/vuser_passwd ``` - 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 ``` 4.配置chroot_list文件 在`/etc/vsftpd`目录下创建或编辑`chroot_list`文件,并添加允许访问的虚拟用户名: bash cd /etc/vsftpd vimchroot_list 添加内容如下: ftpuser 五、防火墙与SELinux配置 1.SELinux配置 设置SELinux不对vsftpd做任何限制: bash setsebool -P ftpd_full_access on 2.防火墙配置 使用iptables或firewalld配置防火墙,允许FTP服务的相关端口: - iptables方式: ```bash vi /etc/sysconfig/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:40010 -j ACCEPT ``` - firewalld方式: ```bash firewall-cmd --zone=public --add-service=ftp --permanent firewall-cmd --zone=public --add-port=21/tcp --permanent firewall-cmd --zone=public --add-port=40000-40010/tcp --permanent firewall-cmd --reload ``` 六、测试与验证 1.匿名访问测试 可以通过FTP客户