Ubuntu FTP 服务器

参考链接:<http://www.krizna.com/ubuntu/setup-ftp-server-on-ubuntu-14-04-vsftpd/>

FTP 用于通过 TCP 网络在一台主机和另一台主机之间传输文件。本文说明如何在 Ubuntu 14.04 上搭建 FTP 服务器。

常见的 FTP 服务器软件包有三个:Pure-FTPd、vsftpd 和 ProFTPD。本指南使用 vsftpd,它轻量,并且攻击面更小。

在 Ubuntu 14.04 上搭建 FTP 服务器

步骤 1: 更新软件仓库。

sudo apt-get update

步骤 2: 安装 vsftpd 软件包。

sudo apt-get install vsftpd

步骤 3: 打开 /etc/vsftpd.conf 并进行以下修改。

取消注释这些行:

write_enable=YES
local_umask=022

取消注释这一行,防止用户访问其主目录之外的文件夹:

chroot_local_user=YES

在文件末尾添加以下行:

allow_writeable_chroot=YES

添加这些行以启用被动模式:

pasv_enable=Yes
pasv_min_port=40000
pasv_max_port=40100

步骤 4: 重启 vsftpd 服务。

sudo service vsftpd restart

步骤 5: FTP 服务器现在会监听 21 端口。使用以下命令创建一个用户。使用 /usr/sbin/nologin shell,以防止 FTP 用户访问普通的 shell 会话。

sudo useradd -m john -s /usr/sbin/nologin
sudo passwd john

步骤 6: 允许 nologin shell 登录访问。打开 /etc/shells,并在末尾添加这一行:

/usr/sbin/nologin

现在尝试使用该用户名通过 21 端口连接到 FTP 服务器,可以使用 WinSCPFileZilla 客户端。确认该用户无法访问主目录之外的文件夹。

%%LAZYBLOG_INLINE_0%%

在 21 端口使用明文 FTP 存在显著的安全风险。强烈建议改用 SFTP。下面继续介绍 SFTP 配置。

安全 FTP(SFTP)

SFTP 通常称为“Secure FTP”,使用 SSH 文件传输协议。它需要 openssh-server 软件包。如果尚未安装,请安装它:

sudo apt-get install openssh-server

步骤 7: 为 FTP 用户创建一个名为 ftpaccess 的新组。

sudo groupadd ftpaccess

步骤 8: 编辑 /etc/ssh/sshd_config

找到并注释掉这一行:

Subsystem sftp /usr/lib/openssh/sftp-server

在文件末尾添加这些行:

Subsystem sftp internal-sftp
Match group ftpaccess
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

步骤 9: 重启 SSH 服务。

sudo service ssh restart

步骤 10: 创建用于 SFTP 访问的用户时,请遵循以下步骤。

创建用户 john,将其加入 ftpaccess 组,并使用 /usr/sbin/nologin shell:

sudo useradd -m john -g ftpaccess -s /usr/sbin/nologin
sudo passwd john

更改主目录的所有者:

sudo chown root /home/john

在主目录内创建一个可写文件夹,并更改该文件夹的所有者:

sudo mkdir /home/john/www
sudo chown john:ftpaccess /home/john/www

现在尝试使用 SFTP 通过 22 端口连接到服务器。确认用户可以将文件上传到 www 目录,并且无法访问主目录之外的文件夹。

%%LAZYBLOG_INLINE_0%%

如果你想同时使用 FTP 和 SFTP,创建用户时请遵循步骤 10。对于现有用户,将其移动到 ftpaccess 组,并创建具有正确所有权的文件夹结构:

sudo usermod john -g ftpaccess -s /usr/sbin/nologin
sudo chown root /home/john
sudo mkdir /home/john/www
sudo chown john:ftpaccess /home/john/www

现在 john 可以同时使用 FTP 和 SFTP 将文件上传到 www 文件夹。

Leave a Reply