CentOS中FTP服务配置详解

不以物喜不以己悲,生活不会突变,你要做的只是耐心和积累。


FTP Server

作用:提供文件共享服务
在这里插入图片描述


FTP基础

FTP:  文件传输协议

软件包:  vsftpd

FTP端口:  控制端口21/tcp;数据端口20/tcp(主动模式)

配置文件: /etc/vsftpd/vsftpd.conf

FTP的工作模式

主动模式: FTP 服务器主动向客户端发起连接请求。

被动模式: FTP 服务器等待客户端发起连接请求(FTP 的默认工作模式)。

vsftpd默认配置

FTP Server

CentOS6

yum -y install vsftpd  #安装
service vsftpd restart #重启
chkconfig vsftpd on	 #开机自启动

1.SELinux

sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config    #关闭SELinux,c表示整行替换
setenforce 0

2.iptables[暂关]

iptables -F
service iptables save

CentOS7

yum -y install vsftpd
systemctl restart vsftpd
systemctl enable vsftpd

1.SELinux

sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config #重启生效
setenforce 0 #暂时生效

2.firewalld

firewall-cmd --permanent --add-service=ftp #添加防火墙允许策略
firewall-cmd --reload

vsftpd服务程序

vsftpd 作为更加安全的文件传输的服务程序,允许用户以三种认证模式登录到 FTP 服务器上。

  • 匿名开放模式: 是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到 FTP 服务器。
  • 本地用户模式: 是通过 Linux 系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。
  • 虚拟用户模式: 是这三种模式中最安全的一种认证模式,它需要为 FTP 服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供 FTP 服务程序进行认证使用。

vsftpd 服务程序常用的参数以及作用:

参数 作用
listen=[YES|NO] 是否以独立运行的方式监听服务
listen_address=IP 地址 设置要监听的 IP 地址
listen_port=21 设置 FTP 服务的监听端口
download_enable=[YES|NO] 是否允许下载文件
userlist_enable=[YES|NO] 是否启用用户列表
userlist_deny=[YES|NO] 禁止或允许启用用户列表
max_clients=0 最大客户端连接数, 0 为不限制
max_per_ip=0 同一 IP 地址的最大连接数, 0 为不限制
anonymous_enable=[YES|NO] 是否允许匿名用户访问
anon_upload_enable=[YES|NO] 是否允许匿名用户上传文件
anon_umask=022 匿名用户上传文件的 umask 值
anon_root=/var/ftp 匿名用户的 FTP 根目录
anon_mkdir_write_enable=[YES|NO] 是否允许匿名用户创建目录
anon_other_write_enable=[YES|NO] 是否开放匿名用户的其他写入权限(包括重命名、删除等操作权限)
anon_max_rate=0 匿名用户的最大传输速率(字节/秒), 0 为不限制
local_enable=[YES|NO] 是否允许本地用户登录 FTP
local_umask=022 本地用户上传文件的 umask 值
local_root=/var/ftp 本地用户的 FTP 根目录
chroot_local_user=[YES|NO] 是否将用户权限禁锢在 FTP 目录,以确保安全
local_max_rate=0 本地用户最大传输速率(字节/秒), 0 为不限制

备份vsftpd服务程序的主配置文件

mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak     #备份原配置文件
grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf 

cat /etc/vsftpd/vsftpd.conf  #查看文件内容
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=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

匿名开放模式

可以向匿名用户开放的权限参数以及作用:

参数 作用
anonymous_enable=YES 允许匿名访问模式
anon_umask=022 匿名用户上传文件的 umask 值
anon_upload_enable=YES 允许匿名用户上传文件
anon_mkdir_write_enable=YES 允许匿名用户创建目录
anon_other_write_enable=YES 允许匿名用户修改目录名称或删除目录
1 anonymous_enable=YES
2 anon_umask=022
3 anon_upload_enable=YES
4 anon_mkdir_write_enable=YES
5 anon_other_write_enable=YES

6 local_enable=YES
7 write_enable=YES
8 local_umask=022
9 dirmessage_enable=YES
10 xferlog_enable=YES
11 connect_from_port_20=YES
12 xferlog_std_format=YES
13 listen=NO
14 listen_ipv6=YES
15 pam_service_name=vsftpd
16 userlist_enable=YES
17 tcp_wrappers=YES

本地用户模式

本地用户模式使用的权限参数以及作用:

