FTP

机器初始检查

  • 防火墙
    • iptables -nvL 是否无规则
  • selinux
    • sestatus或者getenforce 是否处于disable状态

安装

  • yum install -y vsftpd

创建账号

  • useradd  ftpuser -s /sbin/nologin
    • 默认会在/home 目录下创建ftpuser的主目录
    • /sbin/nologin: shell命令,表示用户登录时所使用的shell。在这个例子中,FTP用户使用/sbin/nologin作为shell,这意味着本用户不能通过登录shell来登录系统,而只能通过FTP协议来访问系统。这是为了安全起见禁止 FTP 用户以交互模式登录系统
  • 设置密码
    • passwd ftpuser
  • 查看ftpuser详情
    • grep ftpuser /etc/passwd
      • ftpuser:x:1000:1000::/home/ftpuser:/sbin/nologin
        • ftpuser: 用户名,即FTP用户的登录名。
        • x: 用户口令,实际密码被存放在了/etc/shadow文件中。此处为了安全起见,将哈希值置于这里,以隐藏实际密码。
        • 1000: 用户ID,是分配给用户的唯一标识符。
        • 1000: 组ID,表示用户所属的初始组的组ID。
        • /home/ftpuser: 用户主目录,即FTP用户的家目录。
        • /sbin/nologin: shell命令,表示用户登录时所使用的shell。在这个例子中,FTP用户使用/sbin/nologin作为shell,这意味着本用户不能通过登录shell来登录系统,而只能通过FTP协议来访问系统。这是为了安全起见禁止 FTP 用户以交互模式登录系统。

配置文件

  • grep -v "^#" /etc/vsftpd/vsftpd.conf
    • anonymous_enable=NO:禁用匿名登录,只允许经过身份验证的用户登录。
    • local_enable=YES: 启用本地用户登录,即允许来自系统本地的用户登录FTP服务器。
    • write_enable=YES:启用写权限,即允许用户在FTP服务器中上传、创建和删除文件和目录。
    • local_umask=022:设置生成文件和目录时的默认权限掩码。
    • dirmessage_enable=YES:启用目录消息功能,允许定义特定目录的消息。
    • xferlog_enable=YES:启用传输日志记录功能,让vsftpd记录每个文件和目录传输的详细信息。
    • connect_from_port_20=YES:使用经典数据连接端口,即FTP数据连接使用20端口。
    • xferlog_std_format=YES:将传输日志格式化为传统的UNIX格式。
    • listen=NO:禁用独立模式,使用独立模式时,为FTP服务器分配IP地址和接口,但这个配置使用了IPv6,因此此选项不需要。
    • listen_ipv6=YES:启用IPv6监听。
    • pam_service_name=vsftpd:使用vsftpd配置的PAM服务。
    • userlist_enable=NO:禁用用户列表功能,即不限制访问FTP服务器的用户。
      • ftpusers:该文件包含需要被禁止访问FTP服务器的用户列表。如果某个用户的用户名列在这个文件中,该用户将不能通过FTP访问服务器。例如,root用户通常会被列入这个文件中以防止未授权的访问。该文件中每行一个用户名,注释以#号开头。
      • user_list:该文件包含FTP服务器的白名单或黑名单,即列在文件中的用户名有权或无权访问FTP服务器。配置文件中userlist_enable=YES是黑名单,如果是NO等于白名单。。如果user_list和ftpusers重复禁止一个用户访问,那么ftpusers的设置会优先生效。
    • local_root=/data/ftp:设置FTP服务器的根目录为/data/ftp,该目录仅限于本地用户访问。
    • chroot_local_user=YES: 启用用户级别的chroot,即每个用户被限制在其家目录下。
    • allow_writeable_chroot=YES:允许FTP用户在其根目录中创建可写目录,但是仅限于用户主目录。
  • cat /etc/pam.d/vsftpd
    • 这是一个存储在文件/etc/pam.d/vsftpd中的PAM(Pluggable Authentication Modules)认证模块配置文件,用于提供FTP服务器的用户身份验证。每一行配置代表不同的认证模块,行中的字段意义如下:

      • session optional pam_keyinit.so force revoke:初始化用户的密钥环,使其对所有已解锁的密钥和用户的密钥连带物(如 SSH 代理)拥有控制权,如果密钥之前已经被锁定,那么它们将被撤销。
      • auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed:检查用户是否在/etc/vsftpd/ftpusers文件中,如果在则拒绝访问。
      • auth required pam_shells.so:检查用户指定的shell是否可用。
      • auth include password-auth:使用password-auth文件中的认证模块, password-auth文件包含用于认证用户的模块,例如PAM提供的unix密码认证方式或LDAP认证方式。
      • account include password-auth:使用password-auth文件中的账户管理部分,用于验证用户是否为有效用户或是否已被禁用。
      • session required pam_loginuid.so:确保用户有一个loginuid,即会在系统日志文件中创建匹配的登陆ID来标注登录会话的开始和结束。
      • session include password-auth:使用password-auth文件中的会话管理部分,例如在用户登录时执行特定的用户设置。

启动FTP服务

  • systemctl start vsftpd

登录FTP服务

  • ftp x.x.x.x 
    • 输入ftpuser
    • 输入ftpuser用户的密码
      • 如遇报错如:530 Login incorrect.   /bin/ftp: Login failed.
        • 解决:echo /sbin/nologin  >>  /etc/shells
        • 原因:/etc/shells下默认只有/bin/sh、/bin/bash、/usr/bin/sh、/usr/bin/bash

结束

 

posted @ 2023-06-17 11:54  世界的我  阅读(127)  评论(0编辑  收藏  举报