思路:
- 关闭防火墙和selinux
- 配置yum源
- 软件三步曲(安装|确认|软件列表)
- 了解配置文件—->(man 5 xxx.conf)
- 根据需求通过修改配置文件完成服务的搭建
- 启动服务、开机自启动
-
一、FTP服务的客户端工具
linux: ftp、lftp(客户端工具)
rpm -q ftp lftp
yum list | grep ftp
yum list | grep lftp
二、FTP服务的基本配置
1.1 确认安装成功
rpm -q vsftpd
1.2 查案软件带来的文件列表
rpm -ql vsftpd
1.3 了解配置文件
主配置文件: man 5 vsftpd.conf
- 取出不以# 开头的行,
grep -v ^# /etv/vsftpd/vsftpd.conf
1.4 根据需求通过修改配置文件来完成服务的搭建
1.5 启动服务,开机自启动
chkconfig --list | grep vsftpd
chkconfig vsftpd on
- 确认21端口是否是开启状态
netstat -nltp | grep 21
1.6 测试验证
client:
yum -y install ftp lftp
ftp 10.1.1.1
使用ftp 或anonymous 作为用户名登录
总结:
- ftp 默认使用用户名和密码登录 ftp 或者匿名用户
- lftp 默认使用的匿名用户登录
- 匿名用户可以下载文件但是不能上传文件
-
需求一:允许匿名用户上传文件
man 5 vsftpd.conf
找到三个参数echo "anon_mkdir_write_enable=YES" >> vsftpd.conf
echo "anon_other_write_enable=YES" >> vsftpd.conf
echo "anon_upload_enable=YES" >> vsftpd.conf
- 重启服务
chmod o+w /var/ftp/pub
允许用户对服务端的扩展目录有写的权限umask 077
file: 666-077=600 rw- —- —- dir: 777-077=700 rwx —- —-echo "anon_umask=022" >> vsftpd.conf
- 重启服务
-
需求三:开启本地用户消息功能
1)本地用户访问 —> /home/username
2)匿名用户访问 —> /var/ftp 配置文件中
dirmessage_enable=YES
表示开启了消息功能echo "welcome to myhome" >> ~/.message
echo "welcome to anon home" >> /var/ftp/.message
- 测试验证。使用用户登录ftp时,就能看到提示消息
3)另外一种情况。只要你使用ftp连接服务端,就会看到消息
echo "banner_file=/etc/vsftpd/banner_file" >> vsftpd.conf
- 编辑文件 /etc/vsftpd/banner_file 内容
- 重启服务
-
需求四:禁锢本地用户的家,只能在自己的家中活动
1) 禁锢所有的本地用户
echo "chroot_local_user=YES" >> vsftpd.conf
- 重启服务,测试验证
2) 禁锢大部分用户,允许小部分
echo "chroot_local_user=YES" >> vsftpd.conf
echo "chroot_list_enable=YES" >> vsftpd.conf
echo "chroot_list_file=/etc/vsftpd/chroot_list" >> vsftpd.conf
- 编辑 /etc/vsftpd/chroot_list 文件,
echo stu2 >> chroot_lsit
VIP用户列表文件 - 重启,测试验证
3) 允许大部分,禁锢小部分
echo "chroot_local_user=NO" >> vsftpd.conf
或者将此行参数注释掉echo "chroot_list_enable=YES" >> vsftpd.conf
echo "chroot_list_file=/etc/vsftpd/chroot_list" >> vsftpd.conf
-
需求五:指定匿名用户和本地用户上传文件的目录
echo "anon_root=/anon/data" > vsftpd.conf
echo "local_root=/local/data" > vsftpd.conf
anon_root=/anon
chmod o+w /anon/data
-
FTP服务的访问控制
FTP服务的自身访问控制(对象访问控制)
需求1:不允许stu1 用户访问ftp服务
echo stu1 >> /etc/vsftpd/ftpusers
添加用户名到黑名单中去
需求2:只允许stu2用户访问ftp服务
echo "userlist_deny=NO" >> vsftpd.conf
将user_list 文件变成白名单echo stu2 >> user_list
添加用户名到白名单中
总结:
- 用户在ftpusers 文件中,那么不能访问ftp服务器
- 用户在user_list 文件中,如果该文件是白名单,那么只在该文件中的用户可以访问ftp服务器
- 如果user_list 文件是白名单,用户既在ftpusers 又在user_list 中,那么ftpusers黑名单拒绝优先
FTP服务的网络访问控制
- 支持tcp_wrappers
/etc/hosts.allow
/etc/hosts.deny - 查看服务名称,
rpm -ql openssh-server
- 判断一个服务是否支持tcp_wrappers
ldd /usr/sbin/sshd | grep libwrap
写法
/etc/hosts.deny
vsftpd:all
vsftpd:all EXCEPT 192.168.0.2
vsftpd:192.168.0.254
vsftpd:192.168.0.0/255.255.255.0
vsftpd:192.168.0.0/255.255.255.0,10.1.1.0/255.255.255.0 EXCEPT 192.168.0.254
注意: 子网掩码不支持192.168.0.0/24 这种写法
或者托管给xinetd 服务去管理