参数 作用
anonymous_enable=NO 禁止匿名访问模式
local_enable=YES 允许本地用户模式
write_enable=YES 设置可写权限
local_umask=022 本地用户模式创建文件的 umask 值
userlist_enable=YES 启用“禁止用户名单”,名单文件为 ftpusers 和 user_list
userlist_deny=YES 开启用户作用名单文件功能

虚拟用户模式

1.创建用于进行FTP认证的用户数据库文件,其中奇数为用户名,偶数为用户密码

cd /etc/vsftpd/
vim vuser.list   
zhangsan
123.com
lisi
123.com
# 明文不安全,需要将原始的明文信息使用db_load命令转换成数据库文件,为了避免别人看到数据库文件的内容,将原始明文信息文件删除
db_load -T -t hash -f vuser.list vuser.db
file vuser.db
chmod 600 vuser.db
rm -f vuser.list

2.创建 vsftpd 服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户。 FTP 服务用于存储文件的根目录指的是,当虚拟用户登录后所访问的默认位置。

useradd -d /var/ftproot -s /sbin/nologin virtual
chmod -Rf 755 /var/ftproot

3.建立用于支持虚拟用户的 PAM 文件。

vim /etc/pam.d/vsftpd.vu
auth	required	pam_userdb.so db=/etc/vsftpd/vuser
account	required	pam_userdb.so db=/etc/vsftpd/vuser

4.在 vsftpd 服务程序的主配置文件中通过 pam_service_name 参数将 PAM 认证文件的名称修改为vsftpd.vu

利用PAM文件进行认证时使用的参数以及作用:

参数 作用
anonymous_enable=NO 禁止匿名开放模式
local_enable=YES 允许本地用户模式
guest_enable=YES 开启虚拟用户模式
guest_username=virtual 指定虚拟用户账户
pam_service_name=vsftpd.vu 指定 PAM 文件
allow_writeable_chroot=YES 允许对禁锢的 FTP 根目录执行写入操作,而且不拒绝用户的登录请求

5.为虚拟用户设置不同的权限

赋予zhangsan上传、创建、修改、查看、删除问价的权限;只允许lisi查看文件。

mkdir /etc/vsftpd/vusers_dir/
cd /etc/vsftpd/vusers_dir/
touch lisi
vim zhangsan   #赋予权限如下
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

再次修改vsftpd主配置文件,通过添加 user_config_dir 参数来定义这两个虚拟用户不同权限的配置文件所存放的路径。
echo "user_config_dir=/etc/vsftpd/vusers_dir" >> /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
systemctl enable vsftpd

6.设置SELinux和防火墙

防火墙
firewall-cmd --permanent --add-service=ftp #添加防火墙允许策略
firewall-cmd --reload
SELinux
sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config #重启生效
setenforce 0 #暂时生效

FTP默认共享目录/var/ftp

FTP Client

lftp

yum -y install lftp #安装
lftp 域名/IP地址 #连接服务器

get 文件名   #下载文件
mirror 目录名  #下载目录
lcd 目录名   #切换到本地目录
exit/by   #退出

wget

wget --help |less
wget --help |grep  "\-m" #查找有关包含m的行
wget ftp://IP/filename   #下载文件到当前目录
wget ftp://IP/filename -P /tmp/ #下载文件到指定目录
wget ftp://IP/filename -O /tmp/a.sh  #下载时指定文件名
wget -m ftp://IP/目录   #下载目录

curl

firefox,IE

默认使用匿名用户ftp访问,HOME为/var/ftp,默认仅能下载文件

系统用户:alice,HOME为/home/alice,默认可下载及上传

案例1:使用FTP共享YUM源

Server:

mkdir /var/ftproot/centos7.3
mount -o loop CentOS7.3.iso /var/ftp/centos7.3
echo "mount -o loop CentOS7.3.iso /var/ftp/centos7.3" >> /etc/rc.local
chmod +x /etc/rc.d/rc.local
或者
cp -a /media/cdrom/. /var/ftproot/centos7.3/
echo "/dev/cdrom /media/cdrom iso9660 defaults 0 0" >> /etc/fstab

Client:

vim /etc/yum.repos.d/centos7.repo
[centos7]
name=centos7
baseurl=ftp://172.16.56.129/centos7.3
enable=1
gpgcheck=0

猜你喜欢

转载自blog.csdn.net/weixin_42342456/article/details/85099361