小诺文档中心 小诺文档中心
首页
小诺博客 (opens new window)
DevOps
云原生
技术
更多
网址导航
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

kevin

运维界的菜鸟
首页
小诺博客 (opens new window)
DevOps
云原生
技术
更多
网址导航
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • shell编程

  • 消息队列

  • web

  • ELK

  • 自动化运维

  • linux

    • firewalld
    • iptables配置
    • nc命令用法举例
    • supervisor配置
    • rsync
    • iscsi配置
    • ftp服务器
      • 常用匿名ftp配置项
      • 常用的本地用户ftp配置项
        • 配置1
        • 配置2
    • samba配置
    • webdav
    • vi—终端中的编辑器
    • 系统工具命令大全
    • linux查看主板型号、CPU、显卡、硬盘等信息
    • 一文读懂authorized_keys和known_hosts
  • DevOps
  • linux
xiaonuo
2022-06-24
目录

ftp服务器

# ftp服务概述

ftp连接及传输模式

控制连接:tcp 21,用于发送ftp命令信息 ……也叫服务端连接

数据连接:tcp 20,用于上传,下载数据 ……也叫客户端连接

数据连接的建立类型:

主动模式:服务端主动向客户端发起连接

被动模式:服务端指定某个端口被动等待客户端连接

注:主动模式下客户端未关闭firewall则接收不到服务器20端口的发送请求。此模式应用于未运行firewall的客户端。另客户端关闭firewall如果网络环境的firewall未关闭也将屏蔽20端口的连接请求。

ftp传输模式:

文本模式:ascii模式,以文本序列传输数据

二进制模式:binaty模式,以二进制序列传输数据

ftp用户的类型:

匿名用户:anonymous或ftp

本地用户:账号密码保存在passwd和shadow文件中

虚拟用户:使用独立的帐号和密码数据文件

常见的ftp服务器程序

iis (windows) serv-u (third windows ) wu-ftpd proftpd

vsftpd (very secure ftp daemon)

常见的ftp 客户端程序

ftp命令行

cuteftp flashfxp leapftp filezilla

gftp kuftp

vsftpd服务基础

vsftpd软件包

官方站点:http://vsftpd.beasts.org/

主程序:/usr/sbin/vsftpd

服务名:vsftpd

用户控制列表文件

/etc/vsftpd/ftpusers ……黑名单

/etc/vsftpd/user_list ……可黑可白,取决于主配置文件

主配置文件:

/etc/vsftpd/vsftpd.conf

# 主配置文件vsftpd.conf

常用的全局配置项:

listen=yes:是否以独立运行的方式监听服务

listen_address=192.168.1.20:设置监听的ip地址

注:多网卡服务器ftp针对不同ip地址

listen_pror=21:设置监听ftp服务的端口号

注:面向外网,不要改;面向内网,且不对外,最好还是改换。

write_enable=yes:是否启用写入权限(上传)

download_enable=yes:是否允许下载文件

userlist_enable=yes:是否启用user_list列表文件

userlist_deny=yes:是否禁用user_list列表中的用户

注:userlist_deny=no,不禁用,但仅允许这些

max_clients=0:限制并发客户端连接数

注:0为不限制,个体服务器能承载的并发连接数有上限,无论面向内外网,最好设置承载个数,以防ddos攻击。

max_pre_ip=0:限制同一ip地址的并发连接数

local_enable=yes

write_enable=yes

anon_umask=022

guest_enable=yes 启用用户映射功能

guest_username=virtual 指定映射的系统用户名称

pam_service_name=vsftpd.vu 指定新的pam认证文件

开启被动模式:

connect_from_port_20=NO(默认为YES) #设置是否允许主动模式
pasv_enable=YES(默认为YES) #设置是否允许被动模式
pasv_min_port=50000(default:0(use any port))
pasv_max_port=60000(default:0(use any port))

开启主动模式:

connect_from_port_20=YES
pasv_enable=NO


多用户配置文件
user_config_dir=/etc/vsftpd/userconfig
touch /etc/vsftpd/userconfig/admin

单用户多目录
mount --bind /mnt/CSFS/SYNC /var/ftp/admin/

# 表明FTP服务器记录上传下载的情况
xferlog_enable=YES
# 表明将记录的上传下载情况写在xferlog_file所指定的文件中, 即xferlog_file选项指定的文件中
xferlog_std_format=YES
xferlog_file=/var/log/xferlog


