智一面gtalent详细讲解ftp文件传输协议

动手试一试:FTP环境搭建运维工程师在线模拟测试往期好文

vsftp

1、介绍

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。

2、特点

1、它是一个安全、高速、稳定的FTP服务器; 2、它可以做基于多个IP的虚拟FTP主机服务器; 3、匿名服务设置十分方便; 4、匿名FTP的根目录不需要任何特殊的目录结构,或系统程序或其它的系统文件; 5、不执行任何外部程序,从而减少了安全隐患; 6、支持虚拟用户,并且每个虚拟用户可以具有独立的属性配置; 7、可以设置从inetd中启动,或者独立的FTP服务器两种运行方式; 8、支持两种认证方式(PAP或xinetd/ tcp_wrappers); 9、支持带宽限制;

3、端口

默认端口:20(数据端口)、21(ftp命令端口)

4、工作模式

有两种工作模式:主动模式、被动模式

主动模式:FTP 服务器主动向客户端发起连接请求

被动模式:FTP 服务器等待客户端发起连接请求(FTP 的默认工作模式)

5、安装

安装vsftpd服务:

yum install vsftpd -y systemctl enable vsftpd.service

安装ftp命令:

yum install ftp -y

配置文件路径:

/etc/vsftpd/vsftpd.conf

关闭防火墙:

iptables -F service iptables save

如果需要保存现有iptables规则:

iptables-save > iptables.rules

还原规则:

iptables-restore < iptables.rules
百度搜索 智一面

动手试一试:FTP环境搭建运维工程师在线模拟测试往期好文

6、登录到ftp服务器的三种模式

1)匿名开放模式(最不安全)

1)权限参数 anonymous_enable=YES 允许匿名访问模式 anon_umask=022 匿名用户上传文件的 umask 值 anon_upload_enable=YES 允许匿名用户上传文件 anon_mkdir_write_enable=YES 允许匿名用户创建目录 anon_other_write_enable=YES 允许匿名用户修改目录名称或删除目录 2) 匿名开放模式统一账号:anonymous 密码为空 3)登进去之后的默认访问路径为/var/ftp,里面只有一个pub目录, cd到pub目录后创建一个文件夹,提示没有创建权限(/var/ftp只有管理员才有读写权限,所有者和所属组也是root) 修改/var/ftp/pub所有者为ftp chown -Rf ftp /var/ftp/pub 4) 在修改目录的所有者之后创建目录还是有报错 查看selinux中ftp相关策略 getsebool -a | grep ftp >>>ftpd_ _full_ _access --> off setsebool -P ftpd_full_access=on ==>-P参数让修改过的selinux策略永久生效

2)本地用户模式

1) 权限参数 anonymous_enable=NO 禁止匿名访问模式 local_enable=YES 允许本地用户模式 write_enable=YES 设置可写权限 local_umask=022 本地用户模式创建文件的 umask 值 userlist_enable=YES 启用“禁止用户名单”,名单文件为 ftpusers 和 user_list userlist_deny=YES 开启用户作用名单文件功能 2)/etc/vsftpd/user_list以及/etc/vsftpd/ftpusers文件相当于黑名单,只要在上了者名单的用户,就无法登录到ftp上去,包括root 所以,如果ftp登录账号在这两个文件里面存在,则从这两个文件里面删掉该ftp登录用户即可(需要确保两个文件里面都没有才行) 3)本地账号登录,可以用系统现有的账号,也可以新建一个账号 比如用wangyunan这个账号登录 ftp 192.168.32.101 输入账号:wangyunan 输入密码:1234 由于是普通家目录,所以登录上去之后是在/home/wangyunan/目录下 在selinux关闭的情况下,这时候是能登录进去的,并且能进行创建文件夹/复制粘贴等操作(如果不能,把ftp目录改成755) 在selinux开启的情况下,需要把ftp相关策略打开 getsebool -a | grep ftpd_ >>>...... >>>...... >>>ftpd_full_access --> off >>>.... setsebool -P ftpd_full_access=on

3)虚拟用户模式(最安全)

1) 创建用于进行 FTP 认证的用户数据库文件,其中奇数行为账户名,偶数行为密码 1) 创建前需要创建一个新的配置文件 cd /etc/vsftpd vim vuser.list ftp123 ftp123 zhonggd zhonggd2020 保存退出 2)使用 db_load 命令用哈希(hash)算法将原始的明文信息文件转换成数据库文件,并且降低数据库文件的权限(避免其他人看到数据库文件的内容),然后再把原始的明文信息文件删除。 db_load -T -t hash -f vuser.list vuser.db chmod 600 vuser.db rm -rf vuser.list(这一步根据实际需求来进行操作,也可以保留下来) 2)创建 vsftpd 服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户 为了方便管理 FTP 服务器上的数据,可以把这个系统本地用户的家目录设置为/var 目录 并且为了安全起见,我们将这个系统本地用户设置为不允许登录 FTP 服务器,这不会影响虚拟用户登录,而且还可以避免黑客通过这个系统本地用户进行登录 useradd -d /var/ftproot -s /sbin/nologin virtual ls -ld /var/ftproot/ chmod -R 755 /var/ftproot/ 3)建立用于支持虚拟用户的 PAM 文件 1)概念:PAM(可插拔认证模块)是一种认证机制,通过一些动态链接库和统一的 API 把系统提供的服务与认证方式分开 2)PAM设计思想:应用程序层、应用接口层(PAM API)、鉴别模块层 3) 新建一个用于虚拟用户认证的 PAM 文件 vsftpd.vu vim /etc/pam.d/vsftpd.vu auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser 4)利用 PAM 文件进行认证时使用的参数以及作用 anonymous_enable=NO 禁止匿名开放模式 local_enable=YES 允许本地用户模式 guest_enable=YES 开启虚拟用户模式 guest_username=virtual 指定虚拟用户账户 pam_service_name=vsftpd.vu 指定 PAM 文件 allow_writeable_chroot=YES 允许对禁锢的FTP 根目录执行写入操作,而且不拒绝用户的登录请求 >>>注意:如果vsftpd主配置文件里面没有对应的参数,则需要手动添加进去 >>>重启vsftp 5) 在 vsftpd 服务程序(/etc/vsftpd/vsftpd.conf)的主配置文件中通过 pam_service_name 参数将 PAM 认证文件的名称修改为 vsftpd.vu 配置文件重的pam_service_name=vsftpd,表示登录 FTP 服务器时是根据/etc/pam.d/vsftpd 文件进行安全认证的 现在需要修改pam_service_name参数项: pam_service_name=vsftpd.vu 6) 为虚拟用户设置不同的权限 允许zhonggd账户上床,创建,修改,查看文件 只允许ftp23查看文件 在vsftp主程序目录下创建一个目录 mkdir /etc/vsftpd/vusers_dir/ cd /etc/vsftpd/vusers_dir/ touch ftp123 vim zhonggd anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES 再次修改fvstp主配置文件中的user_config_dir参数(如果没有改参数,则在配置文件的最后手动添加进去): vim /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vusers_dir 重启vsftp 如果selinux处于开启状态,则需要配置ftp策略 getsebool -a | grep ftpd_ >>>...... >>>...... >>>ftpd_full_access --> off >>>.... setsebool -P ftpd_full_access=on

动手试一试:FTP环境搭建运维工程师在线模拟测试往期好文