1. FTP简单介绍
文件传输协议FTP(File Transfer Protocol),即能够让用户在互联网中上传、下载文件的文件协议
FTP客户端 FTP服务器端
FTP占用两个端口号(21,20)
21端口:命令控制,用于接受客户端执行的FTP命令。
20端口:数据传输,用于上传、下载文件数据。
FTP数据传输类型:
主动模式:FTP服务器端主动向FTP客户端发起连接请求。
被动模式:FTP服务器等待FTP客户端的连接请求。
2. 安装Vsftpd服务程序
Vsftpd即“Very Secure FTP Dawmon”一款运行在Unix操作系统的FTP服务端程序,
主打:安全性、完全开源免费、速度高、支持IPv6、虚拟用户功能等。
#yum install vsftpd -y
#iptables -F //清空防火墙规则
#service iptables save //保存清空后的防火墙规则
/usr/sbin/vsftpd 主程序
/etc/vsftpd/ftpusers & /etc/vsftpd/user_list //用户禁止登陆列表
/etc/vsftpd/vsftpd.conf //主配置文件
配置文件参数作用详解:
listen=yes|no //是否以独立运行方式监听服务
listen_address=ip_地址 //设置要监听的ip地址
listen_port=21 //设置ftp的监听端口
download_enable=yes|no //是否运行下载
userlist_enable=yes|no //是否启用“禁止登陆用户名单”
max_client=0 //最大客户端连接数,0位不限制
anonymous_enable=yes| no //是否允许匿名用户访问
anon_upload_enable=yes|no //是否允许匿名用户上传文件
anon_umask=022 //匿名用户上传文件的umask值
anon_root=/var/ftp // 匿名用户的ftp根目录
anon_mkdir_write_enable=yes|no //是否开放匿名用户创建目录
anon_other_write_enable=yes|no //是否开放匿名用户其他写入权限
local_enable=yes|no //是否允许本地用户登录ftp
local_umask=022
local_root=/var/ftp
chroot_local_user=yes|no //是否将用户权限禁锢在ftp目录,安全
3. Vsftpd的三种验证方式
匿名访问:任何人无需验证口令即可登录ftp服务器。
本地用户:使用ftp服务器中的账号、密码信息。
匿名用户:创建的独立的ftp账号资料。
3.1 匿名访问模式
vim /etc/vsftpd/vsftp.conf
-------------------------------------
anonymous_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enble=yes
anon_other_wite_enable=yes
write_enbale=yes
-----------------------------------------
服务器端:chown ftp /var/ftp/pub //修改pub目录宿主
setenforce=0 //关闭selinux
vim /etc/selinux/conf
systemctl restart vsftpd
客服端配置:yun install ftp -y
ftp 192.168.100.10(服务器ip)
anonymous
3.2 本地用户模式
vim /etc/vsftpd/vsftp.conf
-------------------------------------
anonymous_enable=no
local_enable=yes
write_enable=yes
userlist_deny=yes
userlist_enable=yes
pam_service_name=vsftpd
-----------------------------------------
systemctl restart vsftpd
useradd jerry && echo "jerry" | passwd --stdin jerry //添加userlist外的用户
iptables -F
setenforce=0
--------------------------------
3.3 虚拟用户模式(最安全)
3.3.1 建立虚拟FTP用户数据库文件
cd /etc/vsftpd
vim myvuser.list //单数行账号 双数为密码
Jerry
Jerry
db_load -T -t hash -f myvuser.list myvuser.db //使用dbload命令用hash算法生成数据库文件myvuser.db
chmod 600 myvuser.db //修改权限
rm -f myvuser.list
3.3.2 创建FTP根目录及虚拟用户映射的系统用户
useradd -d /var/ftproot -s /sbin/nologin virtual //创建默认文件根目录/var/ftproot
ls -ld /var/ftproot/
chmod -Rf 755 /var/ftproot/
3.3.3 建立支持虚拟用的PAM认证文件
vim /etc/pam.d/vsftpd.u
auth required pam_userdb.so.db=/etc/vsftpd/myvuser //myvuser不加后缀
account required pam_userdb.so.db=/etc/vsftpd/myvuser
3.3.4 在vsftpd.conf文件中添加支持配置
---------- -------------------------------------
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu //指定pam文件
write_enable=YES
allow_writeable_chroot=YES //允许根目录可写
user_config_dir=/etc/vsftpd/myvusers_dir
-----------------------------------------------
3.3.5 为虚拟用户设置不同的权限
............................................................
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/myvusers_dir //创建用户独立权限配置文件存放目录
cd /etc/vsftpd/myvusers_dir
vim Jerry //配置Jerry用户的具体权限
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
......................................................................
3.3.6 重启 vsftpd服务 systemctl restart vsftpd
4. 可插拔认证模块PAM
PAM:Pluggable Authentication Modules一种认证机制
应用 -> PAM api (应用接口层) -> 模块 (鉴别模块层)
重要pam目录:
/lib/security:pam //认证模块
/etc/pam.d //针对不同服务定义好的pam配置文件