FTP与TFTP传输

VSFTPD简介

vsftpd(very secure ftp daemon),非常安全的FTP守护进程

FTP文件传输协议

默认端口:

 21——用于接收客户端发出的相关FTP命令与参数
 20——用于数据传输

两种模式:

 主动:向客户端发起连接
 被动:等待客户端发起连接(FTP的默认工作模式)

特点:

vsftpd是一款运行在Linux操作系统上的FTP服务程序,完全开源而且免费;
具有很高的安全性、传输速度,支持虚拟用户验证等其他FTP服务程序不具备的特点。

注意:

安装vsftpd,因为iptables防火墙管理工具默认禁止了FTP传输协议的端口号,清空iptables防火墙的默认策略并永久生效,以避免被这些默认策略影响vsftpd服务的配置。

vsftpd服务

允许三种模式认证登录:匿名、本地、虚拟。

匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器。

<1>安装并配置
yum install -y vsftpd  						安装vsftpd(-y自动yes)
cd /etc/vsftpd/ 							路径
mv vsftpd.conf vsftpd.conf_bak 				重命名
grep -v "#" vsftpd.conf_bak > vsftpd.conf	提取非#行内容
vim vsftpd.conf								配置文件
####内容#####
anonymous_enable=YES						是否允许匿名用户访问
<----‘要添加的内容’---->
(1)anon_umask=022							匿名用户上传文件的umask值
(2)anon_upload_enable=YES					允许匿名用户上传文件
(3)anon_mkdir_write_enable=YES				允许匿名用户创建目录
(4)anon_other_write_enable=YES				允许匿名用户修改目录名称或删除目录
<-------------------->
local_enable=YES							是否允许本地用户登录FTP
write_enable=YES							设置可写权限
local_umask=022								本地用户模式创建文件的umask值
dirmessage_enable=YES						是否开启目录提示信息
xferlog_enable=YES							是否开启日志
connect_from_port_20=YES					是否通过端口20连接
xferlog_std_format=YES						是否以标准形式写入日志
listen=NO									独立监听是否运行
listen_ipv6=YES								是否开启v6
pam_service_name=vsftpd						pam模块验证,vsftpd默认文件
userlist_enable=YES							黑名单开启
tcp_wrappers=YES							tcp连接
############
systemctl restart vsftpd					重启
systemctl enable vsftpd						加入启动项

<2>清空防火墙并对FTP根目录进行操作
iptables -F									清空
service iptables save						保存
匿名用户的FTP根目录为/var/ftp,该目录下还有一个pub目录,
pub目录默认只有root管理员才有写入权限。需要更改目录所有者为ftp。
ls -ld /var/ftp/pub							
drwxr-xr-x. 2 root root 6 Mar  7  2014 /var/ftp/pub
chown -Rf ftp /vat/ftp/pub
ls -ld /var/ftp/pub
drwxr-xr-x. 2 ftp root 6 Mar  7  2014 /var/ftp/pub

<3>SELinux策略修改
getsebool -a | grep ftp						查看
修改SELinux域策略ftpd_full_access为永久允许
经过这一步用户才能进行增删改文件的操作
setsebool -P ftpd_full_access=on			修改

<4>安装ftp服务,测试匿名用户的权限
yum install -y ftp
ftp 192.168.14.30

Connected to 192.168.14.30 (192.168.14.30).
220 (vsFTPd 3.0.2)
Name (192.168.14.30:root): anonymous(匿名账号)
331 Please specify the password.
Password:(无密码回车)
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub(进入目录pub)
250 Directory successfully changed.
ftp> mkdir a1(创建子目录a1)
257 "/pub/a1" created
ftp> ls
227 Entering Passive Mode (192,168,14,30,20,40).
150 Here comes the directory listing.
drwxr-xr-x    2 14       50              6 Nov 09 12:45 a1
226 Directory send OK.
ftp> rename a1 a2(重命名)
350 Ready for RNTO.
250 Rename successful.
ftp> ls
227 Entering Passive Mode (192,168,14,30,248,133).
150 Here comes the directory listing.
drwxr-xr-x    2 14       50              6 Nov 09 12:45 a2
226 Directory send OK.
ftp> rm a2(删除目录)
250 Remove directory operation successful.
ftp> ls
227 Entering Passive Mode (192,168,14,30,153,58).
150 Here comes the directory listing.
226 Directory send OK.
ftp> exit(退出)
221 Goodbye.

本地用户模式:
相较于匿名开放模式,本地用户模式要更安全,而且配置起来也很简单。

在匿名配置的基础上
本地用户模式的权限
(1)anonymous_enable=NO				关闭匿名访问
local_enable=YES					允许本地用户模式
write_enable=YES					设置可写权限
local_umask=022						本地用户模式创建文件的umask值
(2)userlist_deny=YES				启用“禁止用户名单”,名单为ftpusers和user_list
userlist_enable=YES					开启黑名单

<1>修改配置文件
vim vsftpd.conf						将上述(1)修改(2)添加
ftpusers与user_list文件				可加入禁止登录的用户
systemctl restart vsftpd
systemctl enable vsftpd

虚拟用户模式:
模式中最安全的一种认证模式,因安全性较于之前两种模式有了提升,则配置流程也会稍微复杂一些。

PAM(可插拔认证模块)是一种认证机制,通过一些动态链接库和统一的API把系统提供的服务与认证方式分开,使得系统管理员可以根据需求灵活调整服务程序的不同认证方式。要想把PAM功能和作用完全讲透,至少要一个章节的篇幅才可以(对该主题感兴趣的读者敬请关注本书的进阶篇,里面会详细讲解PAM)。

