ftp和vsftpd
简介
FTP是文件传输协议,用于在计算机之间传输文件。VSFTPD是一个非常安全的FTP守护进程,是一个用于UNIX系统的GPL许可的FTP服务器。它支持IPv6和SSL,可以处理虚拟IP配置、虚拟用户、独立或inetd操作、强大的每用户可配置性、带宽限制、源IP配置性、源IP限制、IPv6、加密支持等功能。
VSFTPD支持虚拟用户,这些用户在系统中不存在,因此更安全,因为一旦虚拟用户被入侵,入侵者只能使用FTP服务器,无法登录系统使用其他服务。VSFTPD还支持PAM(可插拔身份验证模块),可以通过PAM文件配置虚拟用户。
以下是VSFTPD的一些基本设置示例:
# 禁用匿名登录并允许本地用户登录并赋予写权限
anonymous_enable=NO
local_enable=YES
write_enable=YES
# 将用户限制在其主目录中
chroot_local_user=YES
# 拒绝或允许某些用户登录
userlist_deny=YES
userlist_file=/etc/vsftpd.denied_users
# 启用TLS/SSL/FTPS
ssl_enable=YES
要应用新的配置设置,需要重启vsftpd服务:
sudo /etc/init.d/vsftpd restart
ftp用法
要使用FTP命令在Linux上传输文件,您可以按照以下步骤操作:
- 使用ftp命令连接到FTP服务器。
- 登录到FTP服务器。
- 在远程系统上操作目录。
- 列出目录。
- 更改目录。
- 创建目录。
- 通过FTP下载文件。
- 通过FTP上传文件。
- 重命名文件。
- 删除文件。
- 关闭FTP连接。
以下是一个示例,演示如何使用ftp命令连接到FTP服务器并下载文件:
# 连接到FTP服务器
ftp <IP地址或域名>
# 输入用户名和密码登录到FTP服务器
Name (localhost:yourusername): <输入用户名>
Password: <输入密码>
# 下载文件
ftp> get file.txt
请注意,FTP不使用加密,因此不建议在Internet上使用FTP传输文件。对于更安全的文件传输,建议使用SFTP或FTPS,因为它们使用加密。
vsftpd用法
要在Linux上使用vsftpd,你需要按照以下步骤进行设置和配置:
- 更新APT软件包管理器并安装vsftpd:
sudo apt update
sudo apt install vsftpd
- 配置防火墙以允许FTP流量通过:
sudo ufw allow 20,21,990/tcp
sudo ufw allow 40000:50000/tcp
- 准备用户目录:
sudo adduser username
sudo mkdir /home/username/ftp
sudo chown nobody:nogroup /home/username/ftp
sudo chmod a-w /home/username/ftp
sudo mkdir /home/username/ftp/test
sudo chown username:username /home/username/ftp/test
- 配置vsftpd:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
sudo nano /etc/vsftpd.conf
在配置文件中添加以下内容:
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
pasv_enable=Yes
pasv_min_port=10000
pasv_max_port=11000
user_sub_token=$USER
local_root=/home/$USER/ftp
userlist_enable=YES
userlist_file=/etc/vsftpduserlist.conf
userlist_deny=NO
- 重启vsftpd服务以应用更改:
sudo systemctl restart vsftpd
- 设置SSL/TLS安全性:
sudo mkdir /etc/certs
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/certs/vsftpd.pem -out /etc/certs/vsftpd.pem
sudo nano /etc/vsftpd.conf
在配置文件中添加以下内容:
rsa_cert_file=/etc/certs/vsftpd.pem
rsa_private_key_file=/etc/certs/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
- 重启vsftpd服务以应用更改:
sudo systemctl restart vsftpd
这些步骤将帮助你在Linux上安装和配置vsftpd,以便进行FTP文件传输。
vsftpd优势
VSFTPD相对于其他FTP服务器的安全性优势主要体现在以下几个方面:
-
虚拟用户支持:VSFTPD支持虚拟用户,这些用户在系统中不存在,因此更安全。一旦虚拟用户被入侵,入侵者只能使用FTP服务器,无法登录系统使用其他服务。
-
支持PAM:VSFTPD支持Pluggable Authentication Modules(PAM),可以通过PAM文件配置虚拟用户,增强了身份验证的灵活性和安全性。
-
chroot限制:VSFTPD可以将用户限制在其主目录中,这样即使用户登录后也无法越权访问其他目录,增强了安全性。
-
用户访问控制:VSFTPD允许管理员拒绝或允许某些用户登录,通过userlist_file可以灵活控制用户访问权限。
-
TLS/SSL支持:VSFTPD支持加密通信,可以启用TLS/SSL/FTPS,确保数据在传输过程中的安全性。
总的来说,VSFTPD在设计上更注重安全性,提供了更多的安全功能和配置选项,使得FTP服务更加安全可靠。