Linux——FTP服务

ftp服务

FTP部署服务器

ftp(文件传输协议)是INTERNET上仍常用的最老的网络协议之一,它为系统提供了通过网络与远程服务器进行传输的简单方法,ftp服务器包的名称为vsftpd,默认配置文件让anonymous用户只能下载位于chroot目录中的内容。/var/ftp/这意味着远程ftp客户端能以用户anonymous或ftp身份连接到服务器(无需密码),并从ftp服务器上的/var/ftp/目录下载文件(其本地ftp用户可以读取这些文件)
ftp和vsftpd
ftp(文件传输协议)它是属于网络传输协议的应用层;
vdftpf:安全性是它最大的特点;vsftpf是一个unix类操作系统上运行的服务器的名称,是一个完全免费的、开放的源代码的ftp服务器软件。

1、ftp的定义

ftp://ip ##文件传输协议

2、ftp协议提供的软件

在rhel7中:vsftpd

3、ftp服务的基本信息

软件安装包:vsftpd
默认发布目录:/var/ftp ##匿名用户登陆上去的家目录,本地的普通用户登陆是真机上的家目录;
协议接口:21/tcp
服务配置文件:/etc/vsftpd/vsftpd.conf
访问数据端口:21
数据传输端口:>1024的随即端口


部署ftp服务之前注意:
关闭内核级加强级防火墙selinux

关闭selinux内核防火墙

[root@localhost ~]# getenforce     ##查看selinux的状态
Enforcing		##强制开启

应该关闭selinux:
临时关闭:
setenforce 0|1 开启|警告
永久关闭:
将selinux改为disabled
Linux——FTP服务_第1张图片
进入配置文件:vim /etc/sysconfig/selinux
SELINUX=disabled ##开启自动关闭内核级防火墙
reboot ##重新启动
再次查看:
[root@localhost ~]# getenforce
disabled


**	**
  ****	*****
*****	 ******

3、部署ftp服务

  1. 查看ftp的服务:yum search ftp
  2. 安装 vdftpd
    yum install vsftpd.x86_64 -y
    Linux——FTP服务_第2张图片
  3. 开启vsftpd
    systemctl start vsftpd
  4. 设置开机自启vsftpd
    systemctl enable vsftpd
  5. 查看状态:
    systemctl status vsftpd
    Linux——FTP服务_第3张图片
    lftp 172.25.254.60 命令不存在

lftp与vsftpd不是一个东西,它们是两个程序; **
浏览器访问: ftp://172.25.254.60(主机ip) **
或者远程访问 lftp 172.25.254.60 **


1.安装lftp
yum install lftp -y
测试
lftp 172.25.254.60
正常链接,成功;

查看防火墙的状态:systemctl status firewalld.service
若防火墙被锁住,解锁:systemctl unmask firewalld.service
打开防火墙:systemctl start firewalld.service
查看防火墙的状态:systemctl status firewalld.service

(1)图形化中加入ftp服务

打开图形化界面加入服务
firewall-config
操作:
左侧public ————》加入ftp————》configuration:Permanent————》options:reload firewalld
Linux——FTP服务_第4张图片
(2)非图形化界面加入ftp服务:
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
firewall-cmd --list-al ##查看ftp是否添加到防火墙服务当中;

测试:
[root@local]lftp 172.25.254.10
lftp 172.25.254.9:~> ls
drwxr-xr-x 2 0 0 6 Jun 23 2016 pub
Linux——FTP服务_第5张图片

netstat -antulpe | grep vsftpd
21 主动模式: 连接端口为21,数据传输端口,随即开一个;
客户端主动访问服务端叫主动
被动是服务端把东西推送到客户端

(1)访问方式
lftp 172.25.254.60 ##匿名登录 --> /var/ftp 直接登陆不需要密码;
lftp 172.25.254.60 -u student ##student用户登录 --> /home/student 需要输入密码才能登陆;
(2)/etc/vsftpd/vsftpd.conf配置文件中的原内容:
5、进入配置文件:
vim /etc/vsftpd/vsftpd.conf
(1)用户
##匿名用户
anonymous_enable=YES | NO ##匿名用户是否可以登录
Linux——FTP服务_第6张图片
##本地用户
local_enable=YES | NO ##本地用户是否可以登录
write_enable=YES | NO ##ftp是否对登陆用户是否可写

(2)匿名登录时,家目录是/var/ftp/
(3)本地用户登录时,家目录是真机用户(本机用户)lee的家目录;如:

[root@localhost vsftpd]# touch /home/lee/file{1..2}	##1、本机用户lee在家目录/home/lee/下建立文件file{1..2}
[root@localhost vsftpd]# ll /home/lee/			##2、本机用户lee查看家目录/home/lee/下是否存在文件file{1..2}
total 0
-rw-r--r--. 1 root root 0 Jul 31 21:54 file1
-rw-r--r--. 1 root root 0 Jul 31 21:54 file2

