linux杂谈(十四):ftp的企业应用级的配置(一)

1.ftp简介

(1)生活中的ftp

在互联网中我们需要传输数据,尤其是要传输大型数据。有一个服务是要着重去介绍的:ftp。其实我们以前很早就接触它了。只是大家可能不怎么关注,迅雷的基本模型就是ftp,不过是要高级的多。

事实上ftp应该是一种传输协议,之前它采用的是明文传输,如果在复杂的网络环境这样使用的话是非常危险的。为了更安全的使用这个协议,现在我们要采取更安全的软件vsftpd来提供服务。

(2)ftp的功能介绍

1.它有着不同等级的用户身份:服务器本地用户;访客;匿名用户;

2.命令记录与日志记录;

3.限制用户的家目录;

以上三点将会在我们接下来的实验中体现出来,总之是一个宗旨:我们的服务器功能尽量单一,给客户提供功能的同时要保证服务器的安全。

(3)ftp的工作流程

首先我们要知道ftp使用的协议是TCP协议,因为大型数据的传输是要建立起稳定的链接的。ftp的服务器使用两个链接,分别是命令管道和数据管道,这样做是非常正确的,因为即使是在计算机的操作系统上也是把代码段和数据段分开的,这会非常的高效。

命令管道端口:21

数据传输端口:20

2.ftp服务器的搭建

(1)首先我们来看看ftp服务器的安装包:

安装完了之后我们要清楚两个东西:

1.ftp服务器的配置文件目录:  /etc/vsftpd

2.ftp服务器的默认发布目录:
    /var/ftp/pub    (这个是可以修改的)

(2)这次我们要体现ftp服务器配置的安全意识,所以把selinux打开,修改配置文件/etc/sysconfig/selinux :

(3)我们直接开启服务看看能够提供什么功能:

另外一台客户机去访问该服务器:

访问是不被允许的,难道是我们服务器的防火墙没有刷:

再次访问试试:

这次就可以登录了,遇到这种问题一般是火墙没有刷掉。关于服务器所开放的功能,我们要去看看vsftpd的配置文件vsftpd.conf。但是大家要注意的是:我们刚刚使用的是匿名用户登录,这其实是不太好的。如果每个人都可以去下载你的数据,带宽很容易被耗尽,最关键的是太不安全。所以一般情况下我们是不会开放匿名用户登录的,这里是为了实验。

这个是配置文件的一部分,我们要配置一定的服务就是要设置这些关键字的值,例如12行的anonymous_enable = YES就是代表所有人都可以访问ftp。

ftp的配置文件比较复杂(这个是列举网友总结下来的):

1.登录和对匿名用户的设置

write_enable=YES                                                //是否对登录用户开启写权限。属全局性设置。默认NO

local_enable=YES                                                //是否允许本地用户登录FTP服务器。默认为NO

anonymous_enable=YES                                      //设置是否允许匿名用户登录FTP服务器。默认为YES

ftp_username=ftp                                                 //定义匿名用户的账户名称,默认值为ftp。

no_anon_password=YES                                      //匿名用户登录时是否询问口令。设置为YES,则不询问。默认NO

anon_world_readable_only=YES                            //匿名用户是否允许下载可阅读的文档,默认为YES。

anon_upload_enable=YES                                    //是否允许匿名用户上传文件。只有在write_enable设置为YES,该配置项才有效。而且匿名用户对相应的目录必须有写限。

anon_mkdir_write_enable=YES                             //是否允许匿名用户创建目录。只有在write_enable设置为    YES时有效。且匿名用户对上层目录有写入的权限。

anon_other_write_enable=NO                                //若设置为YES,则匿名用户会被允许拥有多于上传和建立目录的权限,还会拥有删除和更名权限。默认值为NO。

2.设置欢迎信息

用户登录FTP服务器成功后,服务器可向登录用户输出预设置的欢迎信息。

ftpd_banner=Welcome to my FTP server.

//该配置项用于设置比较简短的欢迎信息。若欢迎信息较多,则可使用banner_file配置项。

banner_file=/etc/vsftpd/banner

//设置用户登录时,将要显示输出的文件。该设置项将覆盖ftpd_banner的设置。

dirmessage_enable=YES

