Vsftpd安装详解

1.yum install vsftpd*

2.yum install pam*

3.yum install db4*

5.建立Vsftpd虚拟宿主用户:useradd ftp -s /sbin/nologin

本篇主要是介绍Vsftp的虚拟用户,虚拟用户并不是系统用户,也就是说这些FTP的用户在系统中是不存在的。

他们的总体权限其实是集中寄托在一个在系统中的某一个用户身上的,

所谓Vsftpd的虚拟宿主用户,就是这样一个支持着所有虚拟用户的宿主用户。

由于他支撑了FTP的所有虚拟的用户,那么他本身的权限将会影响着这些虚拟的用户,

因此,处于安全性的考虑,也要非分注意对该用户的权限的控制,

该用户也绝对没有登陆系统的必要,这里也设定他为不能登陆系统的用户。

6.前先备份Vsftpd.conf: cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup

7.编辑文件Vsftpd.conf: vim /etc/vsftpd/vsftpd.conf

#anonymous_enable=YES

anonymous_enable=NO

#设定不允许匿名访问

local_enable=YES

#设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。

write_enable=YES

#设定可以进行写操作。

local_umask=022

#设定上传后文件的权限掩码。

#anon_upload_enable=YES

anon_upload_enable=NO

禁止匿名用户上传。

#anon_mkdir_write_enable=YES

anon_mkdir_write_enable=NO

#禁止匿名用户建立目录。

dirmessage_enable=YES

#设定开启目录标语功能。

xferlog_enable=YES

#设定开启日志记录功能。

connect_from_port_20=YES

设定端口20进行数据连接。

#chown_uploads=YES

chown_uploads=NO

设定禁止上传文件更改宿主。

xferlog_file=/var/log/vsftpd.log

#设定Vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来,并且由于这里更改了Vsftpd的服务宿主用户为手动建立的Vsftpd。必须注意给与该用户对日志的写入权限,否则服务将启动失败。

xferlog_std_format=YES

#设定日志使用标准的记录格式。

#idle_session_timeout=600

#设定空闲连接超时时间,这里使用默认。将具体数值留给每个具体用户具体指定,当然如果不指定的话,还是使用这里的默认值600,单位秒。

#data_connection_timeout=120

#设定单次最大连续传输时间,这里使用默认。将具体数值留给每个具体用户具体指定,当然如果不指定的话,还是使用这里的默认值120,单位秒。

#nopriv_user=ftpsecure

nopriv_user=vsftpd

#设定支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户。注意,一旦做出更改宿主用户后,必须注意一起与该服务相关的读写文件的读写赋权问题。比如日志文件就必须给与该用户写入权限等。

async_abor_enable=YES

#设定支持异步传输功能。

ascii_upload_enable=YES

ascii_download_enable=YES

#设定支持ASCII模式的上传和下载功能。

ftpd_banner=This Vsftp server supports virtual users ^_^

#设定Vsftpd的登陆标语。

chroot_list_enable=NO

chroot_list_file=/etc/vsftpd/chroot_list

#禁止用户登出自己的FTP主目录。

listen=YES

#设定该Vsftpd服务工作在StandAlone模式下。顺便展开说明一下,所谓StandAlone模式就是该服务拥有自己的守护进程支持,在ps -A命令下我们将可用看到vsftpd的守护进程名。

#如果不想工作在StandAlone模式下,则可以选择SuperDaemon模式,在该模式下 vsftpd将没有自己的守护进程,而是由超级守护进程Xinetd全权代理,与此同时,Vsftp服务的许多功能将得不到实现。

listen_ipv6=NO

#设定该Vsftpd服务工作不在StandAlone模式下,否则会和ipv4冲突,从而无法启动vsftpd服务

pam_service_name=vsftpd

#设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。

userlist_enable=YES

#设定userlist_file中的用户将不得使用FTP。

tcp_wrappers=YES

#设定支持TCP Wrappers。#KC: The following entries are added for supporting virtual ftp users.

