vsftpd 详解
vsftpd 是 "very secure FTP daemon" 的缩写, 安全性是它的一个最大的特点. vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字, 它可以运行在诸如 Linux,BSD,Solaris, HP-UNIX 等系统上面, 是一个完全免费的, 开放源代码的 ftp 服务器软件, 支持很多其他的 FTP 服务器所不支持的特征.
特点
非常高的安全性需求, 带宽限制, 良好的可伸缩性, 可创建虚拟用户, 支持 IPv6, 速率高
小巧轻快, 安全易用.
ftp,sftp,vsftp,vsftpd 详解
ftp 是 File Transfer Protocol 的缩写, 文件传输协议, 用于在网络上进行文件传输的一套标准协议, 使用客户 / 服务器模式. 它属于网络传输协议的应用层.
sftp 是 SSH File Transfer Protocol 的缩写, 安全文件传输协议;
vsftp 是一个基于 GPL 发布的类 Unix 系统上使用的 ftp 服务器软件, 它的全称是 Very Secure FTP 从此名称可以看出来, 编制者的初衷是代码的安全;
vsftpd 是 very secure FTP daemon 的缩写, 安全性是它的一个最大的特点. vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字, 它可以运行在诸如 Linux,BSD,Solaris, HP-UNIX 等系统上面, 是一个完全免费的, 开放源代码的 ftp 服务器软件;
匿名用户登录 FTP
- [[email protected] ~]# yum install vsftpd -y ## 安装 vsftp 服务
- [[email protected] ~]# cd /etc/vsftpd/
- [[email protected] vsftpd]# ls
- ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
- [[email protected] vsftpd]# systemctl start vsftpd ## 开启服务
- [[email protected] vsftpd]# systemctl stop firewalld.service
- s[[email protected] vsftpd]# setenforce 0
- [[email protected] vsftpd]# echo "this is text"> /var/ftp/test.txt ## 写一段内容到测试文件中
客户机去测试访问
C:\Users\CHEN>ftp 192.168.136.178 ## 访问 ftp 服务
连接到 192.168.136.178.
- 220 (vsFTPd 3.0.2)
- 200 Always in UTF8 mode.
用户 (192.168.136.178:(none)): ftp ## 匿名访问
331 Please specify the password.
密码: ## 密码没有, 直接回车
- 230 Login successful.
- ftp> pwd ## 查看当前的绝对路径
- 257 "/"
- ftp> ls -a ## 查看目录中的内容
- 200 PORT command successful. Consider using PASV.
- 150 Here comes the directory listing.
- .
- ..
- pub
- test.txt ## 服务器中的文件
- 226 Directory send OK.
ftp: 收到 25 字节, 用时 0.00 秒 25000.00 千字节 / 秒.
- ftp> get test.txt ## 下载文件到本地客户机, 在哪个磁盘访问的就会下载到哪里, 可以切换磁盘来下载
- 200 PORT command successful. Consider using PASV.
- 150 Opening BINARY mode data connection for test.txt (13 bytes).
- 226 Transfer complete.
ftp: 收到 13 字节, 用时 0.00 秒 13000.00 千字节 / 秒.
客户机查看有没有收到文件
- ftp> put test1.txt ## 创建一个文件上传到服务器中
- 200 PORT command successful. Consider using PASV.
- 550 Permission denied. ## 权限受限
回到服务器开启匿名访问最大的权限
- [[email protected] ftp]# cd /etc/vsftpd/
- [[email protected] vsftpd]# VIM vsftpd.conf
- ## 在配置文件中查找开启下列选项
- anonymous_enable=YES ## 开启匿名用户
- local_enable=YES ## 本地用户
- write_enable=YES ## 写入权限
- local_umask=022 ## 本地用户反掩码
- anon_upload_enable=YES ## 上传权限开启
- anon_mkdir_write_enable=YES ## 开启创建目录并且能够写入
- anon_other_write_enable=YES ## 添加一个 other 的重命名和删除的权限
- [[email protected] vsftpd]# systemctl restart vsftpd ## 重启服务
- [[email protected] vsftpd]# cd /var/ftp/ ## 切换到 ftp 目录下
- [[email protected] ftp]# ls
- pub test.txt
- [[email protected] ftp]# ls -l
总用量 4
drwxr-xr-x. 2 root root 6 10 月 31 2018 pub
-rw-r--r--. 1 root root 13 11 月 5 19:14 test.txt
[[email protected] ftp]# chmod 777 pub ## 将 pub 目录权限给最大, 注意不能直接给 ftp 权限最大
再用客户机去访问 ftp, 上传本地文件到服务器
C:\Users\CHEN>ftp 192.168.136.178 ## 访问 ftp 服务
连接到 192.168.136.178.
- 220 (vsFTPd 3.0.2)
- 200 Always in UTF8 mode.
用户 (192.168.136.178:(none)): ftp
331 Please specify the password.
密码:
- 230 Login successful.
- ftp> cd pub/ ## 切换到 pub 目录下
- 250 Directory successfully changed.
- ftp> put test1.txt ## 上传文件
- 200 PORT command successful. Consider using PASV.
- 150 Ok to send data.
- 226 Transfer complete.
ftp: 发送 13 字节, 用时 0.03 秒 0.41 千字节 / 秒.
- ftp> by ## 退出
- 221 Goodbye.
- ## 可以使用 delete 删除文件
本地用户登录 ftp 文件默认在家目录
- [email protected] ~]# useradd zhangsan
- [[email protected] ~]# passwd zhangsan
更改用户 zhangsan 的密码 .
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新.
- [[email protected] ~]# useradd lisi
- [[email protected] ~]# passwd lisi
更改用户 lisi 的密码 .
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新.
防止本地用户访问系统目录, 限制只访问用户家目录
- [[email protected] ~]# VIM /etc/vsftpd/vsftpd.conf
- 101 chroot_local_user=YES ## 第 101 行开启本地访问系统目录
- 102 chroot_list_enable=YES ##102 行添加写的权限
- [[email protected] ~]# systemctl restart vsftpd
去客户机去测试访问
C:\Users\CHEN>ftp 192.168.136.178
连接到 192.168.136.178.
- 220 (vsFTPd 3.0.2)
- 200 Always in UTF8 mode.
用户 (192.168.136.178:(none)): zhangsan
331 Please specify the password.
密码:
- 230 Login successful.
- ftp> cd / ## 切换到系统根目录
- 250 Directory successfully changed.
- ftp> ls ## 查看发现还是在用户的家目录中, 访问不到系统的其他目录了, 增强了安全性
- 200 PORT command successful. Consider using PASV.
- 150 Here comes the directory listing.
- 226 Directory send OK.
设置允许, 拒绝指定用户访问 ftp
- [[email protected] ~]# cd /etc/vsftpd/
- [[email protected] vsftpd]# ls
- ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
- [[email protected] vsftpd]# VIM vsftpd.conf
- userlist_enable=YES ## 确认 user-list 开启
- [[email protected] vsftpd]# ls
- ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
- [[email protected] vsftpd]# echo "zhangsan">> user-list ## 将 zhangsan 用户添加到列表中, user-list(默认拒绝), 允许或者拒绝特定用户登录
- [[email protected] vsftpd]# systemctl restart vsftpd ## 重启服务
用客户机测试访问 ftp
C:\Users\CHEN>ftp 192.168.136.178
连接到 192.168.136.178.
- 220 (vsFTPd 3.0.2)
- 200 Always in UTF8 mode.
用户 (192.168.136.178:(none)): zhangsan
530 Permission denied.
登录失败. ## 拒绝登录
设置列表为仅允许
- [[email protected] ftp]# cd /etc/vsftpd/
- [[email protected] vsftpd]# VIM vsftpd.conf ## 配置 vsftpd 配置文件
- userlist_enable=YES
- userlist_deny=NO ## 添加列表允许
- [[email protected] vsftpd]# systemctl restart vsftpd ## 重启服务
客户机去测试访问
C:\Users\CHEN>ftp 192.168.136.178
连接到 192.168.136.178.
- 220 (vsFTPd 3.0.2)
- 200 Always in UTF8 mode.
用户 (192.168.136.178:(none)): zhangsan ## 用 zhangsan 去登录
331 Please specify the password.
密码:
- 230 Login successful. ## 登录成功
- ftp> by
- 221 Goodbye.
- C:\Users\CHEN>ftp 192.168.136.178
连接到 192.168.136.178.
- 220 (vsFTPd 3.0.2)
- 200 Always in UTF8 mode.
用户 (192.168.13.140:(none)): lisi ## 用 lisi 去登录
530 Permission denied.
登录失败. ## 登录失败
建立虚拟用户登录使用 ftp
文件在系统用户 vuser 家目录
创建虚拟用户文件
- [[email protected] ~]# cd /etc/vsftpd/
- [[email protected] vsftpd]# VIM vuser
- chen ## 奇数行为用户名
- 123123 ## 偶数行为密码
- cheng
- 123123
转换成数据库文件, 设置权限
- [[email protected] vsftpd]# db_load -T -t hash -f vuser vuser.db ## 将 vuser 转换成数据库文件, T 转换, t 类型, f 指定文件
- [[email protected] vsftpd]# chmod 600 vuser ## 设置权限
- [[email protected] vsftpd]# chmod 600 vuser.db
编辑 pam 认证模块支持虚拟用户登录
[email protected] vsftpd]# useradd -d /opt/vuser -s /sbin/nologin vuser
创建系统用户, 指定家目录, 不能登录
- [[email protected] vsftpd]# VIM /etc/pam.d/vsftpd.vu ## 编译 pam 认证模块
- auth required pam_userdb.so db=/etc/vsftpd/vuser ## 识别转换过的数据库文件
- account required pam_userdb.so db=/etc/vsftpd/vuser ## 连接的密码服务
- ## 开启虚拟用户, 使用 pam 模块认证登录
- [[email protected] vsftpd]# VIM vsftpd.conf ## 修改配置文件
- ## 大 G 到末行
- #pam_service_name=vsftpd ## 注释
- ## 添加下面三行内容
- guest_enable=YES ## 开启来宾用户访问
- guest_username=vuser ## 使用 vuser 用户名
- pam_service_name=vsftpd.vu ##pam 模块
- [[email protected] vsftpd]# systemctl restart vsftpd ## 重启服务
客户机去测试
C:\Users\xy007>ftp 192.168.136.178
连接到 192.168.136.178
- 220 (vsFTPd 3.0.2)
- 200 Always in UTF8 mode.
用户 (192.168.136.178:(none)): tom ## 使用虚拟用户 tom 登录
331 Please specify the password.
密码:
- 230 Login successful.
- ftp> put test1.txt ## 上传一个文件
- 200 PORT command successful. Consider using PASV.
- 150 Ok to send data.
- 226 Transfer complete.
ftp: 发送 13 字节, 用时 0.00 秒 13000.00 千字节 / 秒.
- ## 查看文件的权限为 600
- [[email protected] vsftpd]# ls -l /opt/vuser/
总用量 4
-rw-------. 1 vuser vuser 13 11 月 5 22:51 test1.txt
单独用户配置, 指定上传文件的权限 644
- [[email protected] vsftpd]# VIM vsftpd.conf
- ## 大 G 末行添加
- user_config_dir=/etc/vsftpd/vu_dir ## 单独用户配置文件夹
- [[email protected] vsftpd]# mkdir vu_dir ## 创建文件夹
- [[email protected] vsftpd]# cd vu_dir/
- [[email protected] vu_dir]# VIM lisa ## 在配置文件夹里创建用户配置文件
- anon_umask=022 ## 指定上传文件的权限
- [[email protected] vu_dir]# systemctl restart vsftpd ## 重启服务
客户机去测试使用 lisa 用户登录, 查看上传文件权限
C:\Users\xy007>ftp 192.168.136.178
连接到 192.168.136.178
- 220 (vsFTPd 3.0.2)
- 200 Always in UTF8 mode.
用户 (192.168.136.178:(none)): lisa ## 使用 lisa 登录
331 Please specify the password.
密码:
- 230 Login successful.
- ftp> put 111.txt ## 上传文件
- 200 PORT command successful. Consider using PASV.
- 150 Ok to send data.
- 226 Transfer complete.
ftp: 发送 13 字节, 用时 0.00 秒 13000.00 千字节 / 秒.
[[email protected] vu_dir]# ls -l /opt/vuser/ ## 查看上传文件的权限
总用量 8
-rw-r--r--. 1 vuser vuser 13 11 月 5 22:58 111.txt ##lisa 上传文件权限 644
-rw-------. 1 vuser vuser 13 11 月 5 22:51 test1.txt ##tom 上传文件权限 600
来源: http://www.bubuko.com/infodetail-3289538.html