`
desert3
  • 浏览: 2160626 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

CentOS下vsftp设置、匿名用户&本地用户设置、PORT、PASV模式设置

 
阅读更多
1, 安装:yum install vsftpd
2, 设置vsftp开机自启动:chkconfig --level 35 vsftpd on
3, 启动vsftpd守护进程:Service vsftpd start
4, 开启iptables防火墙21端口-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT ,然后重启service iptables restart  
5, 截止到现在:
  • a. Vsftpd配置文件:/etc/vsftpd/vsftpd.conf
  • b. 系统用户ftp(默认无密码)已经可以作为vsftp的匿名用户来使用。
  • c. 从/etc/passwd中的值ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin可以看出:根目录 /var/ftp/, 禁止控制台登陆,也就是该用户只能进行ftp访问。
  • d. anon_upload_enable=YES,anon_mkdir_write_enable=YES被注释掉,即默认匿名用户不可上传文件,也不可以在服务器上创建目录。
  • e. port_enable=YES,即默认情况下,FTP  PORT主动模式被启用
  • f. connect_from_port_20=YES,即默认情况下,FTP PORT主动模式进行数据传输时使用20端口(ftp-data)。YES使用,NO不使用。
  • g. ftp_data_port=port number,设定ftp数据传输端口(ftp-data)值。默认值为20。此参数用于PORT FTP模式。
  • h. pasv_enable=YES,即默认情况下,FTP  PASV被动模式被启用。但是由于防火墙设置的原因,默认情况下,FTP PASV被动模式使用FTP会失败。
  • i. listen=YES,即默认情况下,vsftpd以单例模式监听IPv4 socket端口。该命令不能和listen_ipv6同时使用。因此如果要同时启用对IPv4和IPv6的支持的话,必须同时运行2份vsftpd,每份vsftpd包含自己的配置文件(一个监听IPv4,一个监听IPv6)
  • j. windows cmd下使用命令 ftp serverip,然后在弹出的提示画面中输入用户名“ftp”就能正常登录到ftp服务器。执行命令ls,从服务器端返回的如下信息:“200 PORT command successful. Consider using PASV.150 Here comes the directory listing.”中我们就可以看出,这个ftp连接执行在PORT主动模式
  • k. 使用Winscp、FileZilla连接时,会发现ftp用户能正常登录,但是list命令执行超时。这是因为默认情况下,这些客户端的FTP都运行在PASV被动模式下,而vsftp服务器由于没有对PASV端口范围及相应的iptables防火墙做设置,数据传输的连接被阻塞导致命令执行超时。当客户端强制启用PORT主动模式连接后,就能正常使用ftp功能。
  • l. FileZilla强制启用FTP PORT主动访问方式:Edit->Setting->Connection->Ftp->Transfer Mode->Select “Active” and uncheck “Allow fall back to other transfer mode on failure”
  • m. Winscp强制启用FTP PORT主动访问方式:在Winscp的login登录界面中,选择ftp,然后勾上“Advanced options”,选中左边导航中的Connection栏目,然后在弹出画面上不选中“Passive Mode”。

6, 匿名用户上传下载
  • a. anonymous_enable=YES
  • b. anon_upload_enable=YES
  • c. anon_mkdir_write_enable=YES
  • d. 目录权限设置:修改/var/ftp/pub的目录权限为744,并把目录的owner和group都改成ftp(ftp用户必须有可执行x权限,否则在执行ftp命令CWD pub时,会报错误:Response: 550 Failed to change directory. Error: Failed to retrieve directory listing。匿名用户下载是使用的是nobody这个用户,所以权限相应的other这个位置要有R权限才能被下载。)
  • e. chown ftp.ftp /var/ftp/pub
  • f. chmod 744 /var/ftp/pub
  • g. /var/ftp使用默认的权限755以及默认的owner、group:root
  • h. 如下关闭selinux,否则上传文件时报错误553 Could not create file. Error: Critical file transfer error。也可以不关闭selinux,在selinux中设置ftp例外,参考:
  • i. /etc/selinux/config文件中的SELINUX=enforcing,改成SELINUX=permissive,机器reboot(如果不想重启机器,也可以执行命令setenforce 0;setenforce 1 设置SELinux 成为enforcing模式;setenforce 0 设置SELinux 成为permissive模式。)
  • j. 上传后的文件不能被直接下载,如果需要可以直接被下载,要设置匿名用户上传文件时的掩码anon_umask=073
  • k. 匿名用户重命名,删除权限设置anon_other_write_enable=YES
  • l. no_anon_password=YES   #匿名用户登录时不询问口令

7, 由于默认情况下,匿名ftp用户的PASV模式访问被防火墙阻塞,启用PASV模式访问
  • a. pasv_enable=YES,即默认情况下,FTP  PASV被动模式被启用。
  • b. pasv_min_port=30000 ,设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意(1024 – 65535端口)。默认值为0。把端口范围设在比较高的一段范围内,比如30000-31000。
  • c. pasv_max_port=31000
  • d. 防火墙设置:-A INPUT -m state --state NEW -m tcp -p tcp --dport 30000:31000 -j ACCEPT   ######同时可以用参数-s 192.168.0.0/16来限制客户端IP范围,以这种方式增加安全性
  • e. netstat -ap | grep ftp 查看服务器端ftp数据传输时使用的端口
  • tcp   1455572  0 192.168.0.1:30661    192.168.0.2:63731         ESTABLISHED 1746/vsftpd(下载)
    tcp        0  57032 192.168.0.1:30886    192.168.0.2:63750         ESTABLISHED 1785/vsftpd(上传)

8,禁用匿名用户,启用系统本地用户
  • a. anonymous_enable=NO  禁止匿名用户登录 local_enable=YES 允许本地用户登录
  • b. write_enable=YES  #本地用户可以上传(全局控制) 删除,重命名
  • c. local_umask=022 #本地用户上传文件的umask,上传文件默认权限644(666-022),上传文件夹默认权限755(777-022)
  • d. 关闭selinux,否则上传文件时报错误553 Could not create file. Error: Critical file transfer error。也可以不关闭selinux,在selinux中设置ftp例外,参考:
  • e. userlist_enable=yes    启用/etc/vsftpd/user_list列表
  • f. userlist_deny=no    只允许/etc/vsftpd/user_list列表中的用户登录(ftpusers限制仍然起作用)
  • g. chroot_list_enable=NO,chroot_local_user=YES,所有的用户均不能切换到其他目录。
  • h. useradd –d /ftp –s /bin/false prj  添加本地系统的ftp用户prj,并设置用户home目录,禁止shell登录,设置密码passwd prj。默认创建的/ftp目录owner是prj,权限700。
  • i. 把用户prj加到user_list列表文件中
  • j. user_config_dir=/etc/vsftpd/userconf #设置用户的单独配置文件,用哪个帐户登陆就用哪个帐户命名,实现不同用户不同权限(1,文件格式、属性和主配置文件一致 2,文件名没有.conf后缀  3,这里的属性会覆盖主配置文件相应的属性 4,并不是所有属性放这里都会起作用)
  • k. 建立目录/etc/vsftpd/userconf,并创建ftp用户名想对应的文件prj,在文件中用local_root属性指定prj用户登录后进入的目录。还可以设置属性:cmds_allowed,local_umask=022, local_max_rate限速等
  • l. 编辑/etc/pam.d/vsftp文件,注释掉auth required pam_shells.so(这个语句的意思是只有包含shell的用户才能登录)
  • m. ftpd_banner定制ftp登录时的欢迎信息
  • n. max_clients=100 #FTP的最大连接数
  • o. max_per_ip=5    #每IP的最大连接数
  • p. vsftpd服务器重启

9,禁用匿名用户,启用虚拟FTP用户
  • a. anonymous_enable=NO  禁止匿名用户登录
  • b. local_enable=YES 允许本地用户登录,虽然虚拟用户不是操作系统用户,但是最终还是关联到虚拟宿主用户身上,因此,这里属性还是要设置为yes
  • c. pam_service_name=vsftpd #设置PAM使用的名称,默认值为/etc/pam.d/vsftpd。
  • d. guest_enable=YES  启用虚拟用户登录
  • e. guest_username=ftp #这里设置虚拟用户的宿主用户。默认值为ftp。
  • f. virtual_use_local_privs=YES/NO #当该参数激活(YES)时,虚拟用户与其宿主用户有相同的权限。 当此参数关闭(NO)时,虚拟用户与匿名用户有相同的权限。默认情况下此参数是关闭的(NO)。
  • g. 用db_load生成虚拟用户数据库
  • h. 修改pam.d下的vsftpd文件,修改用户认证方式
  • i. …

10,ssl加密的vsftp(vsftp with OpenSSL)参考:加密ssl vsftp、ftp隐式加密&显式加密
11,vsftp配置用户磁盘配额(磁盘限额参考:Virtualbox下为CentOS增加新硬盘、Linux添加新硬盘、vsftp配置用户磁盘配额(磁盘限额)
// 匿名用户设置
anonymous_enable=YES
no_anon_password=YES
anon_root=/var/ftp
anon_umask=073
anon_max_rate=
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable

chown_uploads
chown_username

// 本地用户设置
anonymous_enable=NO
write_enable=YES
userlist_enable=yes
userlist_deny=no
chroot_list_enable=NO
chroot_local_user=YES
user_config_dir=/etc/vsftpd/userconf

// 本地用户设置 - 各用户独立设置属性
local_root
local_umask=022
local_max_rate

vsftpd日志:默认情况下,vsftp在/var/log/xferlog文件中记录Wu-ftpd格式的日志(它会记录上传和下载的动作)。通过设置dual_log_enable和log_ftp_protocol,可以启用vsftp自己的日志,默认日志文件/var/log/vsftpd.log,其中会记录所有的ftp命令日志看到的内容和FTP客户端FileZilla中显示的内容一致!所以调试错误的时候,貌似也没有开启的必要。ftp登录或者操作出问题的时候,主要看返回的错误代码是多少,然后找可能的原因。如553 Could not create file.
  • xferlog_enable=yes/no //是否启用 xferlog 日志格式
  • xferlog_std_format=yes/no //是否采用标准格式记录日志
  • xferlog_file=/path/to/logfile //xferlog 日志文件所在位置,默认为/var/log/xferlog
  • dual_log_enable=yes/no //是否采用VSFTPd自己的日志记录方式
  • log_ftp_protocol=yes/no //是否记录所有的ftp命令日志
  • syslog_enable=yes/no   //是否将日志信息写入系统日志/var/log/messages中

常见ftp错误代码:
  • Connect 连接被拒绝: 可能原因是vsftpd服务没被启动
  • 530 Permission denied: 可能原因是userlist_enable=YES并且/etc/vsftpd/user_list中包含要登录的ftp用户名   即user_list禁止了该用户的登录、或者可能是没有指定userlist_file=/etc/vsftpd/user_list
  • 530 Login incorrect: 可能原因是登录的ftp用户名被包含在禁止登录列表/etc/vsftpdftpusers中 | 同时要确保用户名、密码是正确的 | 也可能是配置文件中少了一行pam_service_name=vsftpd |  检查/etc/pam.d/vsftpd 文件里面lib的路径 | 编辑/etc/pam.d/vsftp文件,注释掉auth required pam_shells.so(这个语句的意思是只有包含shell的用户才能登录)
  • 530 Non-anonymous sessions must use encryption.:服务器的强制,非匿名用户必须使用加密连接
  • 500 OOPS: cannot open user list file:可能原因是不存在文件“/etc/vsftpd/user_list”或文件中不存在该帐户,解决:解决: cho username >> /etc/vsftpd/user_list
  • 500 OOPS: cannot open chroot() user list file | 500 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list:可能原因是不存在文件“/etc/vsftpd/chroot_list”
  • 500 OOPS: missing value in config file: 可能原因是配置文件“=”等号前值有问题,或只有一个空格
  • 500 OOPS: bad bool value in config file: 可能原因是配置文件=”等号后值有问题
  • 500 OOPS: unrecognised variable in config file: 可能原因是参数前有空格
  • 500 OOPS: chdir, 500 OOPS: child died, 500 OOPS: chroot:可能原因是用户主目录没有权限或没有主目录,或者还是selinux影响的
  • 500 OOPS: vsftpd: both local and anonymous access disabled!匿名用户和本地用户登录都被禁用
  • GnuTLS error -12: A TLS fatal alert has been received.:received.:Filezilla最新版本认为vsftpd默认的加密算法"DES-CBC3-SHA"不够安全而拒绝连接导致的。有两种办法解决该问题,一是降级你的Filezilla客户端版本到3.5.3以下,二是更改服务器端vsftpd的配置。增加属性:ssl_ciphers=HIGH
  • ECONNREFUSED - Connection refused by server: 当启用隐式ssl连接,用filezilla、winscp客户端连接时报错,因为vsftpd此时服务器端的端口还是21,但是客户端确以990来连接。修改客户端连接时使用的参数或者服务器的通过参数listen_port设置端口为990,问题解决
分享到:
评论

相关推荐

    CentOS6.3安装配置vsftp

    1. **禁用匿名访问**:设置 `anonymous_enable` 为 `NO`,确保只有经过认证的用户才能访问 FTP 服务器。 ```ini anonymous_enable=NO ``` 2. **启用本地用户访问**:设置 `local_enable` 为 `YES`,允许系统上...

    Centos搭建vsftp服务器的方法

    总结,通过以上步骤,我们不仅安装了VSFTP服务器,还配置了安全性设置,如禁用匿名访问、限制用户在自己的主目录内操作以及设置了被动模式端口。此外,我们还创建了一个用户并测试了FTP服务。确保始终关注安全性和...

    vsftp服务器配置

    - `pasv_min_port`和`pasv_max_port`:设置被动模式的端口范围。 - `user_config_dir=/etc/vsftpd/vconf`:虚拟用户配置文件的路径。 - `pam_service_name=vsftpd`:PAM认证模块的配置文件名。 - `userlist_...

    centos7上安装与卸载vsftpd服务器

    6. **被动模式**:启用被动模式并设置被动模式下的端口号范围。 ```ini pasv_enable=YES pasv_min_port=38001 pasv_max_port=38005 ``` 7. **反向域名解析**:关闭反向域名解析以提高性能。 ```ini reverse_...

    CentOS6.3下安装VSFTP服务

    总结来说,安装和配置VSFTP在CentOS 6.3上的过程涉及多个步骤,包括安装软件包、配置防火墙规则、修改VSFTP配置文件以及创建和设置用户权限。通过这些步骤,我们可以创建一个安全且功能齐全的FTP服务器,供用户验证...

    Linux vsftp配置手册

    - **数据连接**:`connect_from_port_20=YES`启用标准FTP数据连接,`pasv_enable=YES`允许被动模式连接,适用于防火墙后的环境。 - **虚拟用户和组**:配置虚拟用户需要结合PAM和口令文件,涉及多个步骤,包括创建...

    vsftp+ssl配置文档

    ### vsftp+ssl配置文档详解 #### 一、前言 在网络安全日益受到重视的今天,采用加密方式传输数据已经成为一种普遍做法。FTP作为一种常用的数据传输协议,在安全性方面也不断得到加强。通过与SSL/TLS协议相结合,...

    vsftpd-configuration.rar_vsftp_vsftpd

    2. 对匿名用户设置严格的权限,避免他们访问敏感目录。 3. 定期更新Vsftpd到最新版本,以获取安全补丁。 4. 使用PAM和Chroot机制增强用户隔离。 通过以上配置,你可以根据需求构建一个安全且易于管理的FTP服务器...

    CentOS 6.8 安装vsftpd的方法步骤

    6. `pasv_min_port`和`pasv_max_port`,设置被动模式端口范围,如61001到62000。 7. 配置防火墙规则,允许FTP服务的端口通过,如60001-61000和20、21。 完成配置后,需要更新防火墙设置,使用`sudo service ...

    vsftpd FTP服务器架设

    此外,`pasv_enable=YES`和`pasv_min_port`及`pasv_max_port`设置可以确保FTP在防火墙后的连接性,通过设置PASV模式的数据端口范围。 为了进一步提高安全性,可以禁用不安全的命令,如`write_enable=NO`关闭写权限...

    centos7搭建vsftpd教程

    例如,禁止匿名用户登录(`anonymous_enable=NO`),允许本地用户写入文件(`write_enable=YES`),并设定用户根目录(`chroot_local_user=YES`)。完整的配置文件内容如下: ```conf anonymous_enable=NO write_...

    Centos7安装配置FTP服务器(vsftpd)

    例如,设置欢迎消息、本地目录、匿名用户行为等。下面是一些关键配置: 1. 设置本地目录指向创建的`ftpfile`: ```bash local_root=/ftpfile/ ``` 2. 允许匿名用户登录: ```bash anonymous_enable=YES ``` ...

    Linux服务器搭建实验报告模板

    3. 设置FTP服务器的匿名用户权限,禁止删除文件。 4. 创建并配置普通用户账户,赋予写权限。 5. 配置虚拟用户,确保只有特定用户能访问特定目录。 6. 在客户端进行连接测试,验证FTP服务的正常运行。 通过这个实验...

    Linux安装vsftpd组件.doc

    在Linux系统中,VSFTPD (Very Secure FTP Daemon) 是一款...例如,你可以禁止匿名访问,只允许特定用户连接,或者限制用户的上传下载速度等。通过熟练掌握VSFTPD的配置,你将能够构建出一个既安全又高效的FTP服务器。

    vsftp.rar_Unix_Linux_

    3. **PASV模式**:通过设置`pasv_enable=YES`和合适的`pasv_min_port`与`pasv_max_port`,可以强制客户端在更安全的被动模式下进行连接。 **用户管理** VSFTP可以集成到系统用户数据库,如`/etc/passwd`。你也可以...

    VSFTPD+NGINX搭建图片服务器

    pasv_min_port=30000 pasv_max_port=30999 ``` 之后,同样更新iptables规则: ``` -A INPUT -m state --state NEW -p tcp -m tcp --dport 30000:30999 -j ACCEPT ``` 重启VSFTPD服务: ``` [root@bogon~]#...

Global site tag (gtag.js) - Google Analytics