centos7搭建vsftpd
参考:https://blog.csdn.net/aerchi/article/details/78042443
参考:https://blog.csdn.net/will0532/article/details/79175478
参考:https://blog.csdn.net/m47838704/article/details/51636379
原则:
要想安全地配置vsftpd意味着着需要考虑以下这几点:
关闭匿名访问功能、开启chroot以防止用户可以遍历系统文件、开启被动模式以便NAT环境用户访问、启用TSL加密以防止明文泄露、启用系统内置账户验证登录(该账户须限制不能登录)、改变默认的21端口以防止黑客扫描(当然也可以使用21端口)。
安装vsftpd
查询是否系统已经自带了vsftpd :rpm -qa | grep vsftpd
安装命令(安装的最新版本):
yum install -y vsftpd
启动服务:
systemctl start vsftpd
开机自启:
systemctl enable vsftpd
检查vsftpd是否开启:ps -e|grep vsftpd 或者 查看21端口是否被监听,netstat -an | grep 21
可以使用netstat -ntpl | grep vsftpd命令查看到系统现在监听的vsftpd的端口为 21
4.开启防火墙
放开21端口:firewall-cmd --zone=public --add-port=21/tcp --permanent(被动模式下还应该开启自定义的端口)
永久开放 ftp 服務:firewall-cmd --add-service=ftp --permanent (关闭ftp服务:firewall-cmd --remove-service=ftp --permanent)
在不改变状态的条件下重新加载防火墙:firewall-cmd --reload
FTP 用户认证
FTP 的用户一共有三种类型
- 匿名用户:ftp,anonymous,对应Linux用户ftp
- 系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow
- 虚拟用户:特定服务的专用用户,独立的用户名/密码文件
VSFTPD服务
- vsftpd 服务,由vsftpd包提供,直接使用yum安装就可以。
- 用户认证配置文件:
/etc/pam.d/vsftpd
- 服务脚本:
/usr/lib/systemd/system/vsftpd.service
,/etc/rc.d/init.d/vsftp
- 配置文件:
/etc/vsftpd/vsftpd.conf
- 匿名用户(映射为系统用户ftp )共享文件位置:
/var/ftp
- 系统用户共享文件位置:用户家目录
- 虚拟用户共享文件位置:为其映射的系统用户的家目录
创建登录用户及主目录
- 创建vsftpd的登录用户和主目录 [用于映射虚拟用户]
sudo useradd -d /home/vsftpd/myftp -s /sbin/nologin myftp(myftp是ftp的登录用户,替换成你自己的用户!) - 修改相应的密码 passwd myftp,
- 更改所有者及用户组 chown myftp.myftp /home//vsftpd/myftp
- 赋予权限: chmod 755 /home/vsftpd/myftp
创建虚拟用户及设置
1.建虚拟用户主目录,比如虚拟用户叫ftp1,执行下面的命令。
mkdir -p /home/vsftpd/ftp1
mkdir -p /home/vsftpd/ftp2
2.创建虚拟用户
vi /etc/vsftpd/vsftpdusers.txt
用户1
用户1密码
用户2
用户2密码
......
就创建了用户1这个虚拟用户,密码为用户1密码
3.根据这个文件创建数据库文件并赋予安全权限(此处报错就安装一下db4: yum -y install db4)
db_load -T -t hash -f /etc/vsftpd/vsftpdusers.txt /etc/vsftpd/vsftpdusers.db
chmod 600 /etc/vsftpd/vsftpdusers.db
4.启用这个数据库文件(这一步就是创建的虚拟用户认证文件,配置文件中要用)
vim /etc/pam.d/vsftpd
vim /etc/pam.d/vsftpd
把原来的account和auth注释掉,替换为下面:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpdusers
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpdusers
5.虚拟用户[权限]配置文件(此目录为虚拟用户的权限配置目录,在配置文件中要引用)
mkdir /etc/vsftpd/usersconf
这里的文件名称必须与虚拟用户名一致,比如在txt文件中写的第一个用户名是ftp1,那么就写成下面,若不是,替换成你自己的,第二个用户名是ftp2,那么就写成下面,若不是,替换成你自己的
vi /etc/vsftpd/usersconf/ftp1
增加下面的内容:设定主目录为/home/vsftpd/ftp1
[有所有权限]
local_root=/home/vsftpd/ftp1/#设置登录后禁锢的目录
anon_world_readable_only=no #开放下载权限
anon_upload_enable=yes #开放上传权限
anon_mkdir_write_enable=yes #开放创建目录的权限
anon_other_write_enable=yes #开放删除和重命名的权限
vi /etc/vsftpd/usersconf/ftp2
增加下面的内容:设定主目录为/home/vsftpd/ftp2
[只有上传下载的权限]
local_root