//设置是否显示目录消息。若设置为YES,则当用户进入特定目录(比如/var/ftp/linux)时,将显示该目录中的由message_file配置项指定的文件(.message)中的内容。

message_file=.message          //设置目录消息文件。可将显示信息存入该文件。该文件需要放在 相应的目录(比如/var/ftp/linux)下

3.设置用户登录后所在的目录

local_root=/var/ftp

// 设置本地用户登录后所在的目录。默认配置文件中没有设置该项,此时用户登录FTP服务器后,所在的目录为该用户的主目录,对于root用户,则为/root目录。

anon_root=/var/ftp

//设置匿名用户登录后所在的目录。若未指定,则默认为/var/ftp目录。

4.控制用户是否允许切换到上级目录

在默认配置下,用户可以使用“cd..”命名切换到上级目录。比如,若用户登录后所在的目录为/var/ftp,则在“ftp>”命令行 下,执行“cd..”命令后,用户将切换到其上级目录/var,若继续执行该命令,则可进入Linux系统的根目录,从而可以对整个Linux的文件系统 进行操作。

若设置了write_enable=YES,则用户还可对根目录下的文件进行改写操作,会给系统带来极大的安全隐患,因此,必须防止用户切换到Linux的根目录,相关的配置项如下:

chroot_list_enable=YES

// 设置是否启用chroot_list_file配置项指定的用户列表文件。设置为YES则除了列在j/etc/vsftpd/chroot_list文件中的的帐号外,所有登录的用户都可以进入ftp根目录之外的目录。默认NO

chroot_list_file=/etc/vsftpd/chroot_list

// 用于指定用户列表文件,该文件用于控制哪些用户可以切换到FTP站点根目录的上级目录。

chroot_local_user=YES

// 用于指定用户列表文件中的用户,是否允许切换到上级目录。默认NO

注意:要对本地用户查看效果,需先设置local_root=/var/ftp

具体情况有以下几种:

1)当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd/chroot_list文件中列出的用户,可以切换到上级目录;未在文件中列出的用户,不能切换到站点根目录的上级目录。

2)当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd/chroot_list文件中列出的用户,不能切换到站点根目录的上级目录;未在文件中列出的用户,可以切换到上级目录。

3)当chroot_list_enable=NO,chroot_local_user=YES时,所有用户均不能切换到上级目录。

4)当chroot_list_enable=NO,chroot_local_user=NO时,所有用户均可以切换到上级目录。

5)当用户不允许切换到上级目录时,登录后FTP站点的根目录“/”是该FTP账户的主目录,即文件的系统的/var/ftp目录。

5.设置访问控制

(1)设置允许或不允许访问的主机(见TBP14)

tcp_wrappers=YES 用来设置vsftpd服务器是否与tcp wrapper相结合,进行主机的访问控制。默认设置为YES,vsftpd服务器会检查/etc/hosts.allow和/etc /hosts.deny中的设置,以决定请求连接的主机是否允许访问该FTP服务器。这两个文件可以起到简易的防火墙功能。

比如,若要仅允许192.168.168.1~192.168.168.254的用户,可以访问连接vsftpd服务器,则可在/etc/hosts.allow文件中添加以下内容:

vsftpd:192.168.168.0/255.255.255.0 :allow

all:all:deny

(2)设置允许或不允许访问的用户

对用户的访问控制由/etc/vsftpd/user_list和/etc/vsftpd/ftpusers文件来控制实现。相关配置命令如下:

userlist_enable=YES

// 决定/etc/vsftpd/user_list文件是否启用生效。YES则生效,NO不生效。

userlist_deny=YES

// 决定/etc/vsftpd/user_list文件中的用户是允许访问还是不允许访问。若设置为YES,则/etc/vsftpd/user_list 文件中的用户将不允许访问FTP服务器;若设置为NO,则只有vsftpd.user_list文件中的用户,才能访问FTP服务器。

6.设置访问速度

anon_max_rate=0

//设置匿名用户所能使用的最大传输速度,单位为b/s。若设置为0,则不受速度限制,此为默认值。

local_max_rate=0

// 设置本地用户所能使用的最大传输速度。默认为0,不受限制。

7.定义用户配置文件