# 启用双份日志。在用xferlog文件记录服务器上传下载情况的同时,
# vsftpd_log_file所指定的文件,即/var/log/vsftpd.log也将用来 记录服务器的传输情况
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

# 常用匿名ftp配置项

anonymous_enable=yes:启用匿名访问

anon_umask=022:匿名用户所上传文件的权限掩码

注:各项用7去减,得755,即上传文件权限

anon_root=/var/ftp:匿名用户的根目录

anon_upload_enable=yes:允许上传文件

anon_mkdir_write_enable=yes:允许创建目录

注:只能创建,不能删除和重命名

anon_other_write_enable=yes:开放其它写入权限

注:可以删除和重命名

anon_max_rate=0:限制最大传输速率(字节/秒)

注:计算机中的位:二进制中,每个0或1就是一个位(bit),它是数据存储的最小单位,其中每8个位等于一个字节(byte)

故1byte=8bit即1mb=1024kb=10241024b=10241024*8b

# 常用的本地用户ftp配置项

local_enable=yes:是否启用本地系统用户

local_umask=022:本地用户所上传文件的权限掩码

local_root=/var/ftp:设置本地用户的ftp根目录

chroot_local_user=yes:是否将用户禁锢在主目录

注:启用local一定要禁锢,否则如果用户权限够大,系统将面临风险。

local_max_rate=0:限制最大传输速率(字节/秒)

# 构建匿名用户访问的ftp服务

思路:先准备匿名ftp访问的目录,并开放权限,然后编辑匿名用户配置,再启动服务

⑴挂载光盘,安装服务端软件

mount /dev/cdrom /media

rpm -ivh /media/packages/vsftpd-\t

⑵准备匿名ftp访问目录,并开放权限

chown ftp /var/ftp/pub

ls -ld /var/ftp/pub

⑶编辑ftp配置文件

anonymous_enable=yes

local_enable=no

write_enable=yes

anon_umask=022

anon_upload_enable=yes

anon_mkdir_write_enable=yes

anon_other_write_enable=yes开放其他写入权

dirmessage_enable=yes

⑷启动服务

service vsftpd start

⑸命令行进行验证

rpm -ivh /media/packages/ftp-\t

ftp:// 192.168.1.86

# 构建本地访问

思路:启动vsftpd.conf配置文件中本地用户,并进行相关配置,然后重新加载配置;编辑user_list,添加用户,再重新加载。

⑴安装ftp服务端软件,编辑配置文件

local_enable=yes

write_enable=yes

local_umask=077

chroot_local_user=yes

⑵重新加载服务配置文件

service vsftpd reload

⑶启用user_list列表并向user_list添加用户

vi /etc/vsftpd/vsftpd.conf

userlist_enable=yes

userlist_deny=no

cat an >>/etc/vsftpd/user_list

⑷重新加载服务配置文件

service vsftpd reload

⑸windows客户端访问

ftp://192.168.1.86

# 构建基于虚拟用户的ftp服务

创建帐号数据

1 建立虚拟ftp用户的帐号数据 库文件

2 创建ftp根目录及虚拟用户映射的系统用户

3 建立支持虚拟用户的pam认证文件

添加虚拟用户支持

1在vsftpd.conf文件中添加支持配置

2为个别虚拟用户建立独立的配置文件

启动服务并测试

1重新加载vsftpd配置

2使用虚拟ftp帐户访问测试

⑴建立虚拟ftp用户的帐号数据库文件

vi /etc/vsftpd/vuser.list

mike

123

tom

456

jim

789

cd /etc/vsftpd/

db_load -T -t hash -f vuser.list vuser.db

注:db_load -t 允许应用程序能够将文本文件转译入数据库,由于我们之后是将虚拟用户的信息以文本方式存储在文件中,为了让vsftpd这个应用程序能够通过文本来载入用户数据,必须使用此选项。

如果指定了t就必须追加-t,用来指定转译时的加密算法,有btree,hash,queue,recon

-f指向包含用户名和密码的文本文件,奇名偶密,后跟要转换成的文件名。

file vuser.db

注:file命令用来查看文件的格式

chmod 600 /etc/vsftpd/vuser.*

注:可能是600,否则认证会出错

ls /etc/vsftpd/vuser.*

⑵创建帐号数据

创建ftp根目录及虚拟用户映射的系统用户

useradd -d /var/ftproot -s /sbin/nologin virtual

chmod 755 /var/ftproot

⑶建立支持虚拟用户的pam认证文件

vi /etc/pam.d/vsftpd.vu

#%pam-1.0

