部署FTP服务器

文章内容通过vsftpd服务,使用虚拟用户以被动模式部署FTP服务器。

一、安装vsftpd

使用包管理器安装vsftpd:

# yum -y install vsftpd

二、相关文件

vsftpd安装后,会包含以下三个文件:

# ls /etc/vsftpd/
ftpusers  user_list vsftpd.conf
  • ftpusers文件:文本文件,该文件中列出的用户无法登录FTP服务器;
  • user_list文件:文本文件。当配置文件中的userlist_enable=YES,userlist_deny=YES(默认)时,该文件中的帐号禁止登录FTP服务器;如果userlist_deny=NO,该文件中的帐号可以登录,其它账号无法登录;
  • vsftpd.conf文件:vsftpd主配置文件。

创建chroot_list文件:

# cat /etc/passwd > /etc/vsftpd/chroot_list

与chroot_list文件相关的配置项:

  • chroot_list_enable=YES:将用户的主目录限制在用户家目录中,必须设置为yes;
  • chroot_list_file=/etc/vsftpd/chroot_list:用户列表文件,需要手动创建;
  • chroot_local_user=YES:如果设为YES,则chroot_list_file中指定的用户不锁定主目录,其它用户锁定。如是设为NO,则chroot_list_file中指定的用户锁定主目录,其它用户不锁定。

三、配置vsftpd

3.1、vsftpd配置文件

编辑vsftpd的配置文件,vsftpd.conf文件:

# vim /etc/vsftpd/vsftpd.conf    #仅列出了部分配置项,原有的配置不动,需要修改的修改,没有的手动添加;
anonymous_enable=NO              #禁止匿名用户“anonymous”登录FTP服务器;
local_enable=YES                 #允许本地用户登录。因为虚拟用户也属于本地用户,这里要设置为YES;
write_enable=YES                 #开放写指令权限;
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list
pam_service_name=vsftpd.vu       #pam验证文件;
userlist_enable=YES              #禁止user_list文件列出的用户登录;
tcp_wrappers=YES                 #启用tcp_wrappers,通过在文件/etc/hosts.allow,/etc/hosts.deny中指定IP地址,限制访问;
guest_enable=YES                 #启用虚拟用户登录;
guest_username=virtual           #指定虚拟用户的用户名;
user_config_dir=/etc/vsftpd/virtualuser.conf/    #虚拟用户配置文件存放路径;
pasv_enable=YES                  #启用被动模式;
pasv_min_port=20000              #被动模式数据连接端口号范围。
pasv_max_port=21000

3.2、创建本地用户

# useradd -d /data/ftp_dir -s /sbin/nologin virtual
# ls /data/
ftp_dir

创建的本地用户的用户名,必须与vsftpd配置文件中“guest_username”配置项指定的用户名对应。

3.3、设置pam验证

# cat /etc/pam.d/vsftpd.vu
auth    required pam_userdb.so db=/etc/vsftpd/virtualuser
account required pam_userdb.so db=/etc/vsftpd/virtualuser

文件名“/etc/pam.d/vsftpd.vu”必须与vsftpd配置文件中“pam_service_name”配置项指定的文件名对应。

3.4、新建虚拟用户

# cat /etc/vsftpd/virtualuser.txt 
user1        #奇数行为用户名
123123       #偶数行为密码
# db_load -T -t hash -f /etc/vsftpd/virtualuser.txt /etc/vsftpd/virtualuser.db
# chmod 600 /etc/vsftpd/virtualuser.db
# mkdir /data/ftp_dir/user1
# chown virtual:virtual /data/ftp_dir/user1/

.db文件的文件名,必须与“/etc/pam.d/vsftpd.vu”文件中的db文件名对应。
添加新用户时,需要重复执行此处的命令。

3.5、虚拟用户配置

创建虚拟用户配置目录:

# mkdir /etc/vsftpd/virtualuser.conf

编辑虚拟用户配置,文件名即虚拟用户名:

# cat /etc/vsftpd/virtualuser.conf/user1
local_root=/data/ftp_dir/user1    #设置虚拟用户的家目录
write_enable=YES                  #虚拟用户拥有写权限
anon_umask=022
allow_writeable_chroot=YES 
anon_world_readable_only=NO       
anon_upload_enable=YES            #文件上传权限
anon_mkdir_write_enable=YES       #新建目录权限
anon_other_write_enable=YES       #重命名等其它写权限

3.6、重启vsftpd

# systemctl enable vsftpd    #将vsftp设置为开机自启动
# systemctl restart vsftpd   #重启vsftpd服务
# systemctl status vsftpd    #查看vsftpd服务状态

四、客户端连接FTP服务器

4.1、Linux服务器FTP客户端

对于Linux服务器,可以使用FTP客户端工具进行连接:

# yum -y install ftp
# ftp 192.168.18.133
Name (192.168.18.133:root): user1
Password:
230 Login successful.
ftp> ?    #查看可用命令
ftp> mkdir dir1
ftp> rmdir dir1
ftp> put anaconda-ks.cfg

4.2、Windows连接FTP

对于Windows,则需要先启用FTP客户端功能,见下图:
Windows开启FTP客户端功能
然后在“我的电脑”地址栏中输入FTP服务器地址,如下图:
连接FTP

五、虚拟用户权限控制(待检验)

当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限;
当virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO;
当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限(上传 下载 删除 重命名);
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,无其他权限;
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_upload_enable=NO时,虚拟用户只能下载文件,无其他权限;
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_upload_enable=YES时,虚拟用户只能上传和下载文件,无其他权限;
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,无其他权限;
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,无其他权限。

六、FTP主动和被动模式

  • 主动模式:
    客户端从一个任意的非特权端口N(N大于1024)连接到ftp服务器的控制端口,也就是21端口;
    同时客户端开始监听N+1端口,并通过命令通道发送FTP命令“port N+1”由21端口到FTP服务器;
    服务器会从数据端口,即20端口连接到客户端指定的数据端口(N+1);
    21端口接收来自客户端的连接;20端口主动向客户端发起连接。
  • 被动模式:
    在被动模式中,数据连接和控制连接都是由客户端发起的;
    客户端发起一个FTP连接时,会在本地开启两个非特权端口N,和N+1(N大于1024);
    第一个端口N连接FTP服务器的21端口。与主动模式不同,客户端不会发送PORT命令给服务器,而是提交PASV命令;
    服务器接收到PASV命令,在本地开启一个非特权端口P(大于1024),并发送PORT给客户端;
    客户端发起从本地端口N+1到服务器的端口P的连接来传送数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值