一、ftp服务的定义
1.ftp服务/(文件传输协议)是internet上常用的网络协议之一,它为系统提供了通过网络与远程服务器进行传输的简单方法。
2.ftp服务包的名称为vsftpd
3.默认配置文件让anonymous用户只能下载位于chroot目录中的内容
4./var/ftp默认发布目录意味着远程ftp客户端能以用户anonymous或ftp身份连接到服务器(不需要密码),并从ftp服务器上的/var/ftp/下载文件(本地用户可以读取这些文件)
二、ftp的安装及启动
这里的实验需要用两机子,一台作为服务端,一台作为客户端
服务端:安装vsftpd服务和lftp服务
客户端:安装lftp服务
1.给服务端用yum源的方式下载安装ftp服务
2.ftp的启用:开启服务并设置为开机自启动
修改防火墙配置文件,允许ftp服务通过防火墙,方便他人访问
systemctl start vsftpdftp ##开启ftp服务
systemctl enable vsftpd ##开机自启
firewall-cmd --permanent --add-service=ftp ##使ftp服务通过防火墙
firewall-cmd --reload ##防火墙重新加载配置文件
3.查看内核文件selinux是否为关闭状态
ftp://172.25.254.133
三、ftp的基本信息
访问数据端口:21
数据传输端口:>1024随机端口
默认发布目录: /var/ftp,用客户端去访问
访问方式:
lftp 172.25.254.142 ##匿名登录 ---> /var/ftp
lftp 172.25.254.142 -u student ##用户登录 ---> /home/student
配置文件/etc/vsftpd/vsftpd.conf
查看ftp服务的配置文件
四、ftp的安全部署
1、anonymous_enable=YES|NO ##匿名用户是否可以登录
l
2、local_enable=YES|NO ##本地用户是否可以登录
3、write_enable=YES|NO ##本地用户是否可写
4、匿名用户上传文件
chmod 775 /var/ftp/pub ##修改权限为775
chgrp ftp /var/ftp/pub ##修改组为ftp
vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES ##上传文件
systemctl restart vsftpd
修改完配置文件后重启ftp服务
5、匿名用户可下载(设定参数值为no表示匿名用户可以下载)
anon_world_readable_only=NO
6、匿名用户建立目录
anon_mkdir_write_enable=YES
7、匿名用户是否可以删除和重命名
anon_other_write_enable=YES
8、匿名用户家目录修改
anon_root=/diroctry
在这里我用户家目录修改为westos,即为本应在客户端用lftp命令进去看到的是/var/ftp里面的内容,修改之后看到的是westos里面的内容:
9、匿名用户上传文件默认权限修改
anon_umask=xxx
10、匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student
这里我上传文件passwd,他的所有人变成1000(1000为student的id)
匿名用户使用studentde身份进行的操作
11、最大上传速率
anon_max_rate=102400(字节)
12、最大链接
当超过链接数时需要等待,当有人退出链接,下一个继续链接。
当打开3个shell时,因设置的最大链接数为2,所以其中前两个可以链接上。
max_clients=2
13、本地用户家目录修改
local_root=/directory
14、本地用户上传文件权限
local_umask=xxx
15、限制本地用户浏览/目录
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*
当没有限制本地用户时,可以看到根目录下的东西:
限制了本地用户时,去登陆时,发现用户被锁在了家目录下,查看不了根目录下的文件了
用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
文件/etc/vsftpd/chroot_list本身不存在,所以需要我们去建立这个文件。
这里我将student设为黑名单
登陆本地用户,发现student用户被锁在家目录中了,访问不了根下的目录
用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
将student用户加入到白名单之后发现又可以访问到根下的其他目录了
16、限制本地用户登陆
vim /etc/vsftpd/ftpusers ##用户永久黑名单
这里我将student写入黑名单,用student登陆失败
vim /etc/vsftpd/user_list ##用户临时黑名单
我将student用户从永久黑名单删除,写入临时黑名单,发现登陆被拒绝
用户白名单设定
(若在名单中的用户同时也出现在永久黑名单中,则该用户也不能登陆)
vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO
vim /etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp
17、ftp虚拟用户的设定
1)创建虚拟帐号身份(在里面写入要用的用户和密码)
vim /etc/vsftpd/westosfile ##文件名称任意(编辑的文件里面不能有空格)
user1
123
user2
123
user3
123
db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db ##hash加密
vim /etc/pam.d/westos ##文件名称任意
account required pam_userdb.so db=/etc/vsftpd/westosfile
auth required pam_userdb.so db=/etc/vsftpd/westosfile
account(用户)required(表示强制)pam_userdb.so(表示认证程序)db=/etc/vsftpd/westosfile(表示用户所在文件)
auth(表示密码)
vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos
guest_enable=YES
2)虚拟帐号身份指定
guest_username=ftpuser(身份指为student,默认进去是student的家目录/home/student里面的内容)
若将虚拟用户身份指为ftp,则访问的是ftp里面的内容
3)虚拟帐号家目录独立设定
vim /etc/vsftpd/vsftpd.conf
local_root=/ftphome/$USER
user_sub_token=$USER
建立独立的家目录
mkdir /ftphome/user1/user1dir -p
mkdir /ftphome/user2/user2dir -p
登陆时发现每个用户都有自己独立的家目录
4)虚拟帐号配置独立
给虚拟用户中的各个用户配置权限
chgrp ftp /ftphome -R
chmod 775 /ftphome/user1/user1file
chmod 775 /ftphome/user2/user2file
chmod 775 /ftphome/user3/user3file
修改配置文件
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/userconf
vim /etc/vsftpd/userconf/user1(编辑创建的这个文件)
在文件里面写入对哪个用户赋予的功能
在此文件中设定配置文件中的所有参数,此文件的优先级高
这里我选择的是user1用户,给予该用户上传,删除,建立文件的功能
登陆如下:
五、ftp的常见报错
530报错表示认证失败
550报错表示程序本身不允许你这样做
553报错表示服务器上的文件系统不允许你写
500报错表示权限过大