每日一记:文件服务器之FTP服务器

FTP(File transfer protocol):最主要的功能是在服务器与客户端之间进行档案的传输,使用的是明码传输方式

FTP服务器软件提供的不同等级的用户身份:user、guest、anonymous
三种身份的权限和功能有差异
FTP可以利用系统的syslogd来进行数据的记录,记录的数据包括用户曾经下达过的命令与用户传输数据的记录
FTP可以限制用户仅能在自己的家目录当中活动,登入FTP后,显示的 [根目录]就是自己家目录的内容,这种环境称为change root,简称chroot
FTP的两个端口:port 21用来接受命令、port 20用来传输数据
FTP的数据传输通道是在有数据传输的行为时才会建立的通道
port 21是接受来自客户端的主动连接;port 20为FTP服务器主动联机至客户端

FTP服务器与客户端隔着防火墙(客户端在防火墙后,FTP服务器在防火强前),无法建立联机的解决方法:
1、使用iptables所提供的FTP侦测模块;使用modprobe指令来加载ip_conntrack_ftp
ip_nat_ftp等模块(前提是没有更改FTP服务器的命令通道的默认端口21)
2、客户端选择被动式(Passive)联机模式;且透过passive ports的功能来[限定]服务器启动的port number来防止服务器启动的端口被劫持

较为安全的FTP: ssh提供的sftp-server ,优点是传输的数据是经过加密的

vsftpd软件可以透过 /etc/vsftpd/ftpusers 档案来设定不具有登入FTP的账号
vsftpd(Very Secure FTP Daemon)服务器基础设定:
vsftpd的特点:
vsftpd服务启动子身份为一般用户,对Linux系统的全年较低;vsftpd亦利用chroot()这个函式进行改换根目录的动作,是的系统工具不会对vsftpd服务所误用

vsftpd:使用yum install vsftpd安装
主要配置文件:/etc/vsftpd/vsftpd.conf ,以bash的变量设定相同的方式来处理的,参数=设定值,等号两边不能与空白

/etc/pam.d/vsftpd : 是vsftpd使用PAM模块时的相关配置文件,主要作为身份认证之用,还有一些用户身份的抵挡功能,也是透过这个档案来达成的

/etc/vsftpd/ftpusers :与上一个档案有关,这个档案就是PAM模块所指定的那个无法登入的用户配置文件;将不想让其登入的FTP账号写入这个档案即可,一行一个账号

/etc/vsftpd/user_list : 此档案能否生效与vsftpd.conf内的两个参数有关,分别是 userlist_enable,userlist_deny ; 预设这个档案与 /etc/vsftpd/ftpusers几乎一模一样,可将不希望可登入vsftpd的账号写入这里,这个档案会依据vsftpd.conf配置文件内的userlist_deny=[YES/NO]而不同

/etc/vsftpd/chroot_list : 预设是不存在的,需要手动建立,主要功能是可以将某些账号的使用者chroot在他们的家目录下;这个档案要生效与vsftpd.conf内的[chroot_list_enable,chroot_list_file]两个参数有关

/usr/sbin/vsftpd : 是vsftpd的主要执行档,vsftpd只有这一个执行档
/var/ftp/ : vsftpd的预设匿名者登入的根目录,与ftp这个账号的家目录有关

使用 man 5 vsftpd.conf 可以得到完整的参数说明

vsftpd启动的模式:vsftpd可以使用stand alone或super daemon 的方式来启动
预设(默认)是以stand alone来启动的
提供给整个因特网来进行大量下载的任务时,使用stand alone的方式
仅提供给内部人员使用时,使用super daemon 来管理

启动vsftpd : systemctl start vsftpd
如果自行设定以 super daemon 来启动:当FTP是很少被使用时
1、修改配置文件: vim /etc/vsftpd/vsftpd.conf
找到 listen=YES 这一行,将其改成 listen=No
2、修改super daemon 的配置文件,自行建立底下档案
yum install xinetd <==假设xinetd没有安装时
vim /etc/xinetd.d/vsftpd
service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
log_on_success += DURATION USERID
log_on_failure += USERID
nice = 10
disable = no
}
3、重新启动
systemctl stop vsftpd
/etc/init.d/xinetd restart
netstat -tulnp | grep 21

