1,ftp最大优点是跨平台(Linux,unix,windows)也可以在Internet上面运行。


iis  server-u类似ftp,但是不够安全     wuftp(老版本),更关心的是功能


very security ftp  非常安全的文件传输协议


cifs


实现数据进行传输和接收,但是在Internet和局域网上面是不可以修改的,只能下载到本地之后才可以进行修改。而samba和nfs则可以连接到服务器上面进行修改


之前的版本ftp是在xinetd下面的一个子服务,但是在当前版本上面ftp已经是独立的一个服务



默认目录/var/ftp/pub   主配置文件/etc/vsftpd/vsftpd.conf /etc/vsftpd/ftpuser(访问控制,限制用户登录) /etc/pam.d/vsftpd定义某个文件是用来控制什么的

端口21(ftp)  20(ftp-data)

/etc/systemlog/conf


如何判断某一个服务是否支持tcp_wrappers

which vsftpd

/usr/sbin/vsftpd

ldd /usr/sbin/vsftpd |grep libwrap(动态链接库)


工作原理:1,主动(20):两台机器都是公网上的计算机,速度比较快。2,被动(取决于客户端)局域网里面都是可以的(防火墙没有生效)。都只需要开放21号端口netstat -tulnp


主动传输模式

命令通道:客户端向21号端口发出请求,实现三次握手

数据通道:20号端口主动向客户端发出邀请(服务端20号端口主动连接客户端的某一个端口)如果客户端在防火墙之后,不会连接成功,因为客户端的开放的端口,在防火墙上是不允许的,在公网上的计算机一般使用


被动传输模式

命令通道:客户端向21号端口发出请求三次握手

数据通道:服务端告诉客户端服务端开放的哪个端口进行数据传输


selinux

报警提示touch /.autorelabel;reboot重启并自动打标签,为系统里面的所有文件打上安全标识(必须要重启)

chcon -R(递归) -t(类型) public_content_t /var/ftp(修改查看权限)

setsebool -P allow_ftpd_anon_write=1

chcon -t public_content_rw_t /var/ftp/pub

setsebool -P allow_ftpd_use_cifs=1

chmod 777 /var/ftp/pub

#setsebool -P ftpd_disable_trans=1


上传的时候注意四点


1、开启匿名访问、匿名上传的权限

2、开启匿名目录的权限

3.selinux


1-499为系统用户,用来管理服务本身



linux之中受Selinux影响的服务有三个:

1、httpd

2、samba

3、ftp    


vsftpd.conf

local_umask=022  指定上传文件的权限是多少

local_umask=066  这样上传的文件只能自己能下载,其他用户不能下载



anon_other_write_enable=YES  匿名用户删除自己上传文件的权限



nopriv_user=ftpsecure  指定特定用户管理ftp

ls_recurse_enable=YES  防止用户执行ls

listen=YES  缺省监听在Ipv4



iptables -A INPUT -s 192.168.0.5 -p tcp --dport 21 -j REJECT


ftp:登录必须输入用户名

lftp:默认为匿名登录


vsftpd.conf详细介绍

anonymous_enable=YES         是否允许匿名用户访问ftp


local_enable=YES             是否允许本地用户访问    


write_enable=YES     是否开启ftp有写的权限


local_umask=022     默认上传文件的权限


anon_upload_enable=YES     匿名用户是否有上传的权限(注意selinux)

chcon -t public_content_rw_t /var/ftp/pub

setsebool -P allow_ftpd_anon_write=1


anon_mkdir_write_enable=YES  匿名用户是否有写的权限


手动添加一条策略

anon_other_write_enable=YES  允许匿名用户删除自己所上传的文件


dirmessage_enable=YES        设置用户开启目录的消息提示(只能用ftp登录的时候,才能显示)并且.message必须创建在登录用户的家目录


xferlog_enable=YES     是否激活用户上传或下载日志记录功能(默认ftp上传下载日志存放在/var/log/xferlog)


connect_from_port_20     是否开启20号端口(主动模式)


chown_uploads=YES

chown_username=admin1     设置上传文件的拥有人


xferlog_file=/var/log/vsftpd.log定义日志的位置,如果开启此选择,将覆盖掉原来的日志记录


xferlog_std_format=YES       日志格式是否兼容之前标准的日志格式


idle_session_timeout=600     如果600秒没有响应,默认断开用户


data_connection_timeout=120  下载时间限制


nopriv_user=admin1     指定特定账号来管理vsftpd


ascii_upload_enable=YES

ascii_download_enable=YES    是否允许账户上传二进制文件(比较危险,有可能上传的是病毒文件)


ftpd_banner=welcome to blah FTP service 登陆ftp时提示欢迎消息




deny_email_enable=YES

banned_email_file=/etc/vsftpd/banned_enails防止DOS***,防止用户以邮箱名进行登录


重要:

chroot_list_enable=YES       将用户限制在自己的家目录


chroot_list_file=/etc/vsftpd/chroot_list只有限制此文件里面的用户才能限制在自己的家目录里面

手动写入

chroot_local_user=YES        与chroot_list作用相反


ls_recurse_enable=YES     用来限制用户使用ls,lr命令(防止用户一直执行ls,防止占用系统资源)


listen=YES     缺省监听ipv4


ftpuser     缺省写在此文件里面的用户不能登录


