Linux文件共享之FTP
FTP概述
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一
FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源
在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上 由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议,默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息,但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定
同大多数Internet服务一样,FTP也是一个客户/服务器系统 用户通过一个客户机程序连接至在远程计算机上运行的服务器程序 依照 FTP,协议提供服务,进行文件传送的计算机就是 FTP服务器 而连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端,用户要连上FTP 服务器,就要用到 FTP 的客户端软件,通过lftp命令连接
FTP服务的基本信息 | |
---|---|
软件安装包 | vsftpd |
默认发布目录 | /var/ftp |
默认发布目录的子目录 | /var/ftp/pub/ |
协议接口 | 21/tcp |
服务配置文件 | /etc/vsftpd/vsftpd.conf |
配置参数 | |
---|---|
530 | 表示认证失败 ,服务器不允许或者密码错误 |
550 | 表示服务本身的功能没有开启 |
553 | 表示权力过小或者所访问的服务器的文件系统有问题 |
500 | 服务本身认为我所操作的服务的权力过大 |
主要配置文件 | |
---|---|
/etc/logrotate.d/vsftpd | 日志文件 |
/etc/pam.d/vsftpd | 认证文件 |
/etc/vsftpd/ftpusers | 黑名单文件 |
/etc/vsftpd/user_list | 用户名单文件 |
/etc/vsftpd/vsftpd.conf | 配置文件 |
前期准备
server1-172.25.70.11 | 服务端 |
server2-172.25.70.12 | 客户端 |
关闭selinux
部署FTP
server1
yum install vsftpd lftp -y
systemctl start vsftpd 开启vsftpd服务
systemctl enable vsftpd 设置开机启动
systemctl stop firewalld
firewall-cmd --premanent --add-service=ftp 或者在防火墙上添加ftp
安装完之后在/etc/vsftpd/路径下会存在三个配置文件。
vsftpd.conf: 主配置文件
ftpusers: 指定哪些用户不能访问FTP服务器,这里的用户包括root在内的一些重要用户。
user_list: 指定的用户是否可以访问ftp服务器,通过vsftpd.conf文件中的userlist_deny的配置来决定配置中的用户是否可以访问,
userlist_enable=YES ,userlist_deny=YES ,userlist_file=/etc/vsftpd/user_list 这三个配置允许文件中的用户访问FTP。
查看主配置文件的默认配置
cat /etc/vsftpd/vsftpd.conf |grep -v '^#';
anonymous_enable=YES 允许匿名用户
local_enable=YES 允许使用本地用户账号登陆
write_enable=YES 允许ftp用户写数据
connect_from_port_20=YES 通过20端口传输数据
复制代码
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
tcp_wrappers=YES
chroot_local_user=yes
其它的一些参数说明 | |
---|---|
ftpd_banner=welcome to ftp service | 设置连接服务器后的欢迎信息 |
idle_session_timeout=60 | 限制远程的客户机连接后,所建立的控制连接,在多长时间没有做任何的操作就会中断(秒) |
data_connection_timeout=120 | 设置客户机在进行数据传输时,设置空闲的数据中断时间 |
accept_timeout=60 | 设置在多长时间后自动建立连接 |
connect_timeout=60 | 设置数据连接的最大激活时间,多长时间断开,为别人所使用; |
max_clients=200 | 指明服务器总的客户并发连接数为200 |
max_per_ip=3 | 指明每个客户机的最大连接数为3 |
local_max_rate=50000(50kbytes/sec) | 本地用户最大传输速率限制 |
anon_max_rate=30000 | 匿名用户的最大传输速率限制 |
pasv_min_port=端口/pasv-max-prot=端口号 | 定义最大与最小端口,为0表示任意端口;为客户端连接指明端口; |
listen_address=IP地址 | 设置ftp服务来监听的地址,客户端可以用哪个地址来连接; |
listen_port=端口号 | 设置FTP工作的端口号,默认的为21 |
local_root=path | 无论哪个用户都能登录的用户,定义登录帐号的主目录, 若没有指定,则每一个用户则进入到个人用户主目录; |
chroot_local_user=yes/no | 是否锁定本地系统帐号用户主目录(所有);锁定后,用户只能访问用户的主目录/home/user; |
chroot_list_enable=yes/no | 启用不锁定用户在主目录的名单 |
chroot_list_file=/etc/vsftpd/chroot_list | 指定列表文件 |
userlist_enable=YES/NO | 是否加载用户列表文件; |
userlist_deny=YES | 表示上面所加载的用户允许登录; |
userlist_file=/etc/vsftpd/user_list | 指定列表文件 |
匿名用户参数解析
匿名用户登录限制
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES|NO
匿名用户上传文件
write_enable=YES 匿名用户可写
anon_upload_enable=YES匿名用户可上传
匿名用户默认以ftp用户的身份访问ftp服务器的,所以将ftp目录的所有组改为ftp以及赋予目录较大的权限,这样匿名用户才可以上传文件
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
匿名用户家目录修改
anon_root=/direcotry
匿名用户上传文件默认权限修改
anon_umask=xxx
匿名用户建立目录
anon_mkdir_write_enable=YES|NO
匿名用户下载文件
anon_world_readable_only=YES|NO
匿名用户删除文件
anon_other_write_enable=YES|NO
匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student
最大上传速率
anon_max_rate=102400
最大连接数
max_clients=2
本地用户参数解析
本地用户登录
local_enable=YES|NO
本地用户限制登录
本地用户写权限限制
write_enable=YES|NO
可以看出原先在student用户下建立的文件权限与在lftp下建立的文件权限不同
本地用户家目录修改
local_root=/directory
本地用户建立目录权限设定
local_umask=xxx
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*
防止本地用户随便访问其他重要目录文件,安全性降低
改参数前s以tudent用户身份登录后可以进入/mnt目录
更改参数后就不被允许了
虚拟账号
创建虚拟帐号
vim /etc/vsftpd/westosfile ##文件名称任意 创建一个虚拟帐号的名单,里面的帐号是不存在的
vim /etc/vsftpd/loginusers ##文件名称任意
db_load -T -t hash -f /etc/vsftpd/loginusers loginusers.db
db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db
加密命令 转换 建立 加密方式 文件 被加密文件 加密的文件
vim /etc/pam.d/ckvsftpd ##文件名称任意(设置转换桥梁)
account required pam_userdb.so db=/etc/vsftpd/westosfile
auth required pam_userdb.so db=/etc/vsftpd/westosfile
帐号和密码 请求访问允许或者拒绝 验证程序 在该文件里面验证
vim /etc/vsftpd/vsftpd.conf
pam_service_name=ckvsftpd(使它生效)
guest_enable=YES
虚拟帐号身份指定
guest_username=ftpuser
chmod u-w /home/ftpuser
虚拟帐号家目录独立设定
使虚拟用户的登陆进去不再是ftp用户的默认家目录
vim /etc/vsftpd/vsftpd.conf
local_root=/ftpuserhome/$USER
user_sub_token=$USER
虚拟帐号配置独立
(想让哪个用户干什么用户就干什么 ,vsftpd的安全性就体现在这里)
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
黑白名单
黑名单
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
永久黑名单
vim /etc/vsftpd/ftpusers 用户黑名单
临时名单
vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO|YES
vim /etc/vsftpd/user_list 用户临时黑名单|白名单