(一)vsftpd服务配置(匿名,用户,虚拟用户)

(一)vsftpd服务配置(匿名,用户,虚拟用户)

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。

vsftpd 特点

非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持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(文件在/var/ftp)

1,安装vsftpd服务

# 关闭SELINUX
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && setenforce 0
# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
# 时间同步
ntpdate 0.asia.pool.ntp.org
# 安装服务
yum install vsftpd -y
#此目录是配置文件目录
cd /etc/vsftpd/ && ls
# 启动
systemctl start vsftpd
# 开机自启
systemctl enable vsftpd
# 切换到ftp目录下pub
ls /var/ftp/
# 添加一个文本文件
echo "this is test" > /var/ftp/test.txt  && ls /var/ftp

执行结果

[root@localhost ~]# # 关闭SELINUX
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && setenforce 0
[root@localhost ~]# # 关闭防火墙
[root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# # 时间同步
[root@localhost ~]# ntpdate 0.asia.pool.ntp.org
15 Jul 16:09:04 ntpdate[2290]: step time server 125.228.203.179 offset 12350247.991403 sec
[root@localhost ~]# # 安装服务
[root@localhost ~]# yum install vsftpd -y
[root@localhost ~]# cd /etc/vsftpd/ && ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@localhost vsftpd]# # 启动
[root@localhost vsftpd]# systemctl start vsftpd
[root@localhost vsftpd]# # 开机自启
[root@localhost vsftpd]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@localhost vsftpd]# # 切换到ftp目录下pub
[root@localhost vsftpd]# ls /var/ftp/
pub
[root@localhost vsftpd]# # 添加一个文本文件
[root@localhost vsftpd]# echo "this is test" > /var/ftp/test.txt  && ls /var/ftp
pub  test.txt

2,用测试机cmd访问vsftpd服务(cmd连接ftp)并下载文件

C:\Users\liuhm>ftp 192.168.0.90 # 访问ftp服务
连接到 192.168.0.90。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.0.90:(none)): ftp # 匿名访问
331 Please specify the password.
密码:
#密码无 回车
230 Login successful.
ftp> pwd # 查看当前路径
257 "/" # ftp服务的根目录
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 test.log #在c盘中创建一个test.log然后上传到Linux中
200 PORT command successful. Consider using PASV.
550 Permission denied. #此时是权限受限的

在这里插入图片描述

3,修改vsftpd配置文件将匿名访问开启最大权限

[root@localhost vsftpd]# cd /etc/vsftpd/
[root@localhost 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的重命名和删除的权限
[root@localhost vsftpd]# systemctl restart vsftpd ##重启服务
[root@localhost vsftpd]# cd /var/ftp/ ##切换到ftp目录下
[root@localhost ftp]# ls
pub test.txt
[root@localhost ftp]# ll
总用量 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
[root@localhost ftp]# chmod 777 pub ##将pub目录权限给最大,注意不能直接给ftp权限最大

4,用测试机cmd访问ftp并上传本地文件到Linux上

C:\Users\liuhm>ftp 192.168.0.90  ## 访问ftp服务
连接到 192.168.0.90。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.0.90:(none)): ftp
331 Please specify the password.
密码:
230 Login successful.
ftp> cd pub/ ## 切换到pub目录下
250 Directory successfully changed.
ftp> put test.log ## 上传文件
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp: 发送 3072 字节,用时 0.00秒 3072.00千字节/秒。
ftp> by ## 退出
221 Goodbye.

5,查看上传的文件

[root@localhost ftp]# cd /var/ftp/pub ##切换到pub目录下
[root@localhost pub]# ls ##查看上传的文件
test.log

二,利用本地用户登录ftp(文件在家目录)

防止本地用户访问系统目录,限制仅访问用户家目录

1,创建系统用户

[root@localhost pub]# useradd zhangsan ##创建用户并设置用户密码
[root@localhost pub]# passwd zhangsan
[root@localhost pub]# useradd lisi ##创建用户并设置用户密码
[root@localhost pub]# passwd lisi

2,测试机上cmd使用用户登录ftp