tcp_wrappers    对服务进行控制

iptables对数据包包头进行控制




anon_other_write_enable=YES  匿名用户删除自己上传文件的权限


anon_root=/var/ftp/redhat

local_root=/redhat


anon_umask=022











2,nfs,实现Linux与linux,linux与Unuix资源共享,windows vaster上面开发了一款连接linux的nfs的客户端工具。版本是V3.不能在internet上面运行,一般使用在局域网内。


Network File Service   网络文件服务


默认软件包nfs-utils

端口是随机的,NFS认证的时候需要与RPC(远程过程调用)协议进行协商,使用portmap实现RPC机制,使用的时候要在RPC上面进行注册。一般要重启三次,以为开始的时候他需要与RPC进行协商。


后台进程:rpc.nfsd,rpc.lockd,rpciod,rpc.mount,rpc.rquotad,rpc.statd(这些进程调用的时候,都是随机的)


因此,NFS很难用防火墙来控制,NFS支持tcp_warppers


脚本:/etc/init.d/nfs ,/etc/init.d/nfslock每次启动服务的时候,都会启动这两个脚本


监听端口:2049(nfsd)  rpcbind(111)



语法:共享目录+共享的计算机+权限


/redhat192.168.0.0/24(ro,sync)

/redhatexample.com(rw,sync)

/redhat*.example.com(rw,sync)

/redhat*(rw,sync)允许所有人

sync异步传输   等待时间大概是30s


nfs不受Selinux影响,如果让用户有写的权限,必须给匿名用户写的权限chmod 777 file


重点参数:root_squash写入的时候,定义新建文件或目录的所属者及所属组


exportfs -v 显示NFS的详细信息

showmount -e hostname查看共享主机

rpcinfo -p hostname查看共享主机开放的端口号











3Samba,实现windows与linux之间的共享,活动目录(不安全)。一般情况下,企业中会使用活动目录+samba,将windows加入到samba中,来实现文件共享,这一点在windows是不可能实现的。用活动目录做验证,用samba做文件共享,避免反复的用户验证


  1.优势:可以做虚拟用户

  2.    :隐藏目录(每个部门只能看到本部门的共享目录)

  3.    :只能本人才可以删除自己共享的目录

  4.    :权限


功能:

1、用户认证

2、文件和打印机的共享(文件服务器或者打印服务器)

3、名称解析(NETBIOS)利用计算机名访问共享资源

4、网页浏览访问共享资源


附件功能

smbclient连接Windows,linux实现资源共享

使用sam/cifs实现文件共享


什么是CIFS:通用的文件服务系统3.0版本。4.0版本与Windows完全兼容。


samba由来:samba的原始服务名称为smb,但是smb被IBM公司给注册了,只能使用samba,底层跑的还是smb


安装包

1、samba

2、samba-common:提供samba的管理工具

3、samba-client:samba客户端连接

4、samba-config-samba提供图形化管理samba

5、testparm:语法和权限测试

服务:

/usr/sbin/nmbd提供名称解析

/usr/sbin/smbd提供数据共享


脚本:/etc/init.d/smb


端口:tcp:445(smbd)

     tcp:137(smbd)

     udp:138(nmbd)

     udp:139(nmbd)


配置文件:/etc/samba/*


配置samba的三种方法:

1、httpd(了解)

2、图形(了解)

3、字符界面下的配置(掌握)


samba五种认证方式:

user:需要用户密码进行验证(samba本地用户)


domain/server:来自网络里面的另外一台计算机(本计算机只提供用户)


ads:(active directory server)windows活动目录提供认证账号


share:允许所有人访问(匿名用户)相当于windows启用guests用户,非常不安全



samba不仅可以限制某个用户来访问,也可以限制某个ip段的用户来访问


samba里面权限  允许优先


若是语法错误,samba可以正常启动,且会自动忽略错误语法(即错误语法不生效)

cifs

以上这些windows里面都是不可以实现的。


chcon -R -t samba_share_t redhat


path:共享目录


public:是否允许匿名用户有读的权限


browsable:用户是否有浏览的权限


writable:是否有些的权限


printable:共享的资源是打印机,而非磁盘


group: 任何人在共享目录中创建的文件,都会自动属于指定的这个组


valid users:指定某个用户对某个文件的使用权


别名:sambausers


testparm:语法检验

testparm /etc/samba/smb.conf station2.example.com 192.168.0.1


samba访问的几种方式:

mount -t cifs //192.168.0.121/shared /mnt/test -o username=redhat


smbclient //192.168.0.121/shared -U redhat%redhat


nbmlookup:域名测试


nmblookup \*   测试网络中的主机



fstab里面的写法:

//192.168.0.121/shared/mnt/test1cifsusername=redhat0 0

但是每次开机的时候都会要求你输入密码,不方便

//192.168.0.121/shared/mnt/test1cifsusername=redhat%redhat0 0

不安全



最终解决方法cd /etc/samba

vim cred.txt


username=redhat

password=redhat


chmod 400 cred.txt


//192.168.0.121/shared/mnt/test1cifscredentials=/etc/samba/cred.txt0 0




只允许某个用户可以访问,其他用户不能访问


global中加入

file config = /etc/samba/smb.%U.conf


file config = /etc/samba/smb.%G.conf


man ftpd_selinux


man samba_selinux


man httpd_selinux