vsftpd 服务
vsftpd 服务
准备工作:
#iptables -F 清空防火墙
#service iptables save 保存服务
#yum -y install vsftpd 安装服务
#mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
#grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf
#cat /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
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
vsftpd服务程序常用的参数以及作用
参数 作用
listen=[YES|NO] 是否以独立运行的方式监听服务
listen_address=IP地址 设置要监听的IP地址
listen_port=21 设置FTP服务的监听端口
download_enable=[YES|NO] 是否允许下载文件
userlist_enable=[YES|NO]userlist_deny=[YES|NO] 设置用户列表为“允许”还是“禁止”操作
max_clients=0 最大客户端连接数,0为不限制
max_per_ip=0 同一IP地址的最大连接数,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] 是否开放匿名用户的其他写入权限(包括重命名、删除等操作权限)
anon_max_rate=0 匿名用户的最大传输速率(字节/秒),0为不限制
local_enable=[YES|NO] 是否允许本地用户登录FTP
local_umask=022 本地用户上传文件的umask值
local_root=/var/ftp 本地用户的FTP根目录
chroot_local_user=[YES|NO] 是否将用户权限禁锢在FTP目录,以确保安全
local_max_rate=0 本地用户最大传输速率(字节/秒),0为不限制
vsftpd服务程序
匿名开放模式:
可以向匿名用户开放的权限参数以及作用
参数 作用
anonymous_enable=YES 允许匿名访问模式
anon_umask=022 匿名用户上传文件的umask值
anon_upload_enable=YES 允许匿名用户上传文件
anon_mkdir_write_enable=YES 允许匿名用户创建目录
anon_other_write_enable=YES 允许匿名用户修改目录名称或删除目录
# vim /etc/vsftpd/vsftpd.conf
1 anonymous_enable=YES
2 anon_umask=022
3 anon_upload_enable=YES
4 anon_mkdir_write_enable=YES
5 anon_other_write_enable=YES
6 local_enable=YES
7 write_enable=YES
8 local_umask=022
9 dirmessage_enable=YES
10 xferlog_enable=YES
11 connect_from_port_20=YES
12 xferlog_std_format=YES
13 listen=NO
14 listen_ipv6=YES
15 pam_service_name=vsftpd
16 userlist_enable=YES
17 tcp_wrappers=YES
#systemctl restart vsftpd
#systemctl enable vsftpd
(1)现在可以在客户端进行登入,虽然开放了所有的权限,但客户端却无法新建目录;因为默认访问的是/var/ftp目录。查看该目录的权限得知,只有root管理员才有写入权限。
# ls -ld /var/ftp/pub
# chown -Rf ftp /var/ftp/pub
(2)再创建新目录还是报错,用getsebool命令查看与FTP相关的SELinux域策略都有哪些:
# getsebool -a | grep ftp
ftp_home_dir --> off
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
# setsebool -P ftpd_full_access=on
(3)现在用户可以正常的创建目录了。
本地用户模式:
本地用户模式使用的权限参数以及作用
参数 作用
anonymous_enable=NO 禁止匿名访问模式
local_enable=YES 允许本地用户模式
write_enable=YES 设置可写权限
local_umask=022 本地用户模式创建文件的umask值
userlist_enable=YES 启用“禁止用户名单”,名单文件为ftpusers和user_list
userlist_deny=YES 开启用户作用名单文件功能
# vim /etc/vsftpd/vsftpd.conf
1 anonymous_enable=NO
2 local_enable=YES
3 write_enable=YES
4 local_umask=022
5 dirmessage_enable=YES
6 xferlog_enable=YES
7 connect_from_port_20=YES
8 xferlog_std_format=YES
9 listen=NO
10 listen_ipv6=YES
11 pam_service_name=vsftpd
12 userlist_enable=YES
13 tcp_wrappers=YES
(1)/etc/vsftpd/user_list 此文件有人员禁止名单,删除后才能登入。
(2)/etc/vsftpd/ftpusers 此文件有人员禁止名单,删除后才能登入。
(3)# setsebool -P ftpd_full_access=on
(4)现在切换到其它用户,可以正常登入了。
虚拟用户模式:
(1)创建用于进行FTP认证的用户数据库文件,其中奇数行为账户名,偶数行为密码。例如,我们分别创建出zhangsan和lisi两个用户,密码均为redhat
# cd /etc/vsftpd/
# vim vuser.list
zhangsan
redhat
lisi
redhat
但是,明文信息既不安全,也不符合让vsftpd服务程序直接加载的格式,需要使用db_load命令用哈(hash)算法将原始的明文信息文件转换成数据库文件
# db_load -T -t hash -f vuser.list vuser.db
# file vuser.db
vuser.db: Berkeley DB (Hash, version 9, native byte-order)
# chmod 600 vuser.db
# rm -f vuser.list
(2)创建vsftpd服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户
# useradd -d /var/ftproot -s /sbin/nologin virtual
# ls -ld /var/ftproot/
drwx------. 3 virtual virtual 74 Jul 14 17:50 /var/ftproot/
# chmod -Rf 755 /var/ftproot/
(3)建立用于支持虚拟用户的PAM文件。
# vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
(4)在vsftpd服务程序的主配置文件中通过pam_service_name参数将PAM认证文件的名称修改为vsftpd.vu
利用PAM文件进行认证时使用的参数以及作用
参数 作用
anonymous_enable=NO 禁止匿名开放模式
local_enable=YES 允许本地用户模式
guest_enable=YES 开启虚拟用户模式
guest_username=virtual 指定虚拟用户账户
pam_service_name=vsftpd.vu 指定PAM文件
allow_writeable_chroot=YES 允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求
# vim /etc/vsftpd/vsftpd.conf
1 anonymous_enable=NO
2 local_enable=YES
3 guest_enable=YES
4 guest_username=virtual
5 allow_writeable_chroot=YES
6 write_enable=YES
7 local_umask=022
8 dirmessage_enable=YES
9 xferlog_enable=YES
10 connect_from_port_20=YES
11 xferlog_std_format=YES
12 listen=NO
13 listen_ipv6=YES
14 pam_service_name=vsftpd.vu
15 userlist_enable=YES
16 tcp_wrappers=YES
(5)为虚拟用户设置不同的权限。
# mkdir /etc/vsftpd/vusers_dir/
# cd /etc/vsftpd/vusers_dir/
# touch lisi
# vim zhangsan
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
然后再次修改vsftpd主配置文件,通过添加user_config_dir参数来定义这两个虚拟用户不同权限的配置文件所存放的路径。
# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=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.vu
userlist_enable=YES
tcp_wrappers=YES
user_config_dir=/etc/vsftpd/vusers_dir
(6)设置SELinux域允许策略,然后使用虚拟用户模式登录FTP服务器。
# setsebool -P ftpd_full_access=on
现在可以正常的登入FTP服务器,验证各项权限是否正确。
虚拟用户权限设置(参考)
上传的权限:
# vim /etc/vsftpd/config/usera
local_root=/home/USERa
write_enable=YES
download_enable=NO
anon_umask=022
anon_world_readable_only=NO(关闭只可读权限)
anon_upload_enable=YES(上传)
anon_mkdir_write_enable=YES(创建目录权限)
anon_other_write_enable=YES(其他写权限,改,删)
cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST,RETR
下载的权限:
# vim /etc/vsftpd/config/userb
local_root=/home/USERb
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=NO
anon_other_write_enable=YES
所有权限:
# vim /etc/vsftpd/config/userc
local_root=/home/USERc
guest_enable=YES
guest_username=user1
anon_world_readable_only=NO
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_umask=022
在此配置中加上download_enable=NO后则账号取消了下载权限