C:\Users\liuhm>ftp 192.168.0.90  ##登录ftp服务
连接到 192.168.0.90。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.0.90:(none)): zhangsan  ##使用本地用户
331 Please specify the password.
密码:
230 Login successful.
ftp> ls /  ##查看用户/下的目录文件,直接到系统根目录下
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
/bin
/boot
/dev
/etc
/home
/lib
/lib64
/media
/mnt
/opt
/proc
/root
/run
/sbin
/srv
/sys
/tmp
/usr
/var
226 Directory send OK.
ftp: 收到 126 字节,用时 0.01秒 18.00千字节/秒。
ftp>

3,防止本地用户访问系统目录,限制仅访问用户家目录

[root@localhost pub]# vim /etc/vsftpd/vsftpd.conf ##修改配置文件
chroot_local_user=YES ##开启限制本地访问系统目录模块
allow_writeable_chroot=YES ##添加写的权限
[root@localhost pub]# systemctl restart vsftpd ##重启服务

4,测试机cmd访问

C:\Users\liuhm>ftp 192.168.0.90 
连接到 192.168.0.90。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.0.90:(none)): zhangsan
331 Please specify the password.
密码:
230 Login successful.
ftp> ls / ##查看发现还是在用户的家目录中,访问不到系统的其他目录了,增强了安全性
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.
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>

5、设置允许,拒绝指定用户访问ftp

1,设置user_list(默认拒绝),允许或者拒绝特定用户登录ftp

[root@localhost pub]# cd /etc/vsftpd/ ##切换到vsftpd配置文件目录
[root@localhost vsftpd]# vim vsftpd.conf
userlist_enable=YES ##确认user-list开启
[root@localhost vsftpd]# ls 
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
[root@localhost vsftpd]# echo "zhangsan" >> user_list ##将zhangsan用户添加到列表中[root@localhost vsftpd]# systemctl restart vsftpd ##重启服务

2,用测试机cmd测试

C:\Users\liuhm>ftp 192.168.0.90
连接到 192.168.0.90。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.0.90:(none)): zhangsan
530 Permission denied.
登录失败。 ##直接拒绝登录

6,设置列表为仅允许

1.添加列表允许

[root@localhost ftp]# cd /etc/vsftpd/
[root@localhost vsftpd]# vim vsftpd.conf ##配置vsftpd配置文件
userlist_enable=YES
userlist_deny=NO ##添加列表允许
[root@localhost vsftpd]# systemctl restart vsftpd ##重启服务

2.测试机cmd测试

C:\Users\liuhm>ftp 192.168.0.90
连接到 192.168.0.90。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.0.90:(none)): zhangsan ##用zhangsan去登录
331 Please specify the password. 
密码:
230 Login successful.
ftp> bye
221 Goodbye.

C:\Users\liuhm>ftp 192.168.0.90
连接到 192.168.0.90。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.0.90:(none)): lisi  ##用lisi去登录
530 Permission denied.
登录失败。
ftp>

三,建立虚拟用户账户使用ftp

1,创建虚拟用户文件

[root@localhost vsftpd]# cd /etc/vsftpd
[root@localhost vsftpd]# vim vsftpuser
lisa  ##奇数行为用户名
123123 ##偶数行为密码
tom
123123

2,转换数据库文件,设置安全权限

[root@localhost vsftpd]# db_load -T -t hash -f vsftpuser vsftpuser.db ##将vuser转换成数据库文件##T转换,t类型,f指定文件
[root@localhost vsftpd]# chmod 600 vsftpuser ##安全起见,不让别人看到,设置权限[root@localhost vsftpd]# chmod 600 vsftpuser.db

3,编辑pam认证模块支持虚拟用户登录

[root@localhost vsftpd]# useradd -d /home/vsftpuser -s /sbin/nologin vsftpuser
##创建系统用户,指定家目录,不能登录
[root@localhost vsftpd]# vim /etc/pam.d/vsftpd.vu ##编译pam认证模块
auth required pam_userdb.so db=/etc/vsftpd/vsftpuser ##识别转换过的数据库文件
account required pam_userdb.so db=/etc/vsftpd/vsftpuser ##连接的密码服务

4,开启虚拟用户,使用pam模块认证登录

注释 userlist_deny=NO

[root@localhost vsftpd]# vim vsftpd.conf ##修改配置文件
##大G到末行
#pam_service_name=vsftpd ##注释
##添加下面三行内容
guest_enable=YES  ##开启来宾用户访问
guest_username=vsftpuser ##使用vuser用户名
pam_service_name=vsftpd.vu ##pam模块
[root@localhost vsftpd]# systemctl restart vsftpd ##重启服务

5,测试机cmd测试

C:\Users\liuhm>ftp 192.168.0.90
连接到 192.168.0.90。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.0.90:(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
[root@localhost vsftpd]# ls -l /home/vsftpuser
总用量 4
-rw-------. 1 vsftpuser vsftpuser 13 7月  15 18:14 test1.txt

6,单独用户配置,指定上传文件的权限644

[root@localhost vsftpd]# vim vsftpd.conf 
##大G末行添加
user_config_dir=/etc/vsftpd/vu_dir ##单独用户配置文件夹
[root@localhost vsftpd]# mkdir vu_dir ##创建文件夹
[root@localhost vsftpd]# cd vu_dir/
[root@localhost vu_dir]# vim lisa ##在配置文件夹里创建用户配置文件
anon_umask=022 ##指定上传文件的权限
[root@localhost vu_dir]# systemctl restart vsftpd ##重启服务

7,测试机cmd使用lisa用户登录,查看上传文件权限

C:\Users\liuhm>ftp 192.168.0.90
连接到 192.168.0.90。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.0.90:(none)): lisa ##使用lisa登录
331 Please specify the password.
密码:
230 Login successful.
ftp> put 2222.txt
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp: 发送 13 字节,用时 0.00秒 13.00千字节/秒。

[root@localhost vu_dir]# ls -l /home/vsftpuser
总用量 8
-rw-r--r--. 1 vsftpuser vsftpuser 13 7月  15 18:18 2222.txt  ##lisa上传文件权限644
-rw-------. 1 vsftpuser vsftpuser 13 7月  15 18:14 test1.txt ##tom上传文件权限600
03-08
### VSFTPD 安装配置及使用教程 #### 、安装过程 在Linux环境中,通过包管理器可以方便地安装`vsftpd`服务。对于基于Red Hat的发行版(如CentOS),命令如下: ```bash yum -y install vsftpd ``` 这条指令会自动下载并安装`vsftpd`及其依赖项[^1]。 #### 二、初始化设置 完成上述操作之后,在系统的配置目录下会出现名为`/etc/vsftpd/vsftpd.conf`的文件,它是用于控制FTP服务器行为的关键文档。 #### 三、编辑配置文件 为了调整`vsftpd`的行为模式,比如启用特定的功能或是修改安全策略,则需打开此配置文件进行编辑。这可以通过文本编辑工具来实现,例如vi或vim: ```bash [root@RicenOS vsftpd-3.0.3]# vi /etc/vsftpd/vsftpd.conf ``` 或者更简洁的方式是直接调用vim进入指定位置: ```bash vim /etc/vsftpd/vsftpd.conf ``` 在此过程中,可以根据实际需求更改各项参数以满足不同的应用场景[^2]。 #### 四、基本选项说明 关于是否允许匿名用户访问这重要特性,默认情况下是在配置文件中的第十二行定义的: ```plaintext anonymous_enable=YES ## 启动匿名用户的访问功能 ``` 如果希望禁用该功能只需将YES改为NO即可[^3]。 #### 五、创建专用账户 除了处理公共访问权限外,还可能涉及到为某些用户提供独立登录的能力。这时就需要新增加Linux本地账号以便于管理和分配资源。 ```bash adduser ftpuser passwd ftpuser ``` 以上两条语句分别用来建立新用户名以及为其设定密码。 六、重启服务使改动生效 每当对配置进行了任何变更后都应当记得重新加载或重启相应的守护进程让新的规则得以应用: ```bash systemctl restart vsftpd.service ``` 七、防火墙端口开放 最后不要忘记检查网络防护措施是否阻碍了外部连接请求。通常需要确保TCP协议下的21号端口处于开启状态才能正常接收来自客户端的数据传输尝试。 八、测试验证 切准备就绪以后就可以利用标准的FTP客户程序来进行简单的上传下载动作以此检验整个流程是否有误。 九、进步优化建议 随着业务量的增长还可以考虑引入更多高级特性和最佳实践方案,诸如SSL加密通信支持、虚拟主机隔离机制等等。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuhm~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值