首页 > 代码库 > 2.3FTP服务
2.3FTP服务
FTP服务概述:
FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。
FTP(File Transfer Protocol: 文件传输协议)作用: Internet 上用来传送文件的协议
常见FTP服务器:
windows:Serv-U FTP Server
Linux:ProFTPD:(Professional FTP daemon)一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序。
VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。
特点:它是一个安全、高速、稳定的FTP服务器;
模式: C/S 模式
端口:20 (传数据) 21 (传指令)
fsp(File Service Protocol): 文件服务协议。
安装vsftp服务器端 vsftpd ,
客户端 lftp:
lftp 是一个功能强大的下载工具,它支持访问文件的协议: ftp, ftps, http, https, hftp, fish.(其中ftps和https需要在编译的时候包含openssl库)。llftp的界面非常好一个shell: 有命令补全,历史记录,允许多个后台任务执行等功能,使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下载等功能。
配置文件
/var/ftp/pub/ #默认的共享目录
/etc/vsftpd/vsftpd.conf #vsftpd主配置文件
/etc/vsftpd/ftpusers #用户指定哪些用户不能访问ftp服务器,黑名单
/etc/vsftpd/user_list #用户指定哪些用户能访问ftp服务器,白名单
/var/ftp/ #默认情况下匿名用户的根目录,默认权限755,不用更改该权限
启动服务 service vsftpd restart
开机启动chkconfig vsftpd on
监听 netstat -anptu | grep ftp
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 2877/vsftpd
为什么看不到20端口?:因为没有数据通信。
例1:
允许所有员工上传和下载文件,并允许创建用
户自己的目录。
允许匿名用户访问
anonymous_enable=YES
允许匿名用户上传文件并可以创建目录
anon_upload_enable=YES
anon_mkdir_write_enable=YES
将ftp跟目录的用户属性改:chown ftp /var/ftp/XXXX
重启服务后可以看见能上传,能新建,但不能重命名 ,谁建谁删,加1权限
注:工作中,匿名用户只是只读访问,写的权限也没有的。
例2:
结合FTP 和WEB 服务器,FTP 的功能主要用于维护公司的网站内容,包括上传文
件、创建目录、更新网页等等。创建team1 和team2 帐号登录FTP 服务器,但不能登录本地系统,并将
这两个帐号的根目录限制为/var/www/html,不能进入该目录以外的任何目录。
只允许:team1和team2两用户 可以上传。 vsftp禁止匿名。
useradd -s /sbin/nologin team1 和 2
echo "123456" | passwd --stdin team1 和 2
主配置文件
cp vsftpd.conf vsftpd.conf.back
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO:禁止匿名用户登录
local_enable=YES:允许本地用户登录
local_root=/var/www/html:设置本地用户的根目录为/var/www/html
chroot_list_enable=YES:激chroot 功能
chroot_list_file=/etc/vsftpd/chroot_list:设置锁定用户在根目录中的列表文件。此文件存放要锁定的用户名
创建文件touch /etc/vsftpd/chroot_list
添加用户vim /etc/vsftpd/chroot_list #写入以下内容,一行,一个用户名
team1
team2
重启service vsftpd restart
改权限:chmod -R o+w /var/www/html/
g+s会继成文件的权限属性
验证,测试 Linux:lftp ip ;window ftp://ip
例3:
普通员工只能查看和下载,经理有上传和下载。
ftp虚拟用户的使用跟软连接相似,ftp的用户和系统用户进行分离,这样即使黑客破解了ftp的账号和密码,也只是能访问ftp共享出来的内容,对服务器本身没有任何影响,能提高服务器的安全性。
创建用户文本文件,在此文件中添加虚拟用户,两行为一组,分别对应用户名和密码
vim /etc/vsftpd/vusers.list
xsb
123
boss
456
注:其中xsb为普通员工登录账号,boss为经理登录账号
2、生成数据库
使用db_load生成,如果没有此命令,可以使用以下命令进行安装
rpm -qf `which db_load`
yum -y install db4-utils
生成用户数据库
db_load -T -t hash -f /etc/vsftpd/vusers.list /etc/vsftpd/vusers.db
注:-T:允许应用程序能够将文本文件转 译载入数据库
-t:hash使用hash码加密
-f:指定包含用户名和密码的文本文件
3、修改数据库文件的访问权限,提高安全性,只允许root用户拥有读写权限,防止非法用户盗取
chmod 600 /etc/vsftpd/vusers.db
4、创建两个系统用户virtual和rm并修改目录权限
chmod 600 /etc/vsftpd/vusers.db
useradd -d /var/ftp/xsb -s /sbin/nologin virtual
useradd -d /var/ftp/boss -s /sbin/nologin lhz
chmod 755 /var/ftp/xsb/
5、配置PAM文件
为了是服务器能使用数据库文件,对客户端进行身份验证,需要调用系统的PAM模块
PAM(Plugable Authentication Module)为可插拔认证模块,不必重新安装应用系统,通过修
改指定的配置文件,调整对该程序的认证方式。PAM 模块配置文件路径为/etc/pam.d/目录,此
目录下保存着大量与认证有关的配置文件,并以服务名称命名。
vim /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers
注:文件最后调用的数据库文件时省略掉了db后缀
6、修改主配置文件
vim /etc/vsftpd/vsftpd.conf
匿名用户 NO
local_enable=YES #允许本地用户登录
write_enable=YES #允许写入
local改anon _umask=022 #设置上传文件的默认权限
chroot_local_user=YES #限制目录
#guest_enable=YES #开启虚拟用户支持,可以在用户单独配置文件中设置
#guest_username=virtual #设置映射本地用户,可以在用户单独配置文件中设置
pam_service_name=vsftpd.vu #指定PAM文件
max_clients=300 #最大接入的客户端数量
max_per_ip=10 #设置每个IP地址最大连接数
如果在主配置文件中开启了虚拟用户支持,并配置了虚拟用户映射的本地用户,那么这些配置好之后虚拟用户就能在客户端进行登录了,但是所有的虚拟用户权限一样。
建立独立的配置文件,设置不同用户的权限
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir #指定用户配置文件的路径
vim /etc/vsftpd/vusers_dir/xsb
guest_enable=yes
guest_username=virtual
anon_world_readable_only=no #允许匿名用户浏览整个服务器的文件
anon_max_rate=50000 #设置传输速率为50KB/s
vim /etc/vsftpd/vusers_dir/boss
guest_enable=yes
guest_username=lhz
anon_world_readable_only=no
write_enable=yes
anon_mkdir_write_enable=yes #允许创建目录
anon_upload_enable=yes #允许上传文件
anon_max_rate=100000 #甚至传输速率为100KB/s
anon_other_write_enable=yes #允许修改、重命名、删除文件
客户端验证
使用xsb用户登录时,上传文件失败,权限不允许
chmod 755 /var/ftp/boss/
2.3FTP服务