通俗来讲,PAM是一组安全机制的模块,系统管理员可以用来轻易地调整服务程序的认证方式,而不必对应用程序进行任何修改。PAM采取了分层设计(应用程序层、应用接口层、鉴别模块层)的思想,其结构如图所示。

在这里插入图片描述
利用PAM文件进行认证时使用的参数以及作用
在这里插入图片描述

在匿名配置的基础上

<1>创建FTP认证的用户数据库文件并加密
cd /etc/vsftpd
vim vuser.list									数据库文件
	内容:banner
		 123123
		 steve
		 456456
db_load -T -t hash -f vuser.list vuser.db		-T加密、-t类型、-f文件
file vuser.db									查看类型
vuser.db:Berkeley DB(Hash,version 9,native byte-order)

<2>创建本地用户
Linux系统中的每一个文件都有所有者、所属组属性;
需要创建一个可以映射到虚拟用户的系统本地用户;
让虚拟用户默认登录到与之有映射关系的这个系统本地用户的家目录中;
虚拟用户创建的文件的属性也都归属于这个系统本地用户;
从而避免Linux系统无法处理虚拟用户所创建文件的属性权限。
useradd -d /var/ftproot -s /sbin/nologin virtual -d指定家目录、-s解释器/sbin/nologin不允许用户登录
设置virtual家目录权限保证其他用户能对该目录进行相关操作
chmod -Rf 755 /var/ftproot

<3>创建虚拟用户认证的PAM文件
RHEL版本:vim /etc/pam.d/vsftpd.vu
内容:
auth       required     pam_userdb.so db=/etc/vsftpd/vuser
account    required     pam_userdb.so db=/etc/vsftpd/vuser
centos版本:vim /etv/pam.d/vsftpd
原内容注释
添加新内容:
auth    required        /lib64/security/pam_userdb.so   db=/etc/vsftpd/vuser
account required        /lib64/security/pam_userdb.so   db=/etc/vsftpd/vuser
db=参数为使用db_load命令生成的账户密码数据库文件的路径,不用写数据库文件的后缀

<4>为用户设置不同的权限
cd /etc/vsftpd
mkdir vusers_dir
cd vusers_dir							该目录设置了banner与steve用户的权限
touch banner							banner无权限
vim steve								有权限
内容:
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

<5>修改vsftpd配置文件
vim /etc/vsftpd/vsftpd.conf
RHEL版本
内容:
(1)anonymous_enable=NO
local_enable=YES
(2)guest_enable=YES
(3)guest_username=虚拟用户
(4)pam_service_name=vsftpd.vu
(5)allow_writeable_chroot=YES
(6)user_config_dir=/etc/vsftpd/vusers_dir
centos版本
删除	anon_upload_enable=YES					
	anon_mkdir_write_enable=YES				
	anon_other_write_enable=YES	
添加:
(1)anonymous_enable=NO
local_enable=YES
(2)guest_enable=YES
(3)guest_username=虚拟用户
pam_service_name=vsftpd
(4)allow_writeable_chroot=YES
(5)user_config_dir=/etc/vsftpd/vusers_dir	
systemctl restart vsftpd

测试:bnnaer无权限对文件无法修改
	 steve有权限对文件可修改

TFTP简单文件传输协议

简单文件传输协议(Trivial File Transfer Protocol,TFTP)是一种基于UDP协议在客户端和服务器之间进行简单文件传输的协议。顾名思义,它提供不复杂、开销不大的文件传输服务(可将其当作FTP协议的简化版本)。

TFTP的命令功能不如FTP服务强大,甚至不能遍历目录,在安全性方面也弱于FTP服务。而且,由于TFTP在传输文件时采用的是UDP协议,占用的端口号为69,因此文件的传输过程也不像FTP协议那样可靠。但是,因为TFTP不需要客户端的权限认证,也就减少了无谓的系统和网络带宽消耗,因此在传输琐碎(trivial)不大的文件时,效率更高。

tftp命令中可用的参数以及作用
在这里插入图片描述

安装tftp服务:  		yum install -y tftp
安装tftp客户端工具:  yum install -y tftp-service
centos需下载:		yum install -y xinetd

<1>修改xinetd配置文件
vim /etc/xinetd.d/tftp 
内容:
service tftp
{
        socket_type          = dgram
        protocol             = udp
        wait                 = yes
        user                 = root
        server               = /usr/sbin/in.tftpd
        server_args          = -s /var/lib/tftpboot -c  加参c上传
        disable              = no						修改为no
        per_source           = 11
        cps                  = 100 2
        flags                = IPv4
}
systemctl restart xinetd.service 						
systemctl enable xinetd.service 

<2>添加端口
firewall-cmd --permanent --add-port=69/udp
success
firewall-cmd --reload 									重新加载
success

<3>测试
服务端在TFTP根目录创建一个文件,供服务端测试。
centos版本/var/lib/tftpboot需要赋予权限
echo "hello world" > /var/lib/tftpboot/a.txt
服务端和客户端都需要清空防火墙并永久生效;
客户端才能访问服务端的TFTP服务。
centos不需要
iptables -F
service iptables save
tftp 192.168.59.14			在哪个路径登录则下载和上传就在哪个目录
tftp>get a.txt
tftp>put b.txt
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值