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