auth required pam_userdb.so db=/etc/vsftpd/vuser

account required pam_userdb.so db=/etc/vsftpd/vuser

注:pam为linux的认证模块

⑷在vsftpd.conf文件中添加支持配置

vi /etc/vsftpd/vsftpd.conf

local_enable=yes

write_enable=yes

anon_umask=022

guest_enable=yes 启用用户映射功能

guest_username=virtual 指定映射的系统用户名称

pam_service_name=vsftpd.vu 指定新的pam认证文件

⑸为不同的虚拟用户建立独立的配置文件

在vsftpd.conf文件中添加用户配置目录支持

user_config_dir=/etc/vsftpd/vuser_dir

为用户mike,john建立独立的配置目录及文件

注:配置文件名与用户名相同

mkdir /etc/vsftpd/vuser_dir/

cd /etc/vsftpd/vuser_dir/

vi john

anon_upload_enable=yes

anon_mkdir_enable=yes

touch mike

注:配置文件名与用户名相同

⑹重新加载vsftpd配置

service vsftpd reload

⑺使用虚拟ftp帐户访问测试

mike用户可以登录浏览下载但无法上传

john用户可以登录浏览下载也可以上传

匿名用户或其他系统用户将不能登录

# vsftpd报错

登录vsftpd报530错误解决方法

(1)先创建了一个不允许登录系统但可以登录FTP服务器的用户:sudo useradd -d /var/www -s /sbin/nologin ftp1

(2)配置vsftpd服务器:sudo vi /etc/vsftpd.conf

可增加如下选项:userlist_deny=NO userlist_enable=YES userlist_file=/etc/vsftpd_userlist //允许登录服务器的账号列表文件

allow_writeable_chroot=YES //解决500 OOPS: vsftpd: refusing to run with writable root inside chroot() 错误

(3)创建vsftpd_userlist文件,并在里面加上ftp1

但在客户端登录vsftpd时报530 login incorret 错误,后上网搜索相关资料发现是PAM鉴权造成的,解决方法如下:

方法(1):注释掉/etc/pam.d/vsftpd文件里这后一行:

auth required pam_shells.so,这样不去鉴权

# vsftpd配置文件参考

# 配置1

anonymous_enable=NO

local_enable=YES
write_enable=YES
local_umask=022
local_root=/home/admin/ftp

dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES

listen=YES
#listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES


#设置被动模式
pasv_enable=yes
pasv_min_port=50000
pasv_max_port=60000

dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 配置2


#虚拟用户设置
#启用用户映射功能
#guest_enable=yes          
#指定映射的系统用户名称      
#guest_username=virtual  
#指定新的pam认证文件        
#pam_service_name=vsftpd.vu 
#用户配置目录支持
#user_config_dir=/etc/vsftpd/vuser_dir
     
	 
#启用匿名访问
anonymous_enable=NO
#启用匿名访问
#anonymous_enable=YES
#匿名用户所上传文件的权限掩码
#anon_umask=022
#匿名用户的根目录
#anon_root=/var/ftp
#允许上传文件
#anon_upload_enable=yes
#允许创建目录
#anon_mkdir_write_enable=yes
#注:只能创建,不能删除和重命名
#开放其它写入权限
#anon_other_write_enable=yes
#注:可以删除和重命名
#限制最大传输速率(字节/秒)
#anon_max_rate=0


#是否启用本地系统用户
local_enable=yes
#本地用户所上传文件的权限掩码
local_umask=022
#设置本地用户的ftp根目录
#local_root=/var/ftp/admin
#是否将用户禁锢在主目录
chroot_local_user=yes
#注:启用local一定要禁锢,否则如果用户权限够大,系统将面临风险。
#是否启用写入权限(上传)
write_enable=yes
#是否允许下载文件
download_enable=yes

#限制并发客户端连接数
max_clients=0

#设置监听
listen=yes
listen_port=21
#是否启用user_list列表文件
userlist_enable=yes

#是否禁用user_list列表中的用户
userlist_deny=no

userlist_file=/etc/vsftpd/user_list 

chroot_list_enable=yes
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
#设置被动模式
pasv_enable=yes
pasv_min_port=50000
pasv_max_port=60000
     
connect_from_port_20=YES
pam_service_name=vsftpd
	 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71

# pure-ftpd安装

访问 pure-ftpd 官方网站:

https://download.pureftpd.org/pub/pure-ftpd/releases/,当前最新版本为 1.0.47。

进入到要下载的目录:

