vsftpd配置

CentOS 7.3.1611

安装

yum install vsftpd

配置

  • 准备好ftp目录,假设有 jin、shui、huo 三个虚拟用户
mkdir /opt/ftp/
  • 准备好ftp用户
useradd ftp -s /sbin/nologin -d /opt/ftp 
  • 为虚拟用户jin、shui、huo创建目录
mkdir /opt/ftp/{jin,shui,huo}
chown -R ftp.ftp /opt/ftp
  • vim /etc/vsftpd.conf
# 禁止匿名登陆
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
# 允许本地用户(/etc/passwd)登陆
local_enable=YES
# 允许上传
write_enable=YES
# 上传文件权限掩码
local_umask=022
# 文件夹提示语,将文件夹中.message文件里的提示信息显示给登陆用户
dirmessage_enable=YES
# 开启上传/下载日志记录
xferlog_enable=YES
# 设置日志文件
xferlog_file=/var/log/xferlog
# 使用标准日志格式
xferlog_std_format=YES
# 确保使用20端口进行数据传输
connect_from_port_20=YES
# 禁止修改上传文件宿主
chown_uploads=NO
# 若允许修改上传文件宿主,指定文件宿主
# chown_username=someuser
# 设置vsftpd服务的宿主用户
nopriv_user=ftp
# 设置vsftpd登陆提示语
ftpd_banner=Welcome to My FTP service.
# 为所有用户启用 chroot 环境
chroot_local_user=YES
# 在chroot_local_user=YES情况下,chroot_list_file 定义了不受 chroot 限制的用户列表
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
# 不允许ls递归列出(-R 选项)
ls_recurse_enable=NO
# vsftpd 以standardalone模式运行并侦听在ipv4地址端口上
listen=YES
# 设置PAM服务下Vsftpd的验证配置文件名
pam_service_name=vsftpd
# 
userlist_enable=YES
tcp_wrappers=YES
# 配置虚拟用户目录及权限
guest_enable=YES
guest_username=ftp
virtual_use_local_privs=YES
local_root=/home/ftp/$USER
user_sub_token=$USER
# 限制最大客户端连接数
max_clients=50
# 限制单ip最大连接数
max_per_ip=10
# 修改默认端口21为2211
listen_port=2211
# 启动被动模式
pasv_enable=YES
# 限制被动模式下端口范围
pasv_min_port=49152
pasv_max_port=65534
# 使用本地时间
use_localtime=YES
  • 配置PAM认证
    • 创建用户密码文件

vim /etc/vsftpd/virtusers,格式为一行用户名一行密码

jin
123456
shui
123456
huo
123456

+ 生成用户数据文件

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

+ 修改PAM认证配置文件 /etc/pam.d/vsftpd

在最前面添加这两行

auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers


* 启动服务

systemctl start vsftpd


## 遇到的问题
> 500 OOPS: cannot locate user entry:mello
500 OOPS: 远程主机关闭连接。

  忘了给虚拟用户创建目录了,建好目录并修改目录宿主为ftp即可

> 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
500 OOPS: 远程主机关闭连接。

从 vsftpd 2.3.5 开始,用户被锁定的 chroot 目录不可写。这是为了防止安全漏洞。
允许上传的安全方法是保持 chroot 启用,并配置您的 FTP 目录。
如下所示,用户只能上传文件到用户根目录下的upload子目录里

配置文件里配置

local_root=/opt/ftp/user

命令行创建ftp目录

mkdir -p /opt/ftp/user/upload

安全考虑,根目录是不允许上传的,响应: 553 Could not create file.

chmod 550 /opt/ftp/user

chmod 750 /opt/ftp/user/upload


## iptables

需要加载 nf 内核模块

echo nf_conntrack_ftp > /etc/modules-load.d/nf_conntrack_ftp.conf
modprobe nf_conntrack_ftp

iptables 开放端口

iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 2211 -j ACCEPT
iptables -I INPUT -m state --state NEW -p tcp -m tcp --dport 49152:65534 --syn -j ACCEPT

你可能感兴趣的:(vsftpd配置)