#以下这些是关于Vsftpd虚拟用户支持的重要配置项目。默认Vsftpd.conf中不包含这些设定项目,需要自己手动添加配置。

guest_enable=YES

#设定启用虚拟用户功能。

guest_username=ftp

#指定虚拟用户的宿主用户。

virtual_use_local_privs=YES

#设定虚拟用户的权限符合他们的宿主用户。

user_config_dir=/etc/vsftpd/vconf

#设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的地方就是这些配置文件名必须和虚拟用户名相同。

allow_writeable_chroot=YES

#虚拟用户登录权限

8.在/etc/vsftpd/创建chroot_list文件,并把vftpd.conf配置文件中的guest_username(这里是第5步添加的用户名)写入文件即可

9.在/etc/vsftpd/创建ftpuserAndpwd.txt文件,并输入您需要创建的虚拟账户和密码,奇数行为用户名,偶数行为密码

10.在/etc/vsftpd/生成ftpuserAndpwd.db文件,命令:db_load -T -t hash -f 源文件 目标文件

11.在/etc/vsftpd/创建user_config_dir=/etc/vsftpd/vconf的vconf文件夹,并在文件夹内为每个虚拟用户(及:tpuserAndpwd.txt内的用户名)添加配置文件(注意:配置文件名必须和每个虚拟用户名相同)

local_root=/var/www/html

#虚拟用户根目录,根据实际情况修改该目录必须要有读写权限:chmod -R 777 目录

write_enable=YES

anon_umask=022

anon_world_readable_only=NO

anon_upload_enable=YES

        anon_mkdir_write_enable=YES

        anon_other_write_enable=YES

12.编辑/etc/pam.d/vsftpd(注:ftpuserAndpwd为/etc/vsftpd/生成的ftpuserAndpwd.db)

先查看系统版本号: getconf LONG_BIT

系统为32位,注释掉前面所有行,在最后添加:

auth required pam_userdb.so db=/etc/vsftpd/ftpuserAndpwd

account required pam_userdb.so db=/etc/vsftpd/ftpuserAndpwd

系统为64位,注释掉前面所有行,在最后添加:

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/ftpuserAndpwd

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/ftpuserAndpwd

13.设置Selinux

getsebool -a|grep ftp

#查看相关ftp状态

setsebool -P ftp_home_dir=on

#设置ftp可以使用home目录

setsebool -P allow_ftpd_full_access=on

#设置ftp用户可以有所有权限

14.启动vsftpd服务

service vsftpd start/systemctl restart vsftpd.service

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@修改端口@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

1.编辑/etc/vsftpd/vsftpd.conf 文件,在该配置文件中添加此行:

listen_port=端口号

2.编辑/etc/services 文件:

ftp 21/tcp 改为 ftp 端口号/tcp

ftp 21/udp 改为 ftp 端口号/tcp

3.重启服务:

systemctl restart vsftpd

4.查看监听端口:

netstat -tnulp | grep vsftp

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@自动安装shell@@@@@@@@@@@@@@@@@@@@@@

#/bin/bash
#
#  The script help you install vsftp automatically.
#
VIRTUAL_USER='vftp'

echo -n '...... Yum install Vsftpd......'
(
   yum -y install vsftpd
) &> /dev/null && echo 'Completed!' || exit
#echo -n '...... Yum install libdb4......'
#(
#   yum -y install *db4*
#) &> /dev/null && echo 'Completed!' || exit

echo -n '......Add virtual user.....'
(
   useradd $VIRTUAL_USER -s /sbin/nologin
   useradd vsftpd -s /sbin/nologin
) &> /dev/null && echo 'Completed!' || exit

