​​配置与管理FTP服务器

FTP的基本认识

ftp

局域网共享 nfs smb

互联网共享 ftp http

 ftp 文件传输协议

工作模式

主动模式   21 验证端口  20 数据传输端口

被动模式   21 验证端口  大于1024随机端口作为传输端口<默认工作模式>

服务端

IIS(ftp),server-u(windows)

wu-ftp,proftp,vsftpd(类unix)

Very Secure FTP Daemon---vsftpd

客户端

linux: ftp|lftp|sftp

windows 浏览器|cute-ftp上传|filezilla<windows|linux>

VSFTP软件列表|了解配置文件<主|子>

rpm -ql vsftpd

/etc/logrotate.d/vsftpd   --日志轮循

/etc/pam.d/vsftpd         --认证模块

/etc/rc.d/init.d/vsftpd   --启动脚本

/etc/vsftpd            

/etc/vsftpd/ftpusers      --拒绝用户登录ftp

/etc/vsftpd/user_list     --用户登录ftp(拒绝|只允许)

/etc/vsftpd/vsftpd.conf   --主配置文件

/etc/vsftpd/vsftpd_conf_migrate.sh

/usr/sbin/vsftpd          -- 二进制命令

/usr/share/doc/vsftpd-2.2.2  --帮助手册

/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_HOSTS  --虚拟主机

/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS  --虚拟用户

/usr/share/man/man5/vsftpd.conf.5.gz

/var/ftp       --ftp匿名用户的家目录

/var/ftp/pub   --ftp扩展目录

常用功能

cat /etc/vsftpd/vsftpd.conf  |grep -v ^# |grep -v ^$

anonymous_enable=YES    --匿名用户

local_enable=YES        --本地用户

write_enable=YES        --全局选项 可读写      

local_umask=022         --本地文件反掩码 755

dirmessage_enable=YES   --开启用户家目录消息  $HOME/.massages  

xferlog_enable=YES      --启动ftp日志

connect_from_port_20=YES  --以主动模式

xferlog_std_format=YES   --支持旧的ftp日志格式

listen=YES               --监听21端口

pam_service_name=vsftpd  --pam认证名称

userlist_enable=YES      --启用/etc/vsftpd/user_list 默认拒绝列表

tcp_wrappers=YES         --启用tcpwrappers防火墙  /etc/hosts.allow /etc/hosts.deny

anon 匿名用户变量

local 本地用户变量

非(anon|local) 全局变量

任务1、vsftpd服务的安装

(1)检查是否安装了vsftpd

(2)安装vsftpd

(3)vsftpd的启动

(4)vsftp的简单测试(注意要先关闭防火墙(iptables -F),再关闭selinux(setenfore 0))

Linux端的测试:

windows端的测试:

浏览器中的测试

任务2:允许匿名用户访问、上传和下载文件;并允许匿名用户创建目录

Linux下vsftp匿名用户上传和下载的配置

配置要注意三部分,请一一仔细对照:

1、vsftpd.conf文件的配置(vim /etc/vsftpd/vsftpd.conf)

#允许匿名用户登录FTP

anonymous_enable=YES

#设置匿名用户的登录目录(如需要,需自己添加并修改)

anon_root=/var/ftp/pub

#打开匿名用户的上传权限

anon_upload_enable=YES

#打开匿名用户创建目录的权限

anon_mkdir_write_enable=YES

#打开匿名用户删除和重命名的权限(如需要,需自己添加)

anon_other_write_enable=YES

2、ftp目录的权限设置

默认情况下,ftp的根目录为/var/ftp,为了安全,这个目录默认不允许设置为777权限,否则ftp将无法访问。但是我们要匿名上传文件,需要“other”用户的写权限,正确的做法:

在/var/ftp中建立一个upload(名字自己起吧)文件夹,将个文件夹权限设置为777(视具体需要自己设),在upload这个文件夹中,匿名用户可以上传文件、创建文件夹、删除文件等。

一般至此,便实现vsftpd匿名用户的上传下载了。如果还不行,就是下面的问题。

3、selinux的配置

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

最简单的办法,关闭selinux

方法1:修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。

方法2:用命令setenforce 0,无需重启。(setenforce的格式:setenforce [ Enforcing | Permissive | 1 | 0 ])

任务3   要允许team1和team2账号登录服务器,但不能登录本地系统;并将这两个账号的根目录限制为/var/www/html,不能进入该项目以外的任何目录

  1. 建立FTP账号:team1和team2

  1. 设置team1和team2密码

(3)vsftpd.conf的配置

从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。

 要修复这个错误,

方案一:用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。

方案二:在vsftpd的配置文件中增加下列两项中的一项 allow_writeable_chroot=YES

  1. 建立/etc/vsftpd/chroot_list文件

输入FTP账号:team1和team2

(5)修改本权限

(6)测试结果