在vsftpd服务器中,不同用户还可使用不同的配置,这要通过用户配置文件来实现。

user_config_dir=/etc/vsftpd/userconf //用于设置用户配置文件所在的目录。

设 置了该配置项后,当用户登录FTP服务器时,系统就会到/etc/vsftpd/userconf目录下读取与当前用户名相同的文件,并根据文件中的配置 命令,对当前用户进行更进一步的配置。比如,利用用户配置文件,可实现对不同用户进行访问的速度进行控制,在各用户配置文件中,定义 local_max_rate配置,以决定该用户允许的访问速度。

8.与连接相关的设置

listen=YES

// 设置vsftpd服务器是否以standalone模式运行。以standalone模式运行是一种较好的方式,此时listen必须设置为YES,此为 默认值,建议不要更改。很多与服务器运行相关的配置命令,需要此运行模式才有效。若设置为NO,则vsftpd不是以独立的服务运行,要受xinetd服 务的管理控制,功能上会受限制。

max_clients=0

//设置vsftpd允许的最大连接数,默认为0,表示不受限制。若设置为150时,则同时允许有150个连接,超出的将拒绝建立连接。只有在以standalone模式运行时才有效。

max_per_ip=0

// 设置每个IP地址允许与FTP服务器同时建立连接的数目。默认为0,不受限制。通常可对此配置进行设置,防止同一个用户建立太多的连接。只有在以standalone模式运行时才有效。

listen_address=IP地址

//设置在指 定的IP地址上侦听用户的FTP请求。若不设置,则对服务器所绑定的所有IP地址进行侦听。只有在以standalone模式运行时才有效。对于只绑定了 一个IP地址的服务器,不需要配置该项,默认情况下,配置文件中没有该配置项。若服务器同时绑定了多个IP地址,则应通过该配置项,指定在哪个IP地址上 提供FTP服务,即指定FTP服务器所使用的IP地址。

注意:设置此值前后,可以通过netstat -tnl对比端口的监听情况

accept_timeout=60

//设置建立被动(PASV)数据连接的超时时间,单位为秒,默认值为60。

connect_timeout=60

// PORT方式下建立数据连接的超时时间,单位为秒。

data_connection_timeout=300

//设置建立FTP数据连接的超时时间,默认为300秒。

idle_session_timeout=600

//设置多长时间不对FTP服务器进行任何操作,则断开该FTP连接,单位为秒,默认为600秒。即设置发呆的逾时时间,在这个时间内,若没有数据传送或指令的输入,则会强行断开连接。

pam_service_name=vsftpd

//设置在PAM所使用的名称,默认值为vsftpd。

setproctitle_enable=NO|YES

//设置每个与FTP服务器的连接,是否以不同的进程表现出来,默认值为NO,此时只有一个名为vsftpd的进程。若设置为YES,则每个连接都会有一个vsftpd进程,使用“ps -ef|grep ftp”命令可查看到详细的FTP连接信息。安全起见,建议关闭。

9.FTP工作方式与端口设置

(1)FTP工作方式简介

FTP的工作方式有两种,一种是PORT FTP,另一种是PASV FTP。下面介绍其工作方式。

二者的区别在于PORT FTP的数据传输端口是由FTP服务器指定的,而PASV FTP则是由FTP客户端指定的,而且每次数据连接所使用的端口号都不同。正因为如此,所以在CuteFTP等FTP客户端软件中,其连接类型设置项中有PORT和PASV两种选择。

当FTP服务器设置为PASV工作模式时,客户端也必须设置为PASV连接类型。若客户端连接类型设置为PORT,则能建立FTP连接,但在执行ls或get等需要数据请求的命令时,将会出现无响应并最终报告无法建立数据连接。

(2)与端口相关的配置

listen_port=21

// 设置FTP服务器建立连接所侦听的端口,默认值为21。

连接非标准端口示例:ftp www.sunflower.org 7000

connect_from_port_20=YES

// 默认值为YES,指定FTP数据传输连接使用20端口。若设置为NO,则进行数据连接时,所使用的端口由ftp_data_port指定。

ftp_data_port=20

//设置PORT方式下FTP数据连接所使用的端口,默认值为20。

pasv_enable=YES|NO