实体账号的SELinux 问题: 预设的情况下,CentOS的FTP是不允许实体账号登入取得家目录数据的,是SELinux导致的
解决方法: getsebool -a | grep ftp
设定 ftp_home_dir --> off 修改这个设定为 on, 1代表on,0代表off
setsebool -P ftp_home_dir=1 或setsebool -P ftp_home_dir=on

对用户(包括未来新增用户)进行chroot :
1、修改vsftpd.conf的参数值
vim /etc/vsftpd/vsftpd.conf
#增加是否设定针对某些使用者来chroot的相关设定
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
2、建立不被chroot的使用者账号列表,即使没有任何账号,此档案也要存在
vim /etc/vsftpd/chroot_list
vbird
dmtsai
重启vsftpd软件

限制实体用户的总下载流量(带宽):
在配置文件vsftpd.conf里添加一个参数 :local_max_rate=1000000 <==流量的单位是bytes/second
重启vsftpd软件即可

限制最大同时上线人数与同一IP的FTP联机数:
修改vsftpd.conf配置文件: vim /etc/vsftpd/vsftpd.conf
#增加底下的这两个参数: max_clients=10
max_per_ip=1
重启vsftpd软件即可

建立严格的可使用ftp的账号列表:使得写入/etc/vsftpd/user_list的用户才能使用ftp
修改配置文件: vim /etc/vsftpd/vsftpd.conf
#这几个参数必须要修改成这样:
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
重启vsftpd软件

匿名者默认登入的根目录是以ftp这个用户的家目录为主,所以可以使用 finger ftp来查阅
默认的匿名者根目录在 /var/ftp/ 中,匿名者取得的身份是ftp

FTP发生错误时,检查/var/log/vsftpd.log 、/var/log/xferlog与 /var/log/messages 排除错误
/var/log/vsftpd.log预设不会出现,可加入 /var/log/vsftpd.log的支持:
vim /etc/vsftpd/vsftpd.conf
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
#加入这两个设定值即可; 重启vsftpd软件
这样设置后:未来有新联机或者是错误时,就会额外写一份到 /var/log/vsftpd.log中去

客户端的图形接口FTP联机软件:
ftp及lftp这两只指令是文字接口的
图形接口软件: gftp
windows 操作系统的自由软件 : Filezilla

透过浏览器取得FTP联机的方式:
ftp://username:[email protected]_ip

让vsftpd增加SSL的加密功能:
进行ftps的服务器建置:
1、检查vsftpd有无支持ssl模块
ldd $(which vsftpd) | grep ssl
有出现libssl.so.10=> /usr/lib64/libssl.so.10 (0x000007f0587879000)字样就是有支持,才能进行下一步
2、建立专门给vsftpd使用的凭证数据:
建立凭证的目录就是: /etc/pki/tls/certs/
cd /etc/pki/tls/certs
make vsftpd.pem
cp -a vsftpd.pem /etc/vsftpd/
ll /etc/vsftpd/vsftpd.pem 注意一下权限
3、修改vsftpd.conf的配置文件,假定有实体、匿名账号

总结:FTP的服务器软件非常多,有 Wu FTP、Proftpd、vsftpd等等
大多数的FTP服务器软件都提供chroot的功能,将实体用户限制在他的家目录内
FTP的指令、与用户活动所造成的登录档是放置在/var/log/xferlog里面
FTP的数据传送模式: ASCII与Binary两种;在进行ascii传送时,被传送的档案将会以文本模式来进行传送的行为,因此,档案的属性会被修改,一般来说,ACSII仅用在文本文件与一些原始码档案的传送

原文地址:http://blog.51cto.com/3134965/2138945

时间: 2024-08-02 16:36:55

每日一记:文件服务器之FTP服务器的相关文章

文件服务器之NFS服务器

NFS(Network File System),它的目的就是想让不同的机器,不同的操作系统可以彼此共享数据文件,目前在Unix like当中用来作为文件服务器是一个相当不错的解决方案,基本上Unix like主机连接到另一台Unix like主机来共享彼此的文件时,使用NFS要比SAMBA服务器快速且方便的多.此外,NFS的配置很简单,只要记得启动Remote Procedure Call(rpc,就是rpcbind这个软件)就能够搭建起来. 1.NFS的由来与功能 NFS共享文件系统的搭建很

Win7 自带FTP将文件复制到FTP服务器时发生错误。

