FTP简介 FTP中文称为“文件传输协议”。用于Internet上的控制文件的双向传输。 下载文件就是从远程主机拷贝文件到自己的计算机上;上传文件就是将文件从自己的计算机中拷贝至远程主机上。 主动模式:服务端从20端口主动向客户端发起连接。 客户端通过用户名和密码登陆服务器的21端口,如果服务器通过21端口接受到客户端访问,会验证用户名和密码如果合格则客户端随机开启一个1024以上的端口传递port命令告知服务器请服务器打开端口向客户端传递数据,服务器接受协议看到port则开启20端口向客户端的随机端口发送数据。服务器通过之前的随机端口号知道对方的端口是什么然后通过20端口主动向客户端随机端口发送数据。 被动模式:服务端在指定范围内某个端口被动等待客户端连接。 客户端同样连接21端口输入用户名密码成功,此时客户端开启的PASV命令,通过PASV命令告知服务器,采用被动连接,这是服务器端开启随机端口,当服务端的随机端口打开之后,服务器把随机端口号告知客户端,客户端通过本身的随机端口向服务端传递数据。对服务器端来说是被动的,等着对方来访问。 ftp默认开启主动模式。。20端口负责传递实际数据 21用来传递命令验证登陆

FTP连接端口: 控制连接;TCP21,用于发送FTP命令信息 数据连接:TCP20 用于上窜,下载数据 被动模式:传递数据的端口是一个随机端口

ftp的配置文件 主配置文件/etc/vsftpd/vsftpd.conf 用户控制列表文件 /etc/vsftpd/ftpusers 此文件下为禁止登陆用户 优先级高 /etc/vsftpd/user_list 可以通过修改配置文件转为白名单

ftp相关用户 1.匿名用户:anonymous或ftp 2.本地用户:使用Linux系统用户 和密码 简单存在安全隐患 3.虚拟用户:管理员自定义的模拟用户 安全但配置繁琐 注意事项:关闭防火墙和selinux

默认配置文件 anonymous enable=yes 允许匿名用户登陆 local_enable=yes 本地用户允许登陆 write_enable=yes 本地用户允许上传 local_umask=022 本地用户上传的默认权限 dirmessage_enable=yes 用户进入目录时,显示message文件中信息 message_file=.message 指定信息文件 xferlog_enable=yes 激活记录日志 connect_from_port_20=yes 主动模式数据传输接口 xferlog_std_format=yes 使用标准的ftp日志格式 ftpd_banner 欢迎信息 listen 监听 pam_service_name=vsftpd 设置pam外挂模块提供的认证服务所使用的配置文件名 userlist_enable=yes 用户登陆限制 tcp_wrappers=yes 是否使用tcp_wrappers作为主机访问控制方式

常用全局配置 listen_address =设置监听地址 listen_port=设置监听ftp服务的 端口号 downliad_enable=yes 是否允许下载文件 max_clients=0 限制并发客户端连接数 max_per_ip=0 限制统一IP地址的并发连接数

被动模式 pasv_enable=yes 开启被动模式 pasv_min_port= 被动模式和最小端口 pasv_max_port= 被动模式最大端口

常用安全配置 accpept_timeout=60 被动模式,连接超时时间 connect_timeout=60 主动模式,连接超时时间 idle_session_timeout=600 600秒没有任何操作就端口连接 data_connection_timeout=500 资料传输时,超过500秒没有完成断开传输

ftp常用客户端 windows下登陆 所有用户限制在家目录下不允许切换

匿名用户基本配置 默认登陆位置/var/ftp/ 匿名用户会映射成伪用户

注意目录权限 chroot_list_file=/etc/vsftpd/chroot_list控制是否能够切换目录。

用户 访问控制 /etc/vsftpd/ftpusers /etc/vsftpd/user_list通过修改变为百名单 不可以用root用户登陆会被抓包 tcpdump -i eno16777728 -nnX port 21 直接可以获取 root用户密码

虚拟用户登陆:

配置虚拟用户访问

nfs介绍 nfs可以让客户端把服务器的共享目录挂载到本机使用,就像本机分区一样 rpc服务:nfs是被rpc服务管理的,所以必须安装rpc的主程序rpcbind NFS端口:2049 rpc端口:111 NFS daemon端口:随机

nfs权限说明: nfs没有用户登陆认证机制,所以客户端登陆到服务器之后,会把客户端的身份映射到服务器端。 1.client和server上刚好有相同的账号和用户组(用户名和UID都要相同)client上用户可以在server上按照用户权限使用文件 2.当client和server上拥有相同的UID,但是用户名不通,假设client在用户aa(uid:500),server上有用户bb(uid:500)在client在使用server共享目录时,身份识别为bb(因为Linux权限绑定在UID上) 3.server上没有client的UID,client用户访问server时,server上没有此UID,则把此用户自动转换为nfsnobody(UID:65534)用户 4.client上市root使用共享:默认把root也转变为nfsnobody。服务器端可以修改配置文件 ,允许root访问nfs服务器。

nfs安装:nfs主程序:nfs-utils rfc主程序:rpcbind 配置文件 /etc/exports 通过ps -aux|grep -E "rpc|nfs"查询 其中rpc.rquotad为nfs配额 rpc.mountd:处理客户端挂载 nfsd:NFS守护进程 rpcbind RPC守护进程 查看端口 rpcinfo -p 常用权限 rw ro no_root_squash:允许root身份登陆 root_squash:如果登陆的是root,压缩为nfsnobody anonuid:把所有的登陆用户,不在压缩为nfsnobody用户,而是压缩为指定的uid用户 sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性 async:将数据先保存在内存缓冲区中,必要时才写入磁盘。 无论那个用户登陆都把它当作uid为600的匿名用户 常用命令:exportfs 选项 -a 按照配置文件挂载卸载所有目录 -r 重新挂载 -u 卸载 -v 显示详细信息

showmount命令 showmount -e ip或者主机名 服务器端和客户端都可以使用此命令查看

客户端需要启动rpcbind服务。 service rpcbind restart 在客户端使用此命令将服务器路径挂载到客户端 如果服务器端允许root登陆那么就是root如果不允许就压缩成nfsnobody 如果修改配置为不允许root登陆 此时则身份被压缩为nfsnobody,在查看服务端的/home/test权限 nfsnobody对于root用户 来说是其他人,是没有权限的所以写不进去。 此时 chown nfsnobody /home/test 即可 通过/etc/fstab添加每次重启开机挂载