//若设置为YES,则使用PASV工作模式;若设置为NO,使用PORT模式。默认为YES,即使用PASV模式。

pasv_max_port=0

//设置在PASV工作方式下,数据连接可以使用的端口范围的上界。默认值为0,表示任意端口。

pasv_mim_port=0

//设置在PASV工作方式下,数据连接可以使用的端口范围的下界。默认值为0,表示任意端口。

10.设置传输模式

FTP在传输数据时,可使用二进制(Binary)方式,也可使用ASCII模式来上传或下载数据。

ascii_download_enable=YES //设置是否启用ASCII模式下载数据。默认为NO。

ascii_upload_enable=YES    //设置是否启用ASCII模式上传数据。默认为NO。

11.设置上传文档的所属关系和权限

(1)设置匿名上传文档的属主

chown_uploads=YES

//用于设置是否改变匿名用户上传的文档的属主。默认为NO。若设置为YES,则匿名用户上传的文档的属主将被设置为chown_username配置项所设置的用户名。

chown_username=whoever

//设置匿名用户上传的文档的属主名。只有chown_uploads=YES时才有效。建议不要设置为root用户。 但系统默root

(2)新增文档的权限设定

local_umask=022

// 设置本地用户新增文档的umask,默认为022,对应的权限为755。umask为022,对应的二进制数为000 010 010,将其取反为111 101 101,转换成十进制数,即为权限值755,代表文档的所有者(属主)有读写执行权,所属组有读和执行权,其他用户有读和执行权。022适合于大多数情 况,一般不需要更改。若设置为077,则对应的权限为700。

anon_umask=022               //设置匿名用户新增文档的umask。默认077

file_open_mode=0755          //设置上传文档的权限。权限采用数字格式。 默认0666

12.日志文件

xferlog_enable=YES             //是否启用上传/下载日志记录。默认为NO

xferlog_file=var/log/vsftpd.log //设置日志文件名及路径。需启用xferlog_enable选项

xferlog_std_format=YES           //日志文件是否使用标准的xferlog日志文件格式(与wu-ftpd使用的格式相同) 。默认为NO

13.其他设置

text_userdb_names=NO

//设置在执行ls命令时,是显示UID、GID还是显示出具体的用户名或组名称。默认为NO,以UID和GID方式显示,若希望显示用户名和组名称,则设置为YES。

ls_recurse_enable=YES

//若设置为YES,则允许执行“ls –R”这个命令,默认值为NO。在配置文件中该配置项被注释掉了,与此类似的还有一些配置,需要启用时,将注释符去掉并进行YES或NO的设置即可

4.匿名用户家目录的修改

有的时候我们并不想让匿名用户访问默认发布目录,而是让它访问我们另外设置的目录,要做如下修改:

(1)首先我们要创建新的默认发布目录,并且创建了5个文件:

(2)修改配置文件:

(3)但是我们发现它的安全上下文并不是ftp的,这样即使开放服务匿名用户也是看不到的,所以我们要修改他们的安全上下文:

看到这里并不能算结束,因为我们把selinux也打开了,所要还要查看ftp选项的布尔值,当它允许匿名登录时才可以:

重启服务看看效果:

显示的刚好就是我们传见的五个文件,说明此时ftp的匿名发布目录已经更改为了/ftp/pub。

通知:

因为ftp的配置示例挺复杂的,分几个帖子讲解。但是我尽量会把示例讲的清楚,所有的示例运用自如的话,是可以满足企业的工作要求的。

下午在更剩下的示例。

linux杂谈(十四):ftp的企业应用级的配置(一),布布扣,bubuko.com

时间: 2024-10-13 16:15:39

linux杂谈(十四):ftp的企业应用级的配置(一)的相关文章

linux杂谈(十五):ftp的企业应用级的配置(二)

上篇最后我们讲到了匿名用户家目录的修改,今天来看看匿名用户还可以做什么操作. 1.匿名用户创建和删除目录 其实所有的功能都是上篇所列举的那些参数所控制的,通常大家在记不清的时候都可以查看man手册(man vsftpd.conf),里面列举了所有可以修改的参数.关于匿名用户创建和删除目录的参数如下所示: 把这两个参数设置为YES,匿名用户就可已创建目录了,记得每次修改完配置文件都要重新启动/etc/init.d/vsftpd服务. 发现还是无法创建,怎么回事?其实我们考虑问题一定要全面.虽然配置