错误截图: 错误信息: 将文件复制到FTP服务器时发生错误.请检查是否有权限将文件放到该服务器上. 详细信息: 200 Type set to I. 200 PORT commad successful. 451 No mapping for the Unicode character exits in target multi-bye code page. 解决方案: 控制面板-->管理工具-->打开Internet信息服务(IIS)管理器.右键选中自己建立好的FTP站点,选择"管

搭建服务器之FTP

FTP服务器,使用软件vsftpd,服务守护进程也是vsftpd.客户端访问的话可以用浏览器或ftp命令行. 1.yum install vsftpd.安装简单主要是配置,这个比httpd复杂点的地方在于他要配置不同角色的不同登录设置.我们按照centos默认配置,可以匿名访问,可以guest访问,系统用户拒绝访问. 2.放行防火墙20,21端口.同时需要在/etc/sysconfig/iptables-config 里边加上IPTABLES_MODULES="ip_nat_ftp"让

将文件复制到FTP服务器时发生错误的解决办法

自己新搭了一台FTP服务器,给部门同事一起用,用ftp软件上传文件没什么问题,直接通过windows的界面上传文件出现如下提示应该是文件传输编码有问题远程到ftp服务器打开IIS选择正在使用的ftp站点选择高级设置在弹出的对话框中允许UTF8,默认是True,设置为False确定设置完成后重启一下ftp站点,就可以了 原文地址:http://blog.51cto.com/lisiyun/2300417

文件服务器之:SAMBA 服务器,稳定可靠,没有连接数限制

SAMBA使用的是NetBIOS通讯协议,NetBIOS是无法跨路由的透过NetBIOS over TCP/IP的技术,可以跨路由使用SAMBA服务器所提供的功能 SAMBA联机模式:1.peer/peer(Workgroup model,对等模式):适合小型的网域,不经常进行档案数据分享的网络环境,或者每个使用者都拥有该计算机的拥有权的环境2.domain model(主控模式):DC服务器控管整个网域里面的各个机器的账号与密码的信息 Samba所需软件及其软件结构:samba :这个软件主要

Windows Server 2012 服务器之Web服务器

今天给大家介绍一下Web服务器,Web服务器,也可以说是IIS服务,是发布网站所必不可少的服务.今天就给大家详细说一说这两个服务. 在介绍之前,先说一下今天的实验环境,本次实验一共需要两台服务器,第一台server01,用来做域控制器,第二台server02,安装Web服务,用来做Web服务器,第三台客户机,用来测试用,server01和server02在同一个域环境中 首先给大家说一下Web服务器的安装 打开服务器管理器,找到添加角色与功能,单击打开 点击下一步,至如图所示的界面,检查一下服务

将文件复制到ftp服务器时发生错误

这个问题是由于FTP底层文件传输协议文件名代码转化不一致导致的. 解决方法:将文件重新命名为纯英文或者数字或者英文数字组合字符,中文命名必须使用偶数字符,奇数中文字符+中文字符会导致传输失败.(自己可以尝试不同的字符组合以获得经验) 这种问题出现在安卓手机上,很多人希望通过WIFI使用FTP协议无线向手机中传入数据,由于windows与linux之间的FTP文件名限制导致上述错误的产生.该问题属系统兼容性故障,较难解决(几乎无法根本解决,只能通过用户修改文件名).很难评定是windows系统的问

如何选购服务器之判断服务器好坏

如今服务器市场上配置高.价格低的服务器到处是,还有的服务器配置低价格却很高,导致服务器市场十分杂乱,让人不知道选择哪种服务器才好. 昨天我们有个客户从别处租了个服务器四核CPU. 8G内存价格才300元一月,和我们这双核CPU. 1G内存同样的价格了,不过经过我们测试,他们的服务器虽然配置高,但稳定性还不如我们1G内存的服务器,实践证明配置高的服务器不一定就好. 我们是通过以下方法测试的: 1.首先我们测试服务器内运行的速度,我们可以通过安装普通软件的速度(如MSSQL2005或MSSQL200

实现一个基本的静态文件服务的Web服务器

var fs=require("fs"); var http=require("http"); var url=require("url"); const ROOT_DIR="html/"; http.createServer(function(req,res){ var urlObj=url.parse(req.url,true,false); fs.readFile(ROOT_DIR+urlObj.pathname,(er