前两天有个环境竟然需要用到FTP这种老古董。。
最开始用的SFTP,但由于是加密协议,传输速度略慢,没办法还是去部署了一下FTP。。
一开始用的vsftpd,后来发现这货想支持虚拟用户好麻烦就换成了pure-ftpd,整体上来说pure-ftpd还是要比vpsftpd好用很多,这里记录一下这两款FTP软件的部署过程以及Linux自带的SFTP配置。
首先是SFTP,先创建一个不允许登录shell的用户,同时也不创建这个用户的主目录:
useradd -M -s /sbin/nologin -U imlala
更改这个用户的密码:
passwd imlala
创建用户FTP目录:
mkdir -p /data/ftp/imlala
上级目录的权限给root:
chown -R root:root /data/ftp
用户FTP目录的权限给对应的用户:
chown -R imlala:imlala /data/ftp/imlala
然后编辑SSH配置文件
nano /etc/ssh/sshd_config
加入这个用户的chroot配置:
Match User imlala ChrootDirectory /data/ftp ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no
重启SSHD完成配置:
systemctl restart sshd
接下来是pure-ftpd的安装和配置:
apt -y update apt -y install pure-ftpd
使用systemd管理:
systemctl enable pure-ftpd systemctl start pure-ftpd
关闭PAM验证/关闭匿名用户登录:
echo "no" > /etc/pure-ftpd/conf/PAMAuthentication echo "yes" > /etc/pure-ftpd/conf/NoAnonymous
创建一个不允许登录shell的用户:
useradd -m -s /sbin/nologin -U pure-ftpd
创建FTP用户目录并给予正确的权限:
mkdir -p /home/pure-ftpd/imlala chown -R pure-ftpd:pure-ftpd /home/pure-ftpd/imlala
创建虚拟FTP用户:
pure-pw useradd imlala -u pure-ftpd -d /home/pure-ftpd/imlala
更新PureDB数据库信息:
pure-pw mkdb
Debian10的pure-ftpd需要做一下软连接才能使用pure-ftpd自带的PureDB:
cd /etc/pure-ftpd/auth ln -s ../conf/PureDB 60puredb
重启pure-ftpd完成配置:
systemctl restart pure-ftpd
最后写一下关于vsftpd的配置,其实我个人不推荐用这个,既然可以用更方便/强大/安全的pure-ftpd,那就不要去用不如它的东西了。。
安装vsftpd:
apt -y update apt -y install vsftpd
使用systemd管理:
systemctl start vsftpd systemctl enable vsftpd
创建FTP用户这块有两种方式,第一种使用nologin:
useradd -m -s /sbin/nologin -U imlala
第二种使用false:
useradd -m -s /bin/false -U imlala2
修改此用户的密码:
passwd imlala passwd imlala2
如果使用nologin,那么需要编辑vsftpd的pam文件:
nano /etc/pam.d/vsftpd
注释掉如下这行,允许没有有效shell的用户登录FTP
#auth required pam_shells.so
如果使用flase,那么不需要编辑vsftpd的pam,而是把/bin/false加入到/etc/shells,让其成为一个有效的shell:
echo "/bin/false" >> /etc/shells
备份配置文件:
cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
编辑配置文件:
nano /etc/vsftpd.conf
禁止匿名用户登录/启用文件上传
anonymous_enable=NO write_enable=YES
将用户锁定在自己的主目录内,不允许浏览上级目录:
chroot_local_user=YES allow_writeable_chroot=YES
最后在文件末尾加入下面的配置,启用允许登录FTP的用户列表
userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO
将之前新建的用户加入到允许登录FTP的列表中,完成配置:
echo "imlala" >> /etc/vsftpd.userlist echo "imlala2" >> /etc/vsftpd.userlist