Linux服务-vsftp

来源:互联网 发布:清华大学网络 编辑:程序博客网 时间:2024/05/20 20:02

概述

vsftp 全称Very Secure FTP,是FTP服务的一种。FTP会话包含了两个通道,控制通道和数据通道。它有两张工作模式:主动模式和被动模式

主动模式

FTP客户端连接到服务器的21号端口,发送用户名和密码,客户端随机开放一个(1024以上)端口,发送PORT命令到FTP服务器,告诉服务器客户端采用主动模式开放端口;FTP服务器收到PORT命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据,原理图如下:
这里写图片描述

被动模式

工作原理:FTP客户端连接到FTP服务器的21号端口,发送用户名,密码,PASV命令道FTP服务器服务器开放一个(1024以上)的端口,并把这个端口告诉客户端,客户端再连接到这个开服的端口进行数据传输,原理图如下:
这里写图片描述

安装

安装环境CentOS 6.5

服务端

yum -y install vsftpd

客户端

yum -y install vsftp lftp

启动

/etc/init.d/vsftpd startchkconfig vsftpd on

注意: 在用netstat -antup | grep ftp 查看不到20端口是因为这个端口没有数据通信。

用客户端访问测试

[root@xs171 ~]# lftp 192.168.0.170lftp 192.168.0.170:~> ls              drwxr-xr-x    2 0        0            4096 May 11 06:17 pub

配置文件

/etc/vsftpd/vsftpd.conf: 核心配置文件
/etc/vsftpd/user_list: 白名单,指定使用ftp的用户列表
/etc/vsftpd/ftpusers:黑名单,指定那些用户不能访问ftp


Demo

创建两个用户:ftpuser1,ftpuser2 并将用户锁定在/var/ftp/appdata

添加用户

useradd -s /sbin/nologin ftpuser1useradd -s /sbin/nologin ftpuser2echo "123456" | passwd --stdin ftpuser1echo "123456" | passwd --stdin ftpuser2

编辑配置文件

vim /etc/vsftpd/vsftpd.conf

#禁止匿名用户访问anonymous_enable=NO允许匿名用户访问#允许本地用户登录local_enable=YES#设置用户根目录local_root=/var/ftp/appdata#激活chroot 功能chroot_list_enable=YES#设置锁定用户文件,文件存放要锁定的用户名chroot_list_file=/etc/vsftpd/chroot_list

建立数据存储目录

mkdir /var/ftp/appdatachown ftp.ftp /var/ftp/appdatachmod -R o+w /var/ftp/appdata

建立要锁定的用户文件

建立要锁定的用户文件,并把ftpuser1,和ftpuser2添加到文件中,每个用户名占用一行。

touch /etc/vsftpd/chroot_listvim /etc/vsftpd/chroot_list

注意:如何要想在ftp服务器上删除文件要用rmdir 命令,rm 不是ftp上的命令。


FTP 虚拟账号

创建FTP虚拟账号,账号normaluser可以下载文件,vipuser可以上传和下载

创建用户数据库

先建立用户文本文件vsftpd_virtualuser.txt。并添加用户normaluser 和vipuser

创建文本文件

vim /etc/vsftpd/vsftpd_virtualuser.txt内容如下,用户和密码独立成行normaluser12345vipuser12345

生成数据库文件

用db_load 命令生成db文件,这样可以由FTP服务直接调用

rpm -qf `which db_load`db_load -T -t hash -f /etc/vsftpd/vsftpd_virtualuser.txt /etc/vsftpd/vsftpd_virtualuser.db//文本文件此时可以删除rm -rf /etc/vsftpd/vsftpd_virtualuser.txt

参数说明:

  • -T 允许程序将文本文件转译载入数据库。
  • -t hash 使用hash 码加密

修改数据库文件访问权限

数据库文件保存着账号的密码信息,为了防止非法用户盗取,应设为只对root用户可读可写,即600

chmod 600 /etc/vsftpd/vsftpd_virtualuser.db

配置PAM 文件

为了使服务器能够使用数据库文件,对客户端进行身份验证,需要调用系统的PAM(Plugable Authentication Module)模块。PAM 模块配置文件的路径为 /etc/pam.d/目录,此目录下面保存着大量与认证有关的配置文件,并以服务名称命名。
修改vsftpd 对应的PAM 配置文件/etc/pam.d/vsftpd。

#%PAM-1.0#session    optional     pam_keyinit.so    force revoke#auth       required     pam_listfile.so item=user #sense=deny file=/etc/vsftpd/ftpusers onerr=succeed#auth       required     pam_shells.so#auth       include      password-auth#account    include      password-auth#session    required     pam_loginuid.so#session    include      password-authauth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualuseraccount required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualuser

设置共享目录

对于普通用户和vip用户需要设置不同的权限,所以可以将两个账号的目录进行隔离,控制用户文件的访问。账号normaluser 对应的主目录为/var/ftp/share, 账号vipuser对应的主目录为/var/ftp/vip

添加用户

useradd -d /var/ftp/share normaluser useradd -d /var/ftp/vip vipuser 

修改权限

share 目录为可读执行rx,vip目录为可读可写执行rwx。

chmod -R 500 /var/ftp/share/chmod -R 700 /var/ftp/vip/

建立配置文件

### 修改vsftpd.conf 主配置文件

anonymous_enable=NOlocal_enable=YESchroot_local_user=YESpam_service_name=vsfptd#设置虚拟账号的主目录为vuserconfiguser_config_dir=/etc/vsftpd/vuserconfigmax_clients=300max_per_ip=10

建立虚拟账号配置文件

在user_config_dir 指定的路径下,建立与虚拟账号同名的配置文件

mkdir /etc/vsftpd/vuserconfigtouch /etc/vsftpd/vuserconfig/normalusertouch /etc/vsftpd/vuserconfig/vipuser

normaluser 中的内容

#开启虚拟账号登陆guest_enable=yes#设置normaluser 对用的登陆账号为normaluserguest_username=normaluser#允许匿名用户浏览服务器文件系统anon_world_readable_only=no#限定传输速率anon_max_rate=50000

vipuser中的内容

guest_enable=yesguest_username=vipuseranon_world_readable_only=nowrite_enable=yesanon_mkdir_write_enable=yesanon_upload_enable=yesanon_max_rate=100000
0 0
原创粉丝点击