鱼C论坛

 找回密码
 立即注册

centos6上配置ftp服务器

已有 700 次阅读2017-8-25 13:24 | ftp, ftp, ftp

ftp(file transfer protocol:文件传输协议)作用:Internet上用来传送文件的协议
ftp所使用的端口有两个,20和21
20号端口用来传数据,只有在进行数据传输的时候才会打开
21号端口用来传指令,一般只要服务开启,这个端口就会打开
ftp回话包含了两个通道,控制通道和数据通道,ftp的工作有两种方式,一种是主动模式,一种是被动模式,以ftpserver为参照物,主动模式,服务器主动链接客户端传输;被动模式,等待客户端的链接
主动模式:
ftp客户端连接到FTP服务器的21端口,发送用户名和密码,客户端随机开发一个端口(1024以上),发送port命令道ftp服务器,告诉服务器客户端采用主动模式并开放端口;ftp服务器收到port主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口链接,传送数据
被动模式:
ftp客户端连接到ftp服务器的21端口,发送用户名和密码,发送psav命令道ftp服务器,服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端,客户端在链接到服务器开放的端口进行数据传输。
(无论是主动模式还是被动模式,首先控制通道都是先建立起来的,只是在数据传输模式上的区别)

相关文档
/etc/vsftpd/vsftpd.conf vsftpd的核心配置文件
/etc/vsftpd/ftpusers 用于指定哪些用户不能访问ftp服务器。黑名单
/etc/vsftpd/user_list 用于指定允许使用vsftpd的用户列表文件。白名单
(如果userlist_deny=yes,决不允许在这个文件中的用户登录ftp,设置不提示输入密码)
/etc/vsftpd/vsftpd_conf_migrate.sh 是vsftpd操作的一些变量和设置代码
/var/ftp 默认情况下匿名用户的根目录

配置文件参数:
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_enalbe=YES
chroot_list_file=/etc/vsftpd/chroot_list 写谁不锁谁

其他功能:
匿名用户可以重命名和删除:
anon_other_write_enable=YES
bind IP(绑定监听IP)
listen_address=IP

local_max_rate=N
anon_max_rate=N

max_client=N
max_per_ip=N


安装服务端 yum -y install vsftpd
安装客户端 yum -y install lftp(从centos6开始,系统景象中默认没有ftp客户端命令。取而代之的是lftp命令)

启动服务,并开机启动
service vsftpd start
chkconfig vsftpd on

例1:公司技术部准备搭建一台功能简单的ftp服务器,允许所有员工上传和下载文件,并允许创建用户自己的目录
vim /etc/vsftpd/vsftpd.conf修改一下内容
允许匿名用户访问
anonymous_enable=YES
允许匿名用户上传文件
anon_upload_enable=YES
允许匿名用户创建目录
anon_mkdir_write_eanble=YES
允许重命名(默认没有,需要手动添加,但该指令会赋予匿名用户删除文件和目录的权限,不推荐使用这个指令)
anon_other_write_enable=YES
保存文件之后重启服务
service vsftpd restart
修改根目录的所属用户和所属组,因为ftp的写权限不仅需要配置文件中的写权限,还需要目录的写权限
chown ftp:ftp /var/ftp/pub/
(默认匿名用户家目录的全显示755,这个权限是不能改变的。切记!)

例2:公司内部现在有一台ftp和web服务器,ftp的功能主要用于维护公司的网站内容,包括上传文件、创建目录、更新网页等等。公司现有两个部门负责维护任务,他们分别使用team1和team2账号进行管理。先要求仅允许team1和team2账号登录ftp服务器,但不能登录本地系统,并将这两个账号的根目录限制为/var/www/html,不能进入该目录以外的任何目录

先创建两个账号team1和team2
useradd -s /sbin/nologin team1
useradd -s /sbin/nologin team2
echo "123456" | passwd --stdin team1
echo "123456" | passwd --stdin team2
修改主配置文件
vim /etc/vsftpd/vsftpd.conf
禁止匿名用户登录
anonymous_enable=NO
允许本地用户登录
local_enable=YES
激活chroot功能,将用户访问目录锁定在根目录
chroot_list_enable=YES
设置锁定用户在根目录中的列表文件。此文件存放要锁定的用户名
chroot_list_file=/etc/vsftpd/chroot_list
设置本地用户的根目录为/var/www/html(该命令默认不存在,需要手动创建)
local_root=/var/www/html
保存退出,建立/etc/vsftpd/chroot_list文件,添加team1和team2账号
echo "team1" > /etc/vsftpd/chroot_list
echo "team2" >> /etc/vsftpd/chroot_list
重启服务,并修改目录权限
因为网站的根目录一般的所属组和所属用户都设置成了apache,所以这里不能通过设置所属组和所属用户来设置权限
一般使用chmod -R o+w /var/www/html
或者setfacl -m u:team1:rwx /var/www/html
推荐使用acl的方式来设置权限