linux杂谈(十六):ftp的企业应用级配置(三)

这次我们来讲解黑名单,白名单以及内网和外网的ftp的访问的不同设置. 1.黑名单 有的时候我们不想让某些本地用户登录,这个时候就要设置黑名单了,它在/etc/vsftpd下: 如何添加一个用户到黑名单: (1)首先我们把一个用户(westos)添加到ftpusers: 重启服务(并且刷掉火墙)后看是否可以登录: westos登录需要输入密码,但是不能登录,此刻为黑名单. (2)我们在把westos添加到user_list中看看: 看到上面的那个提示了么,当userlist_deny=NO时,只允

攻城狮在路上(叁)Linux(十四)--- 查阅文件内容

常用命令:cat.tac.nl.more.less.head.tail.od... 一.直接查看文件内容:cat.tac.nl <==一次性全部读取 1.cat [-AbEnTv] 文件名 参数说明: -n:打印出行号,连同空白行也有行号. -b:打印出行号,但是仅显示空白行. -E:将结尾的换行字符$显示出来. -T:将[Tab]以^T显示出来. -v:列出一些看不出来的特殊字符. -A:相当于-vET参数. 2.tac:效果与cat相反,反向显示. 3.nl:添加行号打印. 二.可翻页查看:

马哥教育第二十四ftp协议、vsftpd的高级应用、rpc概念及nfs的基本应用、samba及其基本应用

1.ftp协议及vsftpd的基本应用         文件共享服务:                 工作在应用层:ftp(file transfer protocol)                          应用层协议:tcp,                  工作在内核:nfs                 跨平台:samba           ftp工作在221号端口,传输数据:                  命令连接:文件管理类命令,始终在线的连接       

学习Linux第十四节课

Apache配置静态网站,使用http协议.服务名称为httpd yum仓库最简格式[yum]name=yumbaseurl=file:///media/cdrom http:/// ftp:/// enable=1gpgcheck=0 SELinux安全子系统1.域(服务)2.上下文(内容) getenforce 查看SELinux状态 enforcing.permissive.disablesetenforce 设置状态0.1(临时) semanage管理SELinux策略restoreco

linux基础十四

1.tune2fs -l /dev/DEVICE     -l:查看超级块中的信息     -L lable:设定卷标     -m:预留管理员的空间     -j:如果原来的文件系统的为ext2,-j能够将其提升为ext3     -o:设定默认挂载选项     -O:调整分区特性           2.fsck 修复文件系统错误     -t: tstype     -a:自动修复错误     -r:交互式修复错误      3.修改交换分区     mkswap /dev/DEVICE

Linux(十四)centos 7查看分区的UUID

1.blkid [[email protected] ~]# blkid/dev/sr0: UUID="2014-07-06-17-32-07-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/sda1: UUID="3dd50bef-ec33-467d-a249-5aacf78d478c" TYPE="ext3"

【我的Linux,我做主!】企业军工级安全策略--SELinux实战

(一)了解SELinux是如何工作的SELinux(Security-Enhanced Linux)是美国国家安全局(NSA)对于强制访问控制的实现,是Linux历史上最杰出的新安全子系统.NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件.SELinux默认安装在Fedora和Red Hat Enterprise Linux上,也可以作为其他发行版上容易安装的包得到.SELinux是2.6版本的Linux内核中提供的强制访

一起学Netty(十四)之 Netty生产级的心跳和重连机制

sigh,写这篇博客的时候老脸还是红了一下,心里还是有些唏嘘的,应该算是剽窃吧,每个人的代码功力的确是有差距的,好在文章的标题是"一起学",而不是开涛大神的"跟我学"系列的文章,我们还是多花点时间学习吧,感叹无用~ 最近工作比较忙,但闲暇之余还是看了阿里的冯家春(fengjiachun)的github上的开源代码Jupiter,写的RPC框架让我感叹人外有人,废话不多说,下面的代码全部截取自Jupiter,写了一个比较完整的例子,供大家一起学习分享,再次对@Luca