[root@localhost vsftpd]# lftp 172.25.254.210 -u lee	##3、以本机用户lee的身份登陆
Password: 						##4、本地用户登录需要本地用户密码
lftp [email protected]:~> ls          			##5、可见文件file{1..2},因此本地用户登录默认在本地用户的家目录下
-rw-r--r--    1 0        0               0 Jul 31 13:54 file1
-rw-r--r--    1 0        0               0 Jul 31 13:54 file2
lftp [email protected]:~> rm file1			##5、允许登陆用户可删除
rm ok,    `file1' removed
lftp [email protected]:~> ls
-rw-r--r--    1 0        0               0 Jul 31 13:54 file2
lftp [email protected]:~> mkdir  test			
mkdir ok, `test' created
lftp [email protected]:~> exit
[root@localhost vsftpd]# ll /home/lee/			
total 0
-rw-r--r--. 1 root root 0 Jul 31 21:54 file2
drwxr-xr-x. 2 lee  lee  6 Jul 31 21:57 test

pub目录只对超级用户可写
(4)本地用户上传文件默认权限修改
local_umask=xxx 改成022


如果原文件的初始化权限是777,那么执行命令umask 022以后,该文件的权限会变成755 **相当于777-022=755 *


(5)##匿名用户上传

vim  /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES		##配置文件的29行;
直接上传文件:put /etc/group
出现报错553,文件权限过小
[root@localhost vsftpd]# lftp 172.25.254.210 
lftp 172.25.254.210:~> ls
drwxr-xr-x    2 0        0               6 Jun 23  2016 pub
lftp 172.25.254.210:/> cd pub
lftp 172.25.254.210:/pub> put /etc/group
put: Access failed: 553 Could not create file. (group)
lftp 172.25.254.210:/pub> 

Linux——FTP服务_第7张图片
修改权限

chmod 777 /var/ftp/pub
chgrp root /var/ftp/pub ##文件权限为777的话,root组文件不安全,因为这样任何人都可以root用户的身份对文件随意进行修改;

为了保证文件更加安全,首先查看上传的文件的用户组,然后再查一下目录/var/ftp/pub的权限,将其目录的用户组改成相同的,可以提高安全性,防止所有人以root的身份操作;
修改为
chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub ##将组设置成ftp更加安全;
修改后还是报错553;
原因:1、getenforce没有关闭(Enforcing)
修改:setenforce 0|1 设置成警告|强制模式;
2、匿名用户不能直接在家目录(/var/ftp)下直接上传文件;
3、文件权限不够,将目录权限改为775,所有组改为ftp

(6)##匿名用户可下载

anon_world_readable_only=YES|NO

(7)##匿名用户建立目录

anon_mkdir_write_enable=YES

在这里插入图片描述
(8)#匿名用户是否可以删除和重命名

anon_other_write_enable=YES
若为NO的话,会报550的错;

(9)#匿名用户家录修改

anon_root=/westos

Linux——FTP服务_第8张图片
(10)#匿名用户上传文件默认权限修改

anon_umask=xxx	改成022

(11)#匿名用户使用的用户身份修改

chown_uploads=YES
chown_username=student(root用户不建议,因root像大boss一样,无人能控制,但该用户必须是本地用户)

(12)#最大上传速率

anon_max_rate=102400 单位:字节 100k
dd if=/dev/zero of=/mnt/bigfile bs=1M count=1500
上传测试

(20)#最大链接个数

max_clients=2

(21)#本地用户家目录修改

local_root=/westos

(22)#本地用户上传文件权限

local_umask=xxx

(23)#限制本地用户浏览根目录
所有用户被锁定到自己的加目录中(修改之前不仅可以在自己家目录,还可以看其他)

chroot_local_user=YES	##此参数要求去掉自己对加目录的写权限,man看以下这个参数
chmod u-w /home/*

Linux——FTP服务_第9张图片
(24)用户黑名单建立

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/user_list		##用户临时黑名单

用户白名单设定

userlist_deny=NO
/etc/vsftpd/user_list			##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登录ftp

Linux——FTP服务_第10张图片
Linux——FTP服务_第11张图片

#ftp虚拟用户的设定
(创建虚拟帐号身份)

vim /etc/vsftpd/westosfile		##文件名称任意			##3号
ftpuser1
123
ftpuser2
123
ftpuser3
123

#上面的密码是明文的,不安全,要进行加密,T表示transfer,t表示转换方式为hash
db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db

#查看vsftpd.conf,认证的时候是使用pam认证
#yum search pam —> pam.x86_64
#rpm -qc pam.x86_64 查看有那些配置文件
#cd /etc/pam.d,目录里有个vsftpd文件
#认证的时候就是在这个文件里做用户名和密码的比对
#系统里有pam这个进程的,ps aux | grep pam

vim /etc/pam.d/westos			##文件名称任意
account		required	pam_userdb.so	db=/etc/vsftpd/westosfile        ##2号
auth		required	pam_userdb.so	db=/etc/vsftpd/westosfile

ftp常见报错


ftp的安全部署 **
500报错:文件系统权限过大 **
530报错:用户认证失败 **
550报错:服务本身功能未开放 **
553报错:本地文件系统权限过小 **


你可能感兴趣的:(Linux运维入门)