linux网络服务的一些选择题

linux网络服务的一些选择题,第1张

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。

工作方式

主动模式:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始 监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
被动模式:当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

先安装vsftpd

[root@localhost ~]# yum install vsftpd -y[root@localhost ~]# systemctl  start vsftpd      #启动vsftpd[root@localhost ~]# systemctl  status vsftpd    #查看vsftpd状态
vsftpdservice - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpdservice; disabled; vendor preset: disabled)
Active: active (running) since 五 2018-02-02 08:22:39 CST; 1min 50s ago
Process: 12558 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpdconf (code=exited, status=0/SUCCESS)
Main PID: 12559 (vsftpd)
CGroup: /systemslice/vsftpdservice
└─12559 /usr/sbin/vsftpd /etc/vsftpd/vsftpdconf

vsftp三种认证模式

annoymous 匿名用户 #无虚输入密码即可访问
local user 真实用户 #服务器上存在的用户
guest user 虚拟用户 #映射到ftp服务器的用户

vsftpd的默认配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpdconf
# Allow anonymous FTP (Beware - allowed by default if you comment this out)anonymous_enable=YES  #允许匿名用户登陆## Uncomment this to allow local users to log in# When SELinux is enforcing check for SE bool ftp_home_dirlocal_enable=YES  #允许本地用户登陆## Uncomment this to enable any form of FTP write commandwrite_enable=YES  #允许本地用户读写## Default umask for local users is 077 You may wish to change this to 022,# if your users expect that (022 is used by most other ftpd's)local_umask=022  #本地用户创建文件的umask值
dirmessage_enable=YES    #当用户进入某个目录时,会显示该目录需要注意的内容是  messagexferlog_enable=YES #启动维护记录服务器上传和下载情况的日志文件connect_from_port_20=YES   #FTP PORT主动模式进行数据传输时使用20端口xferlog_std_format=YES #传输日志文件将以标准 xferlog 的格式书写listen_ipv6=YES  #监听ipv6pam_service_name=vsftpd  #pam认证模块的名字userlist_enable=YES   #拒绝登陆ftp的名单tcp_wrappers=YES   #限制IP访问vsftpd

匿名用户认证

我们刚才已经开启了vsftpd 我们已经可以登陆ftp站点 #需关闭防火墙或设置规则 并关闭selinux

我们已经登陆到ftp站点了


试着创建一个文件夹 出现550报错 是因为我们是以匿名用户登陆到FTP站点 并没有给匿名用户创建目录的权限
在vsftpd配置文件中添加

anon_upload_enbale  #允许匿名用户上传anon_mkdir_write_enable=yes  #允许匿名用户创建目录anon_other_write_enable=yes #允许匿名用户修改目录名称或删除目录

再赋予匿名用户登陆的文件夹最高权限
chmod 777 /var/ftp/pub

已经可以创建并修改文件夹
还有一种方法 是将匿名用户登陆到的目录系统用户改成ftp 就不用修改目录权限

[root@localhost ~]#chown -Rf ftp /var/ftp/pub

本地用户模式

修改vsftp配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpdconf

加入一行

local_root=/etc/ftp

创建 一个用户

[root@localhost ~]#useradd 51cto[root@localhost ~]# passwd 51cto更改用户 51cto 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

创建这个目录

[root@localhost ~]#mkdir /etc/ftp

重启一下vsftpd
用我们刚创建的用户登陆

登陆成功
诶? 既然说本地用户模式是 服务器上真是存在的用户 那我们的管理员root 也是真实存在的 那是否可以登陆呢?

无法登陆 这是为什么呢?
这是因为vsftpd有一个禁止用户登陆的名单

在上面的匿名用户说过 vsftpd默认是开启禁止用户名单的 我们的root用户在名单之中 自然就无法登陆了 禁止root用户登陆也对服务器提升了安全性 防止通过ftp爆破root密码

虚拟用户

虚拟用户是这三种认证模式中最安全的一种 也稍微复杂一些
虚拟用户是用PAM认证模块中配置 FTP认证的数据库文件来进行加密

关于PAM认证可以看>

首先我们在/etc/目录下 创立一个用户数据库文件

奇数行为账户偶数行为密码
为了安全我们用db_load命令 用哈希算法将明文信息转换成密文数据库文件并降低文件的权限 避免其他人看到数据库文件

[root@localhost etc]#db_load -T -t hash -f /etc/ftp/ftptxt ftpdb[root@localhost etc]#rm ftptxt[root@localhost etc]#chmod 600 ftpdb

我们用默认的pam文件 注释其他行
新加两行
db_load 后面跟的是数据库的路径不用写数据库的后缀
创建存放虚拟用户配置文件的目录

[root@localhost etc]#mdir -p /etc/ftp

配置虚拟用户权限

[root@localhost ftp]#vim user1

[root@localhost ftp]#vim user2

创建两个用户登陆的目录

[root@localhost ftp]#mkdir -p /home/user1 [root@localhost ftp]#mkdir -p /home/user2赋予最高权限
[root@localhost ftp]#chmod 777 /home/

修改vsftpd配置文件

重启一下vsftpd
测试一下权限


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12830841.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存