vsftpd
需安装服务
服务器:vsftpd(very secure ftp damone)
客户端:ftp(vsftpd 包含了 ftp 但是一般情况下在服务器上装ftp也没啥用)
命令
ftp 192.168.10.100
共享文件目录
/var/ftp/pub
配置文件
/etc/vsftpd/vsftp.conf
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
三种模式
**匿名开放模式:**是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器。
**本地用户模式:**是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是如果被黑客破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制整台服务器。
**虚拟用户模式:**是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。
匿名开放模式
参数调整
在上述基本参数之上配置
anonymous_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
调用方法
ftp 192.168.10.100
用户名: amonymous
** 可能遇到的问题**
- 访问拒绝
iptables -F - 创建目录或文件被拒绝
setsebool -P ftpd_full_access=on
/var/ftp/pub文件设置所属者为ftp
本地用户模式
参数调整
anonymous_enable=YES改为anonymous=NO
其他anon相关的都删掉
调用方法
用系统的用户登陆,默认root被锁定,在/etc/vsftp/user_list及/etc/vsftpd/ftpusers中删除root解锁
上传下载方法
lcd 显示本地路径
lcd 路径 指定下载路径
get a.txt 下载文件到下载路径
mget *.txt 批量下载文件
put a.txt 上传
mput *.txt 批量上传
!list 列出本地文件
可能遇到的问题
- 不能下载目录
就是不支持,可以用wget ftp://192.168.10.100/* --ftp-user=hupneg --ftp-password=104621 -r
wget 网站下载
–ftp-user=hupeng 用户名
–ftp-password=104621 密码
-r递归
这个不能有中文字符,中文字符会乱码
https://www.cnblogs.com/lgh1992314/archive/2013/02/07/5835201.html
虚拟用户模式
配置流程
- 创建虚拟用户
# 创建虚拟用户文件,记录虚拟用户,文件名字格式xxxx.list,文件格式,奇数行用户名,偶数行密码
[root@localhost var]# vim /etc/vsftpd/vuser.list
hu
104621
peng
104621
# 为了安全把文件通过哈希加密,db_load 加密命令 -T 第一次加密 -t 加密算法 hash 哈希算法 -f vuser.list 需要加密的文件 vuser.db 加密后的文件名
[root@localhost var]# db_load -T -t hash -f vuser.list vuser.db
# 为了别人看不到这个文件将权限赋为600,同时删除明文
[root@localhost var]# chmod 600 vuser。db
[root@localhost var]# rm -f vuser.list
- 创建宿主用户并分配权限(虚拟用户的操作都会转换为宿主用户的操作)
# -d 指定家目录 -s 指定bash解释器为不可用户登陆
[root@localhost var]# useradd -d /var/ftpfile -s /sbin/nologin
# /var/ftpfile 会作为虚拟用户最终操作路径,所以需要给与整个文件读写权限
[root@localhost var]# cmhod -Rf 755 /var/ftpfile
- 创建pam文件用于支持虚拟用户
# 配置自定义的pam文件,pam类似于防火墙由规则堆叠而成,用于用户的认证,文件规则 为 工作类别 控制模式 模块路径 模块参数,比较复杂,后续有需要单独学习
[root@linuxprobe ~]# vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
- 更改vsftpd配置
# 禁止匿名模式
anonymous_enable=NO
# 允许本地模式,虚拟用户模式实际上也是一种本地用户模式只是外层增加了一个pam去允许虚拟用户访问
local_enable=YES
# 虚拟用户模式开启
guest_enable=YES
# 虚拟用户宿主用户为virtual(第二步创建的)
guest_username=virtual
# 只能访问自身所属目录,意味着目前只能访问/var/ftpfile目录下的文件
allow_writeable_chroot=YES
# 可以写文件
write_enable=YES
# 上传的文件所具有的权限,022为八进制,相当于000010010,拆分为三部分,即000、010、010
# 三部分分别对应着用户权限的三部分,每组三位对应着rwx三个权限,
# 屏蔽掉这个权限也就意味着新目录的权限为rwxr-xr-x即755
local_umask=022
# 访问目录是是否有提示信息
dirmessage_enable=YES
# 记录日志并存在 /var/log/vsftpd.log路径下
xferlog_enable=YES
# 默认情况下,FTP PORT主动模式进行数据传输时使用20端口(ftp-data)
connect_from_port_20=YES
# 传输日志文件将以标准 xferlog 的格式书写,该格式的日志文件默认为 /var/log/xferlog
xferlog_std_format=YES
# 查了没太看懂,影响不大
listen=NO
# 查了没太看懂,影响不大
listen_ipv6=YES
# pam的策略选用刚配置的vsftpd.vu
pam_service_name=vsftpd.vu
# 访问虚拟用户列表,目前是已加密
userlist_enable=YES
# 也没看懂,影响不大
tcp_wrappers=YES
# 虚拟用户权限列表
user_config_dir=/etc/vsftpd/vusers_dir
- 更改虚拟用户权限(读写创建等权限)
# 本应该在第四步,创建个名为vusers_dir的目录
mkdir /etc/vsftpd/vusers_dir/
# 增加每个用户的权限配置文件,默认是只能登陆
vim /etc/vsftpd/vusers_dir/hu
# 采用匿名用户方式的配置参数
# 能否上传
anon_upload_enable=YES
#能否创建目录
anon_mkdir_write_enable=YES
# 能否更改别人的目录
anon_other_write_enable=YES
- 更改selinux的域
setsebool -P ftpd_full_access=on
可能遇到的问题
- 本地可以ftp到,其他服务器ftp提示找不到主机
服务器防火墙美关 iptables -F 掉 - 可以登录,但是不能创建
配置文件问题,仔细检查user_config_dir=/etc/vsftpd/vusers_dir参数,以及/etc/vsftpd/vusers_dir/hu文件参数,目前已经遇到的是手打时少字母和粘贴时少字母,以及=写成-。同时可能是selinux限制,可以先关闭setenforce 0
对比
- 配置文件不同,匿名是anaxxx参数,本地是localxxx参数,虚拟是guestxxx+localxxx
- 虚拟可以理解为一种特殊的本地,因为最终还是调用本地用户进行实际操作
- 文件存储路径不同,匿名用/var/pub local根据本地用户情况用家目录,虚拟用家目录
TFTP简单文件传输协议
真的是个简答
几个关键点
UDP协议(可能被防火墙禁止)
被其他服务管理,但是也要自己装一个程序被xinetd(小net的,小网的)
改配置文文件即可使其生效
支持的命令少,不能ls所以得知道具体的路径
安装方式
- 安装程序
yum install tftp-server tftp - 修改配置文件
vim /etc/xinetd.d/tftp
(disable 改为no) - 重启xinetd服务
调用方法
tftp 192.168.10.10