CentOS7安装和配置vsftpd

本文详细介绍vsftpd的基本概念及配置方法,包括主动模式与被动模式的工作原理、配置文件详解及实现步骤。同时提供了客户端工具lftp和wget的具体用法。

(1)vsftpd基本介绍

作用:实现文件共享

1)vsftpd两种模式

主动模式

所谓主动模式,指的是FTP服务器“主动”去连接客户端的数据端口来传输数据,其过程具体来说就是:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口(即tcp 21端口),紧接着
客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。然后服务器会从它自己的数据端口(20)“主动”连接到客户端指定的数据端口(N+1),这样客户端就可以和ftp服务器建立数据传输通道了

被动模式

所谓被动模式,指的是FTP服务器“被动”等待客户端来连接自己的数据端口,其过程具体是:当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N >1024和N+1)。第一个端口连接服务器的21端口,
但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。(注意此模式下的FTP服务器不需要开启tcp 20端口了)
2)vsftpd配置文件详解/etc/vsftpd/vsftpd.conf,

注意:vsftpd配置文件不允许有空格,使用vim编辑器set list查看是否有空格,如果有空格,服务无法启动

anonymous_enable=YES                    //是否允许匿名用户登录ftp,匿名用户的家目录是/var/ftp,只能下载文件
local_enable=YES                        //是否允许本地用户登录
write_enable=YES                        //是否允许写
local_umask=022                         //控制本地用户上传文件的默认权限,umask表示要减掉的权限
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES                              //监听端口21 
listen_port=21
pam_service_name=vsftpd
userlist_enable=YES                     //限制用户是否登录,下面有详解
userlist_deny=NO
tcp_wrappers=YES
use_localtime=YES                       //同步系统时间,保持上传文件的时间一致
pasv_enable=yes                         //开启被动模式,最小端口10240,最大端口20480
pasv_max_port=20480
pasv_min_port=10240                     
chroot_local_user=YES                   //锁定所有用户在自己的家目录
local_root=/ftp                         //指定所有本地用户的家目录
anon_root=/var/ftp                      //指定匿名用户的家目录
#anon_max_rate=500000                   //匿名用户限速500k
#local_max_rate=80000                   //本地用户限速为80k
#max_clients=500                        //ftp最大连接数
#max_per_ip=2                           //单个ip最大连接数,线程数
dual_log_enable=YES                     //开启vsftpd日志
vsftpd_log_file=/var/log/vsftpd.log

user_list文件详解

tom: 在/etc/vsftpd/user_list中
jim:不在user_list中
userlist_enable=YES, userlist_deny=YES          //tom: 拒绝登入 jim: 允许登录   user_list文件是黑名单
userlist_enable=YES, userlist_deny=NO           //tom: 允许登录 jim:拒绝登录    user_list文件是白名单
userlist_enable=NO,userlist_deny=NO             //tom: 允许登录 jim: 允许登录
userlist_enable=NO,userlist_deny=YES            //tom: 允许登录 jim: 允许登录

锁定用户在自己的家目录

方法一:锁定部分用户chroot_list_enable=YES   chroot_list_file=/etc/vsftpd/chroot_list 
方法二:锁定所有本地用户:chroot_local_user=YES 

(2)vsftpd实现

目标:实现所有系统用户登录ftp的默认家目录是都是/ftp,使用被动模式

1)关闭centos7的firewalld防火墙,使用iptables防火墙
systemctl stop firewald.service 
systemctl disable firewald.service
yum install iptables-services iptables-devel -y
systemctl enable iptables.service
systemctl start iptables.service
sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/sysconfig/selinux
setenforce 0
2)安装vsftpd
yum install vsftpd -y 
systemctl start vsftpd 
systemctl enable vsftpd 
3)创建用户
useradd tom 
echo "tom123" | passwd --stdin tom  
4)创建系统本地用户的家目录并授权
mkdir /ftp 
setfacl -m u:tom:rwx /ftp 
5)添加用户到user_list文件
echo "tom" >>/etc/vsftpd/user_list 
echo "anonymous" >>/etc/vsftpd/user_list 
6)给防火墙添加FTP访问转换支持模块
#vim /etc/sysconfig/iptables-config
IPTABLES_MODULES="ip_conntrack_ftp"
IPTABLES_MODULES="ip_nat_ftp"
7)给防火墙添加访问规则
iptables -I INPUT  1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I INPUT  1 -p tcp -m state --state NEW --dport 21 -j ACCEPT 
service iptables save
service iptables restart 
8)检测模式是否加载成功
#lsmod | grep ftp 
nf_nat_ftp             12770  0 
nf_conntrack_ftp       18638  1 nf_nat_ftp
nf_nat                 26787  1 nf_nat_ftp
nf_conntrack          133387  5 nf_nat_ftp,nf_nat,xt_conntrack,nf_conntrack_ftp,nf_conntrack_ipv4
9)修改vsftpd配置文件
#vim /etc/vsftpd/vsftpd.conf 
anonymous_enable=YES                    //是否允许匿名用户登录ftp,匿名用户的家目录是/var/ftp,只能下载文件
local_enable=YES                        //是否允许本地用户登录
write_enable=YES                        //是否允许写
local_umask=022                         //控制本地用户上传文件的默认权限,umask表示要减掉的权限
dirmessage_enable=YES
connect_from_port_20=YES                //主动模式
xferlog_std_format=YES
listen=YES                              //监听端口21 
listen_port=21
pam_service_name=vsftpd                 //使用pam认证
userlist_enable=YES                     //限制用户是否登录,下面有详解
userlist_deny=NO
tcp_wrappers=YES
use_localtime=YES                       //同步系统时间,保持上传文件的时间一致
pasv_enable=yes                         //开启被动模式,最小端口10240,最大端口20480
pasv_max_port=20480
pasv_min_port=10240                     
chroot_local_user=YES                   //锁定所有用户在自己的家目录
local_root=/ftp                         //指定所有本地用户的家目录
#anon_root=/var/ftp                     //指定匿名用户的家目录
allow_writeable_chroot=YES              //2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。解决方案    
dual_log_enable=YES                     //开启vsftpd日志
vsftpd_log_file=/var/log/vsftpd.log     
10)重启vsftpd
systemctl restart vsftpd 
11)测试验证

本地用户:可以上传文件,下载文件

12)注意
注意:以上方式适合nat环境目的地址nat,如果是1个公网全部映射成1个内网ip,需要添加以下配置
pasv_addr_resolve=yes
pasv_address=公网ip

(3)客户端工具

1)lftp
lftp 192.168.1.40                   \\匿名登录
lftp tom:tom123@192.168.1.40        \\使用用户名和密码登录
    ls 
    cd 
    get             \\下载单个文件
    mget            \\下载多个文件
    put             \\上传单个文件
    mput            \\上传多个文件
    mirror          \\下载目录
2)wget
wget ftp://192.168.1.40/hosts --ftp-user=tom --ftp-password=tom123              \\带用户名和密码下载ftp文件
wget ftp://192.168.1.40/hosts --ftp-user=tom --ftp-password=tom123 -P /tmp/     \\下载文件保存到/tmp目录下
wget ftp://192.168.1.40/hosts --ftp-user=tom --ftp-password=tom123 -O /tmp/host.txt     \\下载文件另存为/tmp目录下修改文件名为host.txt

转载于:https://www.cnblogs.com/lovelinux199075/p/9041307.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值