关于目录锁定的注意事项:1、一般来说, 默认的是每个用户只能访问/home/username目录下的文件, 但是作为服务器来讲, 把网站文件存到各自的目录下有点不现实, 比如说TOM和JACK两个用户同时具有访问某一个指定的目录,比如说网站的根目录/var/www/,  VSFTPD的默认的配置文件就无法实现这样的功能, 而这个功能又是在网站的文件管理过程中又非常实用. 下面是这方面的配置, 为方便突出重点, 只讨论有关这个需求的几个参数,要达到此项需求, 主要用到chroot_local_user,chroot_list_enable, local_root, vsftp.chroot.list,这几个参数,  其中参数local_root需要手动在配置文件(vsftp.conf)中添加,vsftpd.chroot_list需要在/etc添加新文件(vim /etc/vsftpd/vsftpd.chroot_list)

 基于chroot_local_user,chroot_list_enable这两项决定着它的整个功能的实现, 其参数值是YES,NO, 根据排列组合原理可以得出4种不同的设置方法, 它们共同决定着vsftpd.chroot_list中定义的用户的访问权限及是否漂移(也就是能否访问指定目录外的其他文件), 这里又分两种情况, 第一种情况是在vsftpd.chroot_list定义的用户(list用户), 第二种是vsftpd.chroot_list(简称非list)

下面是四种情况这两用户组的访问情况(再次说明, 默认其他的vsftpd.conf参数已经设置完成的情况)

第一种情况:

chroot_local_user=YES

chroot_list_enable=YES

效果: list用户组漂移, 非list用户组固定

第二种情况:

chroot_local_user=YES

chroot_list_enable=NO

效果: list用户组固定, 非list用户组固定

 第三种情况:

chroot_local_user=NO

chroot_list_enable=NO

效果: list用户组漂移, 非list用户组漂移

第四种情况:

chroot_local_user=NO

chroot_list_enable=YES

效果: list用户组固定, 非list用户组漂移

2、用户访问权限都固定在同一个目录下, 这个目录是由local_root属性值来确定的。需建如local_root=/var/www。

任务4 开启目录消息的功能

dirmessage_enable=YES

vim /var/ftp/.message --匿名用户消息

echo "welcomt to user1" > /home/user1/.message  普通用户user1用户消息

测试

[root@node2 tmp]# ftp 192.168.1.150

Connected to 192.168.1.150 (192.168.1.150).

220 (vsFTPd 2.2.2)

Name (192.168. 1.150:root): user1

331 Please specify the password.

Password:

230-welcomt to user1 ---->

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> exit

务5、指定匿名用户和认证用户上传文件到不同的目录

默认 本地用户ftp家   $HOME  /home/cw01

     匿名用户ftp家   /var/ftp

改变

   所有本地用户ftp家  /rhome/local

   匿名用户ftp家      /rhome/anon

1. 新建目录

mkdir -p /rhome/{local,anon}

mkdir /rhome/local/local_home

mkdir /rhome/anon/anon_home

2.定义配置文件

#userlist_deny=NO

local_root=/rhome/local

anon_root=/rhome/anon

3重启

service vsftpd restart

4 测试

[root@node2 ~]# lftp 192.168.1.150

lftp 192.168.1.150:~> ls

drwxr-xr-x    2 0        0            4096 May 21 23:41 anon_home

lftp 192.168.1.150:/> user cw01

口令:

lftp cw01@192.168.1.150:~> ls

drwxr-xr-x    2 0        0            4096 May 21 23:40 local_home

lftp cw01@192.168.1.150:~> user rs01

口令:

lftp rs01@192.168.1.150:~> ls

drwxr-xr-x    2 0        0            4096 May 21 23:40 local_home

任务6、用户访问控制

vsftp对用户的访问控制是由/etc/vsftpd/user_list和/etc/vsftpd/ftpusers控制实现的

/etc/vsftpd/ftpusers文件是专门用于定义不允许登录FTP的用户

 1、userlist_enable=yes   userlist_deny=yes (默认)

 /etc/vsftpd/user_list和/etc/vsftpd/ftpusers中的用户都不能访问FTP服务器

 2、userlist_enable=yes   userlist_deny=no

 /etc/vsftpd/user_list中的允许,/etc/vsftpd/ftpusers中的仍然是不允许

做法是:user_list指定允许访问用户,在/etc/vsftpd/vsftpd.conf中设置

 userlist_enable=YES

 userlist_deny=NO

 #userlist_file=/etc/vsftpd/user_list

任务7、基于不同IP地址的虚拟主机

  1. 为网卡创建子接口

  1. 建立匿名用户
  1. 建立多级目录

  1. 创建测试文件

  1. 创建本地账号myftp,并指定其主目录为/var/myftp

  1. 创建虚拟FTP服务器的配置文件

添加以下内容

  1. 编辑原来vsftpd的配置文件/etc/vsftpd/vsftpd,conf

在listen=YES下添加一行

  1. 测试

  1. 运行第2个虚拟主机,命令如下:

  1. 查看vsftpd服务器进程,命令如下

任务8、设置vsftp虚拟账号

(1)默认安装ftp后是匿名用户访问的,首先要禁用匿名用户访问

(2) 在/etc/vsftpd目录下创建vlogin.txt文件用来存储虚拟用户的用户名和密码

  1. 安装 db4-utils-4.3.29-10.el5.i386.rpm

(2)使用db_load命令把vlogin.txt文件转换成数据库文件

(3) 更改文件权限,保证安全

(4) 编辑PAM文件(PAM模块配置文件路径为etc/pam.d/目录)此目录下保存着大量与认证有关的配置文件并以服务名称命名

(5)建立虚拟用户设置该用户所要访问额目录,并设置虚拟用户的访问权限

(6)编辑/etc/vsftpd/vsftpd.conf

(7)重启服务

(8)使用虚拟用户登录ftp服务器进行测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值