[root@ryan plugins]# cd /usr/local/src

使用 wget 下载源码包:

[root@ryan src]# wget https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.47.tar.gz

解压:

[root@ryan src]# tar zxvf pure-ftpd-1.0.47.tar.gz

进入解压后的目录:

[root@ryan src]# cd pure-ftpd-1.0.47

通过设置不同的参数,定制相应的功能,生成 Makefile 文件:

[root@ryan pure-ftpd-1.0.47]# *./configure * –prefix=/usr/local/pureftpd
–without-inetd
–with-altlog
–with-puredb
–with-throttling
–with-peruserlimits
–with-tls

注意:

我们在这里可能会遇到错误,在配置之后系统会提示:configure: error: OpenSSL headers not found.

解决方法是:

yum install -y openssl openssl-devel,如果找不到这两个包,则需要安装 yum 的扩展源:yum install -y epel-release

注意:不要随意修改域名解析文件 /etc/resolv.conf,否则可能导致 yum 源地址无法解析,而出现 [Errno 256] No more mirrors to try 。

/etc/resolv.conf 是 DNS 客户机配置文件,用于设置 DNS 服务器的 IP 地址及 DNS 域名,还包含了主机的域名搜索顺序。该文件是由域名解析 器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。它的格式很简单,每行以一个关键字开头,后接一个或多个由空格隔开的参数。

编译并安装:

[root@ryan pure-ftpd-1.0.47]# make && make install

验证上一步是否执行成功:

[root@ryan pure-ftpd-1.0.47]# echo $? 0

这里返回值是”0″说明执行成功,否则就是没有成功。

2.3 修改配置文件

vim /usr/local/pureftpd/etc/pure-ftpd.conf 

ChrootEveryone              yes
BrokenClientsCompatibility  no
MaxClientsNumber            50
Daemonize                   yes
MaxClientsPerIP             8
VerboseLog                  no
DisplayDotFiles             yes
AnonymousOnly               no
NoAnonymous                 no
SyslogFacility              ftp
DontResolve                 yes
MaxIdleTime                 15
PureDB                       /usr/local/pureftpd/etc/pureftpd.pdb
LimitRecursion              10000 8
AnonymousCanCreateDirs      no
MaxLoad                     4
AntiWarez                   yes
Umask                       133:022
MinUID                      100
AllowUserFXP                no
AllowAnonymousFXP           no
ProhibitDotFilesWrite       no
ProhibitDotFilesRead        no
AutoRename                  no
AnonymousCantUpload         no
PIDFile                      /usr/local/pureftpd/var/run/pure-ftpd.pid
MaxDiskUsage                99
CustomerProof               yes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

三、使用 pure-ftpd

启动 pure-ftpd:

[root@ryan pure-ftpd-1.0.47]# /usr/local/pureftpd/sbin/pure-ftpd /usr/local/pureftpd/etc/pure-ftpd.conf

创建系统用户:

useradd pure-ftp

更改所属主和所属组:

chown -R pure-ftp: pure-ftp /data0/www/www.***.com

创建ftp用户,注意ftp用户是虚拟用户。

/usr/local/pureftpd/bin/pure-pw useradd ftp_test -u pure-ftp -d /data0/www/www.***.com

此时会出现为该ftp新用户创建密码的提示:

Password:xxxxxx Enter it again:xxxxxx

其中,-u选项将虚拟用户ftp_test与系统用户 pure-ftp关联在一起,即使用ftp_test账号登录FTP后,会以 pure-ftp的身份来读取和下载文件,-d选项后面的目录为ftp_test账户的根目录,这样可以使ftp_test只能访问其根目录/data0/www/www.***.com

注意:一般情况下web网站的系统用户为www,为了保障ftp上传修改的文件和目录能够不影响网站系统的使用权限,可以把上面提到的pure-ftp改为www。这样ftp上传到服务器的文件属性就是www了。

创建用户信息数据库文件:

/usr/local/pureftpd/bin/pure-pw mkdb

查看用户列表:

/usr/local/pureftpd/bin/pure-pw list

显示如下:

ftp_test /data0/www/www.***.com/./

删除账号的命令为:

/usr/local/pureftpd/bin/pure-pw userdel ftp_test

iscsi配置
samba配置

← iscsi配置 samba配置→

最近更新
01
postgresql安装
06-24
02
oracle笔记
06-24
03
opengauss笔记
06-24
更多文章>
Theme by Vdoing | Copyright © 2019-2022 kevin | 小诺运维
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×