例3:ftp虚拟账号
企业环境:
公司为了宣传最新的产品信息,计划搭建ftp服务器,为客户提供相关文档的下载。对所有互联网开放共享目录,允许下载产品信息,禁止上传。公司的合作单位能够使用ftp服务器进行上传和下载,但不可以删除数据。需要保证服务器的稳定性并做优化。
创建ftp虚拟账号。允许客户使用ftp账号下载文件。但是,你们自己的合作伙伴账号:vip可以上传一些内部文件。
1、创建用户数据库
(1)创建用户文本文件
先建立用户文本文件vsftpd_virtualuser.txt添加两个虚拟账号,公共账号ftp及客户账号vip
touch /etc/vsftpd/vsftpd_virtualuser.txt文件格式是一行用户一行密码
echo "ftp" >> /etc/vsftpd/vsftpd_virtualuser.txt
echo "123456" >> /etc/vsftpd/vsftpd_virtualuser.txt
echo "vip" >> /etc/vsftpd/vsftpd_virtualuser.txt
echo "123456" >> /etc/vsftpd/vsftpd_virtualuser.txt
(2)生成数据库
保存虚拟账号和密码的文本文件无法被系统账号直接调用l.women需要使用db_load命令生成数据库文件
如果没有db_load命令就使用yum -y install db4-utils安装
db_load -T -t hash -f /etc/vsftpd/vsftpd_virtualuser.txt  /etc/vsftpd/vsftpd_virtualuser.db
参数说明:
选项-T允许应用程序能够将文本文件转译载入进数据库。
由于我们之前的虚拟用户信息是用文本文件存储的。为了让vsftpd应用程序能够载入用户数据,必须要使用-T选项来转译成vsftpd可以读懂的内容
-t hash使用hash码加密
-f 指定包含用户名和密码的文件
数据库文件生成后为了安全应该删除vsftpd_virtualuser.txt文件
(3)修改数据库文件访问权限
数据库文件中保存着虚拟账号的密码信息,为了防止非法用户盗取,需要修改改文件的访问权限。生成的认证文件权限应设置为只对root用户可读可写,即600
chmod 600 /etc/vsftpd/vsftpd_virtualuser.db
2.配置PAM文件
为了是服务器能够使用数据库文件,对客户端进行身份验证,需要调用系统的pam模块
修改vsftpd对应的PAM配置文件/etc/pam.d/vsftpd将默认的配置使用#全部注释,并添加以下两行
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.创建虚拟账号对应的系统用户及ftp共享目录
对于公共账号和客户账号,因为需要配置不同的权限,所以可以将两个账号的目录进行隔离,控制用户的文件访问。公共账号ftp对应系统账号ftpuser,并制定其主目录为/var/ftp/share,而客户账号vip对应系统账号ftpvip,指定主目录为/var/ftp/vip
useradd -d /var/ftp/share/ ftpuser
useradd -d /var/ftp/vip ftpvip
公共账号ftp只允许下载,修改share目录的权限为500
chmod -R 500 /var/ftp/share/
客户账号vip允许上传和下载,所以对vip目录权限设置为700
chmod -R 700 /var/ftp/vip/
4.建立配置文件
一个配置文件无法实现多个虚拟账号不同权限,需要为每个虚拟账号建立独立的配置文件,并根据需要进行相应的设置
(1)修改vsftpd.conf主配置文件
配置主配置文件/etc/vsftpd/vsftpd.conf添加虚拟账号的共同设置并添加user_config_dir字段,定义虚拟账号的配置文件目录
vim /etc/vsftpd/vsftpd.conf
禁用匿名用户登录并启用本地用户登录设置
anonymous_enable=NO
local_enable=YES
将所有本地用户限制在家目录中
chroot_local_user=YES
配置vsftpd使用的PAM模块为vsftpd
pam_service_name=vsftpd
然后添加三行
设置虚拟账号的主目录为/etc/vsftpd/vuserconfig
user_config_dir=/etc/vsftpd/vuserconfig
设置ftp服务器最大介入客户端数为300个
max_clinets=300
设置每个IP地址最大连接数为10个
max_per_ip=10
(2)建立虚拟账号配置文件
在User_config_dir指定路径下,建立与虚拟账号同名的配置文件并添加相应的配置字段
首先建立公共账号ftp的配置文件
mkdir /etc/vsftpd/vuserconfig
touch /etc/vsftpd/vuserconfig/ftp
touch /etc/vsftpd/vuserconfig/vip
配置虚拟账号配置文件
vim /etc/vsftpd/vuserconfig/ftp
开启虚拟账号登录
guest_enable=yes
设置ftp对应的系统账号
guest_username=gtpuser
允许匿名用户浏览整个服务器的文件系统
anon_world_readable_only=no
限定传输速率为50KB/s
anon_max_rate=50000

vim /etc/vsftpd/vuserconfig/vip
开启虚拟账号登录
guest_enable=yes
设置ftp对应的系统账号
guest_username=ftpvip
允许倪敏该用户浏览整个服务器的文件系统
anon_world_readable_only=no
允许在文件系统写入权限
write_enable=yes
允许创建文件夹
anon_mkdir_write_enable=yes
开启匿名账号的上传功能
anon_upload_enable=yes
限定传输速度为1M/s
anon_max_rate=1000000
然后重启服务生效
service vsftpd restart

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-17 06:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部