笔记整理2.4-ftp工作原理和取消被动模式-虚拟账号配置

ftp服务工作原理
21端口控制通道(无论主动还是被动先建立连接)
20端口 数据传输通道(主动模式)
服务器高位端口 数据传输通道被动模式

客户端连接21端口 发送密码和用户 主动模式和端口 ftp服务器
ftp服务器响应ack确认 通过20端口和客户端开发端口通讯


客户端连接21端口 发送密码和用户 被动模式(pasv)ftp服务器
ftp服务器响应ack确认 把高位端口告诉客户端 客户端发起连接ftp服务器

yum -y install vsftpd lftp
systemctl start vsftpd 
systemctl enable vsftpd

/etc/vsftpd/vsftpd.conf:vsftpd 的核心配置文件
/etc/vsftpd/ftpusers:黑名单
/etc/vsftpd/user_list:白名单
# 如果userlist_deny= YES(默认),修改需要手动添加的参数-不允许登录ftp,是黑名单,如果有用户不能登录可以删除上面两个文件内的用户名

netstat -antup | grep ftp #如果没有20端口是因为没有数据通讯

 

[root@xuegod65 ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak#备份文件

1.vi /etc/vsftpd/vsftpd.conf #修改以下内容基础配置

允许匿名用户访问
anonymous_enable=YES #默认允许
允许匿名用户上传文件并可以创建目录
anon_upload_enable=YES
anon_mkdir_write_enable=YES

anon_other_write_enable=YES #默认没有 匿名写入权限
service vsftpd restart

2.仅允许本地用户访问,并禁止匿名用户登录。使用chroot 功能将team1

和team2 锁定在/var/www/html 目录下。如果需要删除文件则还需要注意本地权限

useradd -s /sbin/nologin team1
useradd -s /sbin/nologin team2
echo "123456" | passwd --stdin team1
echo "123456" | passwd --stdin team2

配置修改

vi /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    #允许锁定的用户有写的权限

 vi /etc/vsftpd/chroot_list #写入以下内容,一行,一个用户名

team1
team2


mkdir /var/www/html -p
[root@xuegod63 ~]# chmod -R o+w /var/www/html/ #修改权限
service vsftpd restart

3.虚拟账号创建

3.1配置账号文件

vi /etc/vsftpd/vsftpd_virtualuser.txt
commuser
123456
vip
123456
db_load -T -t hash -f /etc/vsftpd/vsftpd_virtualuser.txt /etc/vsftpd/vsftpd_virtualuser.db #转换加密

rpm -qf `which db_load `#如果没有命令安装一下这个包

libdb-utils-5.3.21-20.el7.x86_64

选项-T允许应用程序能够将文本文件转译载入进数据库。
-t hash使用hash码加密
-f 指定包含用户名和密码文本文件 奇数行用户名、偶数行密码

chmod 600 /etc/vsftpd/vsftpd_virtualuser.db #密码文件root有权限就可以

3.2认证配置

vi /etc/pam.d/vsftpd #其他内容删除或注释掉
#%PAM-1.0
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualuser

3.3创建映射的用户不需要设置密码

[root@xuegod63 vsftpd]# useradd -d /var/ftp/share ftpuser
[root@xuegod63 vsftpd]# useradd -d /var/ftp/vip ftpvip
[root@xuegod63 vsftpd]# chmod -R 500 /var/ftp/share/ #修改权限
[root@xuegod63 vsftpd]# chmod -R 700 /var/ftp/vip/

3.4配置ftp文件

cp /etc/vsftpd/vsftpd.conf.bak /etc/vsftpd/vsftpd.conf #恢复备份文件

vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO #需要修改的三项 这是不让匿名登录
local_enable=YES #确认此选项打开,允许本地用户登录
chroot_local_user=YES #确认此选项打开。将所有本地用户限制在家目录中,NO 则不限制

 

pam_service_name=vsftpd #确认在文件的最后有选项。配置vsftpd 使用的PAM 模块为vsftpd
user_config_dir=/etc/vsftpd/vuserconfig #设置虚拟帐号的主目录为/vuserconfig
max_clients=300 #设置FTP 服务器最大接入客户端数为300 个
max_per_ip=10 #设置每个IP 地址最大连接数为10 个

3.5虚拟用户的权限配置

[root@xuegod63 ~]# mkdir /etc/vsftpd/vuserconfig

[root@xuegod63 ~]# vi /etc/vsftpd/vuserconfig/commuser

guest_enable=yes
guest_username=ftpuser
anon_world_readable_only=no
anon_max_rate=50000

vi /etc/vsftpd/vuserconfig/vip #写入以下内容

guest_enable=yes
guest_username=ftpvip
anon_world_readable_only=no
write_enable=yes
anon_mkdir_write_enable=yes
anon_upload_enable=yes
allow_writeable_chroot=YES
anon_other_write_enable=YES # 允许删除,重命名等
anon_max_rate=1000000
service vsftpd restart
 systemctl enable vsftpd #配置结束

 

总结多个虚拟用户可以映射一个真实用户-注意认证模块原来的认证内容要删了或者注释,密码文件不要写错
寻账号配置内容说明
guest_enable=yes:开启虚拟帐号登录
guest_username=ftpvip:设置ftp 对应的系统帐号为ftpvip
anon_world_readable_only=no:允许匿名用户浏览器整个服务器的文件系统
write_enable=yes:允许在文件系统写入权限
anon_mkdir_write_enable=yes:允许创建文件夹
anon_upload_enable=yes:开启匿名帐号的上传功能
allow_writeable_chroot=YES
anon_max_rate=100000:限定传输速度为100KB/s
回顾配置文件参数:
anonymous_enable=YES #启用匿名用户(anonymous、ftp)
local_enable=YES #本地用户、启用
write_enable=YES #本地用户、可写
#anon_upload_enable=YES #匿名用户可写
#anon_mkdir_write_enable=YES #匿名用户可以创建目录
#idle_session_timeout=600 #超时时间
#data_connection_timeout=120 #超时时间
listen=YES #是否监听
pam_service_name=vsftpd #开启pam支持
userlist_enable=YES #用户列表功能开启
tcp_wrappers=YES #开始tcp_wrappers支持

黑白名单:
userlist_deny=NO #黑名单变白名单

锁定用户访问的目录:
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list   #写谁锁谁

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list   #写谁不锁谁
其他功能:
匿名用户可以重命名和删除:
anon_other_write_enable=YES

 

取消被动模式

https://jingyan.baidu.com/article/da1091fb0f2099027949d642.html

 

posted @ 2019-03-17 13:49  夜辰雪扬  阅读(577)  评论(0)    收藏  举报