vsftpd

  0.ftp  1.LocalUser  2.VirtualUser  3.ftps  FAQ  last  


0.ftp

数据传输通道的建立方式分为:主动模式(active)、被动模式(passive);

  • active模式的建立过程;
  1. 客户端发送自己的地址、端口给服务端;
  2. 客户端请求服务端传输数据;
  3. 服务端发起数据传输连接;
  4. 数据传输通道建立。
  • passive模式的建立过程;
  1. 客户端要求服务端进入被动传输模式;
  2. 服务端提供给客户端自己的地址、端口;
  3. 客户端发起数据传输请求;
  4. 数据传输通道建立。

1.系统用户

1.1.添加用户

    添加系统用户,禁止登录系统,设定用户目录权限。

[root@tri work]# useradd -d /data/vsftpd -s /sbin/nologin pub
[root@tri work]# passwd pub
[root@tri work]# chmod 500 /data/vsftpd
[root@tri work]# mkdir /data/vsftpd/upload
[root@tri work]# chown -R pub:pub /data/vsftpd
[root@tri work]# rm /data/vsftpd/.*
View Code

1.2.编辑vsftpd.conf

    编辑配置,设定白名单。

[root@tri work]# grep -v "^#" /etc/vsftpd/vsftpd.conf
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
#default is YES understand. passive mode
pasv_enable=YES
pasv_min_port=51000
pasv_max_port=52160
#pasv_address=0.0.0.0
connect_from_port_20=NO
xferlog_std_format=YES
chroot_local_user=YES
listen=YES
listen_ipv6=NO
#listen_port=21
#listen_address=0.0.0.0

pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES
[root@tri work]# cat /etc/vsftpd/user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
pub
View Code

2.VirtualUser

  • 虚拟用户访问ftp;
  1. vsftpd.conf,配置vsftpd;
    # Standalone mode
    listen=YES
    listen_address=0.0.0.0
    listen_port=10021
    max_clients=2000
    max_per_ip=50
    # Access rights
    anonymous_enable=NO
    local_enable=YES
    write_enable=NO
    anon_upload_enable=NO
    anon_mkdir_write_enable=NO
    anon_other_write_enable=NO
    # Security
    chroot_local_user=YES
    guest_enable=YES
    guest_username=virtual
    anon_world_readable_only=YES
    connect_from_port_20=YES
    hide_ids=YES
    pasv_min_port=30000
    pasv_max_port=39999
    pam_service_name=vsftpd
    # Features
    xferlog_enable=YES
    ls_recurse_enable=NO
    ascii_download_enable=NO
    async_abor_enable=YES
    # Performance
    idle_session_timeout=120
    data_connection_timeout=300
    accept_timeout=60
    connect_timeout=60
    anon_max_rate=1048576000
    View Code

    服务独立启动,监听10021端口;
    拒绝匿名用户,使用非匿名用户;
    启用虚拟用户,指定文件系统位置;
    关闭修改功能;

  2. login.db,创建虚拟用户信息库;
    db_load -T -t hash -f login.txt login.db
    View Code

    创建虚拟用户;

    useradd -d /opt/ftpsite -s /sbin/nologin virtual
    chmod 500 /opt/ftpsite
    View Code
  3. /etc/pam.d/vsftpd
    auth required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/login
    account required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/login
    View Code
  4. 此用户仅仅可以完成下载功能;
  • 多用户配置
  1. 在配置配件添加配置选项:
    user_config_dir=/etc/vsftpd/conf.d
    View Code
  2. 读取权限
    anon_world_readable_only=NO
    View Code
  3. 上传权限
    write_enable=YES
    anon_upload_enable=YES
    anon_world_readable_only=NO
    anon_mkdir_write_enable=YES
    View Code
  4. 删除权限
    write_enable=YES
    anon_upload_enable=YES
    anon_world_readable_only=NO
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    View Code

3.ftps


[root@tri work]# vi /etc/vsftpd/vsftpd.conf
下边三,默认为NO
ssl_enable=YES
ssl_tlsv=YES
ssl_sslv3=YES
下边俩,默认就是YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
下边壹,为默认值
rsa_cert_file=/usr/share/ssl/certs/vsftpd.pem
默认为none,默认时认为私钥在上边文件中
rsa_private_key_file=/etc/vsftpd/ssl/vsftpdKey.pem
View Code

FAQ

1.530

  没有指定验证模块“pam_service_name=vsftpd”,

[root@payqa1 work]# ftp localhost
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 3.0.2)
Name (localhost:root): pub
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp>

2.500 oops

  ftp的登用用了系统用户,但是该用户又放在了其他用户目录下。就一直这么报错

[root@localhost ~]# ftp localhost
Trying ::1...
ftp: connect to address ::1拒绝连接
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (localhost:root): pub
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/home/work/manager_file
Login failed.
ftp>
一切代码都是为了生活,一切生活都是调剂
原文地址:https://www.cnblogs.com/argor/p/7910869.html