echo -n '......Modify config file.......'
(
   cd /etc/vsftpd/
   cp vsftpd.conf vsftpd.conf.bak
  sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
  sed -i "s/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
  sed -i "s/#anon_upload_enable=YES/anon_upload_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
  sed -i "s/#chown_uploads=YES/chown_uploads=NO/g" '/etc/vsftpd/vsftpd.conf'
  sed -i "s/#xferlog_file=\/var\/log\/xferlog/xferlog_file=\/var\/log\/vsftpd.log/g" '/etc/vsftpd/vsftpd.conf'
  sed -i "s/#nopriv_user=ftpsecure/nopriv_user=vsftpd/g" '/etc/vsftpd/vsftpd.conf'
  sed -i "s/#async_abor_enable=YES/async_abor_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
  sed -i "s/#ascii_upload_enable=YES/ascii_upload_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
  sed -i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
  sed -i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=This Vsftp server support virtual users/g" '/etc/vsftpd/vsftpd.conf'
  sed -i "s/#chroot_list_enable=YES/chroot_list_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
  sed -i "s/#chroot_list_file=\/etc\/vsftpd\/chroot_list/chroot_list_file=\/etc\/vsftpd\/chroot_list/g" '/etc/vsftpd/vsftpd.conf'
  sed -i "s/listen=NO/listen=YES/g" '/etc/vsftpd/vsftpd.conf'
  sed -i "s/listen_ipv6=YES/listen_ipv6=NO/g" '/etc/vsftpd/vsftpd.conf'
  echo -e "\nguest_enable=YES\nguest_username=${VIRTUAL_USER}\nvirtual_use_local_privs=YES\nuser_config_dir=/etc/vsftpd/vconf\nallow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf
) &> /dev/null && echo 'Completed!' || exit

echo -n '......create chroot_list file......'
(
   touch /etc/vsftpd/chroot_list
   echo -e ${VIRTUAL_USER} >> chroot_list
) &> /dev/null && echo 'Completed!' || exit

echo -n '......create virtual user db......'
(
   touch /etc/vsftpd/ftpuserAndpwd.txt
   echo -e "user1\nPassword1\nuser2\nPassword2\nuser3\nPassword3" >> /etc/vsftpd/ftpuserAndpwd.txt
   db_load -T -t hash -f /etc/vsftpd/ftpuserAndpwd.txt /etc/vsftpd/ftpuserAndpwd.db
   file ftpuserAndpwd.db
) &> /dev/null && echo 'Completed!' || exit

echo -n '.......create virtual user config file.......'
(
  mkdir /etc/vsftpd/vconf
  touch /etc/vsftpd/vconf/xiong
  echo -e "local_root=/var/www/html\nwrite_enable=YES\nanon_umask=022\nanon_world_readable_only=NO\nanon_upload_enable=YES\nanon_mkdir_write_enable=YES\nanon_other_write_enable=YES" >> /etc/vsftpd/vconf/xiong
  cp /etc/vsftpd/vconf/xiong /etc/vsftpd/vconf/linxue
  cp /etc/vsftpd/vconf/xiong /etc/vsftpd/vconf/xiaohua
) &> /dev/null && echo 'Completed!' || exit
 
echo -n '......modify psm.d/vsftpd......'
(
  cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
  echo -e "auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/ftpuserAndpwd\naccount required /lib64/security/pam_userdb.so db=/etc/vsftpd/ftpuserAndpwd" > /etc/pam.d/vsftpd
) &> /dev/null && echo 'Completed!' || exit

echo -n '...... create home_dir and open selinux.......'
(
   mkdir -p /var/www/html
   chmod -R 777 /var/www/html
   getsebool -a | grep ftp
   setsebool -P ftp_home_dir=on
   setsebool -P allow_ftpd_full_access=on
) &> /dev/null && echo 'Completed!' || exit

echo -n '.......start service and set start when system boot up..........'
(
   firewall-cmd --premanent --add-port=21/tcp
   firewall-cmd --premanent --add-service=ftp
   firewall-cmd --reload
   systemctl enaable vsftpd.service
   systemctl restart vsftpd.service
) &> /dev/null && echo 'Completed!' || exit

 

安装完毕后,打开网页 ftp://主机地址,显示如下

image

posted @ 2016-06-05 15:21  塞上飞雪  阅读(143)  评论(0)    收藏  举报