Linux |
您所在的位置:网站首页 › 匿名软件下载安装 › Linux |
FTP服务部署
ftp传输的机制: FTP通过21端口与Client端进行指令传输,通过20端口进行数据传输,根据工作模式的不同VSFTP分为主动模式和被动模式2种,大多是情况VSFTP是工作在被动模式下 主动模式: 1.Client端以一个大于1024的随机端口向FTP服务器的21号端口发出建立连接请求 2.Server端收到请求后,会以20端口主动去链接Client端的随机端口+1号端口,如果该端口被占用,则回去找随机端口+2号端口以此类推,直到找Client端空闲的端口 3.Client端与Server端通过20端口进行数据传输 1.Client端以一个大于1024的随机端口向FTP服务器的21号端口发出建立连接请求 2.Server端会通过21号端口给Client端发送一个类似(xyz,ab)的数值来告诉Client端打开的随机端口,同时打开xyz*256+ab端口 3.Client端再通过一个随机端口连接Server端的xyz*256+ab端口进行数据传输 而现实环境中无论是Client端还是Server端都是在防火墙后面,在主动模式下VSFTP会链接Client端的随机+1号端口,Client端显然不会将防火墙上所有随机端口开放;而在被动下问题同样的问题仍然会摆在Server端的防火墙面前,这就需要Server端的防火墙开启连接追踪功能,即放行与21号端口有关联的端口访问请求,这也就是为什么大部分情况下VSFTP是以被动模式工作。 vsftp部署: 环境描述: 服务端系统:CentOS7.5;内存2G;硬盘30G 客户端系统:Windows10 ; 软件:xftp客户端
注意:1)每一步的操作路径,不要混乱 2) 配置的详细介绍在本文章的最后部分展示 3)本次安装vsftpd以yum的形式进行部署 Vsftp的登陆类型: VSFTP提供了系统用户、匿名用户、和虚拟用户三种不同的登陆方式。所有的虚拟用户会映射成一个系统用户,访问时的文件目录是为此系统用户的家目录;匿名用户也是虚拟用户,映射的系统用户为ftp,详细信息可以通过man vsftpd.conf查看 1.安装vsftp [root@linuxMA ~]# yum -y install vsftpd* 2.使用rpm –qc 查看vsftpd的配置文件 [root@linuxMA ~]# rpm -qc vsftpd /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd /etc/vsftpd/ftpusers /etc/vsftpd/user_list /etc/vsftpd/vsftpd.conf #配置文件详解 /etc/logrotate.d/vsftpd 滚动日志配置文件 /etc/pam.d/vsftpd 认证文件,pam全称为Plugable Authentication /etc/vsftpd/ftpusers 控制登陆系统用户的机制,出现在该文件中的用户不允许使用ftp服务器,这是在/etc/pam.d/vsftpd中定义的 /etc/vsftpd/user_list 配合/etc/vsftpd/vsftpd.conf中的userlist_enable=YES和userlist_deny=YES|NO实现黑白名单此处需要注意的是:黑白名单的前提是/etc/vsftpd/vsftpd.conf配置文件中userlist_enable=YES,userlist_deny选项默认为YES(黑名单),即该文件中出现的用户不允许登陆VSFTP,就算手动添加userlist_deny=NO(白名单)即只允许该文件中出现的用户允许登陆VSFTP,在VSFTP启动时依然会去检查/etc/vsftpd/ftpusers文件并且禁止该文件中的用户登录 /etc/vsftpd/vsftpd.conf VSFTP主配置文件,所有的配置选项必须顶格写,配置文件中#后带空格的是说明,不带空格的是注释掉的配置选项 3.将cp命令将配置文件备份 [root@linuxMA ~]# cd /etc/vsftpd/ [root@linuxMA vsftpd]# ls ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh [root@linuxMA vsftpd]# cp vsftpd.conf vsftpd.conf.bak [root@linuxMA vsftpd]# ls ftpusers user_list vsftpd.conf vsftpd.conf.bak vsftpd_conf_migrate.sh 1)配置匿名用户 [root@linuxMA vsftpd]# vim vsftpd.conf write_enable=YES anon_umask=022 anonymous_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES (是否允许匿名用户有其他写入权(改名,删除,覆盖) dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES #开启vsftp服务,并查看是否启动成功[root@linuxMA vsftpd]# systemctl start vsftpd [root@linuxMA vsftpd]# netstat -lnpt |grep vsftpd tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 34531/vsftpd #登陆验证:
#修改权限: [root@linuxMA ~]# cd /var/ftp/ [root@linuxMA ftp]# ll 总用量 0 drwxr-xr-x 2 root root 6 8月 3 2017 pub [root@linuxMA ftp]# chown ftp:ftp pub/ [root@linuxMA ftp]# ll 总用量 0 drwxr-xr-x 2 ftp ftp 21 9月 16 10:16 pub
重点:改变根目录的属主,如果不改变的话,只能访问,其他权限不能生效。因为我们是以ftp用户的身份访问的,而pub默认的属主属组是root。
注意:(1)修改完配置之后需要重启完服务才能生效 (2)还需要从新从客户端登陆,否则修改后的配置看不到效果。 2)配置系统用户 1.创建测试用户zhangsan、lisi 密码都为“123456”[root@linuxMA ~]# useradd zhangsan [root@linuxMA ~]# useradd lisi [root@linuxMA ~]# echo "123456" |passwd --stdin zhangsan 更改用户 zhangsan 的密码 。 passwd:所有的身份验证令牌已经成功更新。 [root@linuxMA ~]# echo "123456" |passwd --stdin lisi 更改用户 lisi 的密码 。 passwd:所有的身份验证令牌已经成功更新。 2.修改配置文件 [root@linuxMA ~]# vim /etc/vsftpd/vsftpd.conf local_enable=YES local_umask=077 chroot_local_user=YES allow_writeable_chroot=YES write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES pam_service_name=vsftpd userlist_enable=YES userlist_deny=NO tcp_wrappers=YES
[root@linuxMA ~]# vim /etc/vsftpd/user_list //添加用户到白名单 zhangsan lisi [root@linuxMA ~]# systemctl restart vsftpd //重启服务 #登陆测试: ![]() #添加并进行测试 [root@linuxMA ~]# cd /home/zhangsan/ [root@linuxMA zhangsan]# touch zhangsan.txt 3)配置虚拟用户 1.建立虚拟FTP用户的帐号 [root@linuxMA ~]# useradd -s /sbin/nologin vu 2.创建虚拟用户文件 [root@linuxMA ~]# cd /etc/vsftpd/ [root@linuxMA vsftpd]# vim user wangwu 12345 maliu 12345 基数行代表用户名,偶数行代表密码 3. 通过db_load工具创建出Berkeley DB格式的数据库文件 [root@linuxMA vsftpd]# db_load -T -t hash -f user user.db [root@linuxMA vsftpd]# ls ftpusers user user.db user_list vsftpd.conf vsftpd.conf.bak vsftpd_conf_migrate.sh
db_load -T -t hash -f user user.db
-f 指定数据原文件 -T 允许非Berkeley DB的应用程序使用文本格式转换的DB数据文件 -t hash 读取文件的基本方法 4. 建立支持虚拟用户的PAM认证文件 [root@linuxMA vsftpd]# vim /etc/pam.d/vsftpd.vu 加入以下两行 auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/user account required /lib64/security/pam_userdb.so db=/etc/vsftpd/user 对应刚才生成user.db的文件 5.修改配置文件 [root@linuxMA vsftpd]# vim vsftpd.conf write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES userlist_enable=YES tcp_wrappers=YES allow_writeable_chroot=YES guest_enable=YES guest_username=vu pam_service_name=vsftpd.vu local_enable=YES local_umask=077 chroot_local_user=YES virtual_use_local_privs=YES user_config_dir=/etc/vsftpd/user_dir 6. 为用户建立独立的配置目录及文件 [root@linuxMA vsftpd]# mkdir /etc/vsftpd/user_dir [root@linuxMA vsftpd]# ls ftpusers user user.db user_dir user_list vsftpd.conf vsftpd.conf.bak vsftpd_conf_migrate.sh [root@linuxMA vsftpd]# cd /etc/vsftpd/user_dir [root@linuxMA user_dir]# vim wangwu local_root=/etc/vsftpd/data //虚拟用户数据的存放路径 #创建虚拟用户数据存放目录[root@linuxMA user_dir]# cd .. [root@linuxMA vsftpd]# mkdir data [root@linuxMA vsftpd]# chmod 777 data/ #重启服务[root@linuxMA ]# systemctl restart vsftpd 登陆测试: [root@linuxMA vsftpd]# cd data/ [root@linuxMA data]# touch wangwu.txt
重点:本地用户和虚拟用户不能同时登录、因为认证方式只有一种 本地是pam_service_name =vsftpd 虚拟是pam_service_name =vsftpd.vu
配置文件详解 #常用的匿名FTP配置项 anonymous_enable=YES 是否允许匿名用户访问 anon_umask=022 匿名用户所上传文件的权限掩码 anon_root=/var/ftp 设置匿名用户的FTP根目录 anon_upload_enable=YES 是否允许匿名用户上传文件 anon_mkdir_write_enable=YES 是否允许匿名用户允许创建目录 anon_other_write_enable=YES 是否允许匿名用户有其他写入权(改名,删除,覆盖) anon_max_rate=0 限制最大传输速率(字节/秒)0为无限制 #常用的本地用户FTP配置项 local_enable=YES 是否允许本地系统用户访问 local_umask=022 本地用户所上传文件的权限掩码 local_root=/var/ftp 设置本地用户的FTP根目录 chroot_list_enable=YES 表示是否开启chroot的环境,默认没有开启 chroot_list_file=/etc/vsftpd/chroot_list 表示写在/etc/vsftpd/chroot_list文件里面的用户是不可以出chroot环境的。默认是可以的。 Chroot_local_user=YES 表示所有写在/etc/vsftpd/chroot_list文件里面的用户是可以出chroot环境的,和上面的相反。 local_max_rate=0 限制最大传输速率(字节/秒)0为无限制 #常用的全局配置项 listen=YES 是否以独立运行的方式监听服务 listen_address=192.168.4.1 设置监听FTP服务的IP地址 listen_port=21 设置监听FTP服务的端口号 write_enable=YES 是否启用写入权限(上传,删除文件) download_enable=YES 是否允许下载文件 dirmessage_enable=YES 用户切换进入目录时显示.message文件 xferlog_enable=YES 启用日志文件,记录到/var/log/xferlog xferlog_std_format=YES 启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式 connect_from_port_20=YES 允许服务器主动模式(从20端口建立数据连接) pasv_enable=YES 允许服务器被动模式 pasv_max_port=24600 设置被动模式服务器的最大端口号 pasv_min_port=24500 设置被动模式服务器的最小端口号 pam_service_name=vsftpd 用户认证的PAM文件位置 (/etc/pam.d/vsftpd.vu) userlist_enable=YES 是否启用user_list列表文件 userlist_deny=YES 是否禁用user_list中的用户 max_clients=0 限制并发客户端连接数 max_per_ip=0 限制同一IP地址的并发连接数 tcp_wrappers=YES 是否启用tcp_wrappers主机访问控制 chown_username=root 表示匿名用户上传的文件的拥有人是root,默认关闭 ascii_upload_enable=YES 表示是否允许用户可以上传一个二进制文件,默认是不允许的 ascii_download_enable=YES 这个是代表是否允许用户可以下载一个二进制文件,默认是不允许的 nopriv_user=vsftpd 设置支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户 async_abor_enable=YES 设定支持异步传输功能 ftpd_banner=Welcome to Awei FTP servers 设定Vsftpd的登陆标语 guest_enable=YES 设置启用虚拟用户功能 guest_username=ftpuser 指定虚拟用户的宿主用户 virtual_use_local_privs=YES 设定虚拟用户的权限符合他们的宿主用户 user_config_dir=/etc/vsftpd/vconf 设定虚拟用户个人Vsftp的配置文件存放路径
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |