用户名密码方式访问 FTP

前言

用户名密码方式访问 FTP。

简介

场景:ftp 和 www web 服务器相结合

公司内部现在有一台 FTP 和 WEB 服务器,FTP 的功能主要用于维护公司的网站内容,包括上传文件、创建目录、更新网页等等。公司现有两个部门负责维护任务,他们分别使用 team1 和 team2 帐号进行管理。先要求仅允许 team1 和 team2 帐号登录 FTP 服务器,但不能登录本地系统,并 将两个帐号的根目录限制为/var/www/html,不能进入该目录以外的任何目录。

分析:

FTP和web服务器常结合使用,方便进行管理。为了保证安全,本地用户可以登录系统。禁用匿名账号,team1和team2不容许登录系统。使用chroot功能锁定team1和team2的根目录为/var/www/html。若需要修改目录还要加write权限。此外FTP还可以使用加密传输。

用户名密码方式访问 FTP

1.创部门管理用户 team1 和 team2

[root@tudou63 vsftpd]# useradd -s /sbin/nologin team1 && echo 123456 |passwd --stdin team1

[root@tudou63 vsftpd]# useradd -s /sbin/nologin team2 && echo 123456 |passwd --stdin team2

2.修改vsftpd的配置文件

[root@tudou63 vsftpd]# vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO #禁止匿名用户登录

local_enable=YES #允许本地用户登录

local_root=/var/www/html #设置本地用户的根目录为 /var/www/html。

chroot_list_enable=YES #开启 chroot 功能。

chroot_list_file=/etc/vsftpd/chroot_list #设置锁定用户在根目录中的列表文件。此文 件存放要锁定的用户名。

allow_writeable_chroot=YES #允许锁定的用户有写的权限。

3.将部门用户team1 和 team2锁定到/etc/vsftpd/chroot_list

[root@tudou63 vsftpd]# vim /etc/vsftpd/chroot_list
team1
team2

4.测试

[root@tudou63 vsftpd]# chmod -R o+w /var/www/html/ #给team1和team2添加写权限

[root@tudou63 vsftpd]#cp /etc/passwd /var/www/html

使用filezilla连接测试:

在这里插入图片描述

在这里插入图片描述

vsftpd使用 SSL 证书加密数据传输

1.使用 OpenSSL 生成自签证书

[root@tudou63 ~]# cd /etc/vsftpd/
[root@tudou63 vsftpd]# ls
chroot_list ftpusers user_list vsftpd.conf vsftpd.conf.bak vsftpd_conf_migrate.sh
[root@tudou63 vsftpd]# openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem -days 3650

在这里插入图片描述

2.修改配置文件,支持 SSL数据传输

[root@tudou63 vsftpd]# vim /etc/vsftpd/vsftpd.conf
ssl_enable=YES #启用 SSL 支持。
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
force_anon_logins_ssl=YES
force_anon_data_ssl=YES #这四行 force 表示强制匿名用户使用加密登陆和数据传输。
ssl_tlsv1=YES #指定 vsftpd 支持 TLS v1。
ssl_sslv2=YES #指定 vsftpd 支持 SSL v2。
ssl_sslv3=YES #指定 vsftpd 支持 SSL v3。
require_ssl_reuse=NO #不重用 SSL 会话,安全配置项 。
ssl_ciphers=HIGH #允许用于加密 SSL 连接的 SSL 算法,这可以极大地限制那些尝试发现使用存在缺陷的特定算法的攻击者。
rsa_cert_file=/etc/vsftpd/.sslkey/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/.sslkey/vsftpd.pem #定义 SSL 证书和密钥文件的位置。

3.测试连接

[root@tudou63 vsftpd]# systemctl restart vsftpd

测试连接:

在这里插入图片描述

在这里插入图片描述

总结

1.遇到的问题:

​ 无法连接到vsftp服务器,一直提示530登陆失败,后多次检查,发现是/etc/shells的问题,vsftp登陆前会查找/etc/shells是否有对应的shells,若没有,则没法登陆。

解决办法:

在/etc/shells文件里面添加用户的shell(解释器),如/sbin/nologin

[root@tudou63 ~]# vim /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/sbin/nologin

注:

原因:vsftpd默认会检查用户的shell,如果用户的shell在/etc/shells没有记录,则无法登陆ftp

2.在配置/etc/vsftpd/vsftpd.conf的配置文件中,每个配置项后不要加注释,而且配置项后 也不能有多余的空格,否则启动报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值