RHCE之FTP与TCP_wrappers

什么是FTP

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。
(转自百度百科)

如何配置FTP

可以看到FTP是由客户端和服务器两部分组成,所以我们先来配置服务器。
如果你想要连接到FTP的服务器,你就必须有一个账户,在FTP当中有三种账户。
ftpReal帐户(本地用户)
这类用户是指在FTP服务上拥有帐号。当这类用户登录FTP服务器的时候,其默认的主目录就是其帐号命名的目录。但是,其还可以变更到其他目录中去。如系统的主目录等等。
ftpGuest用户(虚拟用户)
在FTP服务器中,我们往往会给不同的部门或者某个特定的用户设置一个帐户。但是,这个账户有个特点,就是其只能够访问自己的主目录。服务器通过这种方式来保障FTP服务上其他文件的安全性。这类帐户,在Vsftpd软件中就叫做Guest用户。拥有这类用户的帐户,只能够访问其主目录下的目录,而不得访问主目录以外的文件。
ftpAnonymous(匿名)用户
这也是我们通常所说的匿名访问。这类用户是指在FTP服务器中没有指定帐户,但是其仍然可以进行匿名访问某些公开的资源。
第一步安装FTP服务端

yum install vsftpd -y

启动ftp服务端(关闭防火墙和selinux)

systemctl restart vsftpd

访问服务器,这里可以使用windows作为客户端,也可以使用linux作为客户端,但是后者需要装客户端的包(yum install ftp)

在这里插入图片描述这个/pub是服务器根目录下的/var/ftp/pub
配置文件及相关参数:
在这里插入图片描述

文件的下载(匿名用户)

默认配置就可以实现
在这里插入图片描述
在默认文件下匿名用户就可以下载

文件的上传(匿名用户)

首先更改配置文件

vim /etc/vsftpd/vsftpd.conf

anon_umask=022  (追加写入)
29 anon_upload_enable=YES 
33 anon_mkdir_write_enable=YES

然后修改匿名用户目录的权限
在这里插入图片描述重启vsftpd服务,然后上传一下文件,发现可以
在这里插入图片描述
但是无法删除,如果需要删除我们需要再修改配置文件

vim /etc/vsftpd/vsftpd.conf
anon_other_write_enable=YES

然后重启服务就可以删除文件了。

文件的下载(本地用户)

首先需要修改配置文件

vim /etc/vsftpd/vsftpd.conf
anonyus_enable=NO
local_enable=YES
注释以下三行
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES

在这里插入图片描述修改后需要登录本地用户的用户名和密码,但是这样登陆上去的用户可以打开自己家目录下的所有文件,所以我们需要改变它的权限

getsebool -a | grep ftp_home_dir
ftp_home_dir --> off
setsebool -P ftp_home_dir on
在这里插入图片描述上传还需要更改主配置文件

vim /etc/vsftpd/vsftpd.conf
write_enable=YES

遍历
首先需要开启chroot选项

vim /etc/vsftpd/vsftpd.conf
allow_writeable_chroot=YES

然后使用下面两个选项之一

第一:指定本地用户不能chroot
chroot_local_user=YES

第二:开启通过列表的方式来指定用户
chroot_list_enable=YES
#指定用户列表文件
chroot_list_file=/etc/vsftpd/chroot_list
#在当前目录创建用户列表文件

cat chroot_list
haha

如果chroot_local_user=YES开启,那么指定列表中的用户可以翻
如果没有开启chroot_local_user=YES,那么指定列表中的用户不可以翻

虚拟用户

首先创建系统用户,禁止该用户进行登陆

useradd -s /sbin/nologin tom

然后修改用户家目录权限

chmod 704 /home/tom/
在这里插入图片描述

然后修改主配置文件,增加以下三个选项

vim /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=tom #tom为系统用户
virtual_use_local_privs=YES

然后创建虚拟用户数据库文件
创建虚拟用户文件如下:
格式为一行用户名,一行密码,示例中tom为用户名,123为密码

vim /etc/vsftpd/vuser

tom
123

然后将虚拟用户文件转换成用户数据库文件

db_load -T -t hash -f vuser user.db

修改虚拟用户数据库文件权限

chmod 600 user.db

查看虚拟用户数据库文件的上下文权限

ll -Z user.db
-rw-------. root root unconfined_u:object_r:etc_t:s0 user.db

修改PAM认证方式
编辑认证配置文件

vim /etc/pam.d/vsftpd

注释掉所有行,并添加以下两行:
auth required pam_userdb.so db=/etc/vsftpd/user
account required pam_userdb.so db=/etc/vsftpd/user
注:数据库文件名的“.db”不用输入
最后重启服务进行测试

TCP_wrappers

什么是TCP_wrappers

TCP_Wrappers是一个工作在第四层(传输层)的安全工具,对有状态连接的特定服务进行安全检测并实现访问控制,凡是包含有libwrap.so库文件的程序就可以受TCP_Wrappers的安全控制。它的主要功能就是控制谁可以访问,常见的程序有rpcbind、vsftpd、sshd,telnet。
特点 :配置改变,立即生效
控制文件:
/etc/hosts.allow 定义允许的访问
/etc/hosts.deny 定义拒绝的访问

语法:
Daemon_list : client_lists
服务名称 目标名称

例如在/etc/hosts.deny 文件中写入 ssh:192.168.66.100 那么66.100主机就无法登录到当前主机上了。

关于主机的宏定义的表示方式:
LOCAL 主机中不含.的主机(通常是指自己)
KNOWN 所有在DNS中可以解析到的主机
UNKNOWN 所有在DNS不可以解析到的主机
PARANOID 所有在DNS中正向解析与反向解析不匹配的主机
ALL 代表匹配所有(这个主机和服务都可以定义)
EXCEPT 反向选择
列如:/etc/hosts.deny ssh:192.168.66.0 255.255.255.0 EXCEPT 192.168.66.120
在66网段,只有120可以SSH链接本主机

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值