1、安装vsftpd
yum install vsftpd -y
chkconfig vsftpd on #设置开机时自动运行
2、配置vsftp服务器
配置文件说明:
/etc/vsftpd/vsftpd.conf vsftpd的核心配置文件
/etc/vsftpd/ftpusers 用于指定哪些用户不能访问FTP服务器
/etc/vsftpd/user_list 指定允许使用vsftpd的用户列表文件
/etc/vsftpd/vsftpd_conf_migrate.sh 是vsftpd操作的一些变量和设置脚本
/var/ftp/ 默认情况下匿名用户的根目录
========================================================================
vi /etc/vsftpd/vsftpd.conf #配置
- #mple config file /etc/vsftpd/vsftpd.conf
- #
- # The default compiled in settings are fairly paranoid. This sample file
- # loosens things up a bit, to make the ftp daemon more usable.
- # Please see vsftpd.conf.5 for all compiled in defaults.
- #
- # READ THIS: This example file is NOT an exhaustive list of vsftpd options.
- # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
- # capabilities.
- #
- # Allow anonymous FTP? (Beware - allowed by default if you comment this out).
- anonymous_enable=No
- #
- # Uncomment this to allow local users to log in.
- local_enable=YES
- #
- # Uncomment this to enable any form of FTP write command.
- write_enable=YES
- #
- # Default umask for local users is 077. You may wish to change this to 022,
- # if your users expect that (022 is used by most other ftpd's)
- local_umask=022
- #
- # Uncomment this to allow the anonymous FTP user to upload files. This only
- # has an effect if the above global write enable is activated. Also, you will
- # obviously need to create a directory writable by the FTP user.
- anon_upload_enable=NO
- #
- # Uncomment this if you want the anonymous FTP user to be able to create
- # new directories.
- #anon_mkdir_write_enable=YES
- #
- # Activate directory messages - messages given to remote users when they
- # go into a certain directory.
- dirmessage_enable=YES
- #
- # The target log file can be vsftpd_log_file or xferlog_file.
- # This depends on setting xferlog_std_format parameter
- xferlog_enable=YES
- #
- # Make sure PORT transfer connections originate from port 20 (ftp-data).
- connect_from_port_20=YES
- #
- # If you want, you can arrange for uploaded anonymous files to be owned by
- # a different user. Note! Using "root" for uploaded files is not
- # recommended!
- chown_uploads=NO
- #chown_username=whoever
- #
- # The name of log file when xferlog_enable=YES and xferlog_std_format=YES
- # WARNING - changing this filename affects /etc/logrotate.d/vsftpd.log
- xferlog_file=/var/log/xferlog
- #
- # Switches between logging into vsftpd_log_file and xferlog_file files.
- # NO writes to vsftpd_log_file, YES to xferlog_file
- xferlog_std_format=YES
- #
- # You may change the default value for timing out an idle session.
- idle_session_timeout=600
- #
- # You may change the default value for timing out a data connection.
- data_connection_timeout=120
- #
- # It is recommended that you define on your system a unique user which the
- # ftp server can use as a totally isolated and unprivileged user.
- #nopriv_user=ftpsecure
- #
- # Enable this and the server will recognise asynchronous ABOR requests. Not
- # recommended for security (the code is non-trivial). Not enabling it,
- # however, may confuse older FTP clients.
- async_abor_enable=YES
- #
- # By default the server will pretend to allow ASCII mode but in fact ignore
- # the request. Turn on the below options to have the server actually do ASCII
- # mangling on files when in ASCII mode.
- # Beware that on some FTP servers, ASCII support allows a denial of service
- # attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
- # predicted this attack and has always been safe, reporting the size of the
- # raw file.
- # ASCII mangling is a horrible feature of the protocol.
- ascii_upload_enable=YES
- ascii_download_enable=YES
- #
- # You may fully customise the login banner string:
- ftpd_banner=Welcome to blah gamedog FTP service.
- #
- # You may specify a file of disallowed anonymous e-mail addresses. Apparently
- # useful for combatting certain DoS attacks.
- #deny_email_enable=YES
- # (default follows)
- #banned_email_file=/etc/vsftpd/banned_emails
- #
- # You may specify an explicit list of local users to chroot() to their home
- # directory. If chroot_local_user is YES, then this list becomes a list of
- # users to NOT chroot().
- #chroot_list_enable=YES
- # (default follows)
- #chroot_list_file=/etc/vsftpd/chroot_list
- #
- # You may activate the "-R" option to the builtin ls. This is disabled by
- # default to avoid remote users being able to cause excessive I/O on large
- # sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
- # the presence of the "-R" option, so there is a strong case for enabling it.
- #ls_recurse_enable=YES
- #
- # When "listen" directive is enabled, vsftpd runs in standalone mode and
- # listens on IPv4 sockets. This directive cannot be used in conjunction
- # with the listen_ipv6 directive.
- listen=YES
- #
- # This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6
- # sockets, you must run two copies of vsftpd whith two configuration files.
- # Make sure, that one of the listen options is commented !!
- #listen_ipv6=YES
- listen_port=21
- pam_service_name=vsftpd
- userlist_enable=YES
- tcp_wrappers=YES
- chroot_local_user=YES
- guest_enable=YES
- guest_username=www
- user_config_dir=/etc/vsftpd/vconf
- virtual_use_local_privs=YES
- pasv_min_port=6000
- pasv_max_port=6010
- accept_timeout=5
- connect_timeout=1
- use_localtime=YES
3、
编辑虚拟用户名单文件:(第一行账号,第二行密码,注意:不能使用root做用户名,系统保留)
vi /etc/vsftpd/virtusers
web
123456
=======================================================================
4、生成虚拟用户数据文件:
yum install db4* -y #命令安装
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
chmod 600 /etc/vsftpd/virtusers.db #设定PAM验证文件,并指定对虚拟用户数据库文件进行读取=======================================================================
5、在/etc/pam.d/vsftpd的文件头部加入以下信息(在后面加入无效)
修改前先备份 cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
vi /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
6、新建一个系统用户www,用户家目录为/home/www, 用户登录终端设为/bin/false(即使之不能登录系统)
useradd www -d /home/wwwroot -s /bin/nologin
chown www:www /home/wwwroot -R
7、建立虚拟用户个人Vsftp的配置文件
mkdir /etc/vsftpd/vconf
cd /etc/vsftpd/vconf
touch web #这里创建三个虚拟用户配置文件
vi web #编辑用户web1配置文件,其他的跟这个配置文件类似
local_root=/home/www/web/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
8、配置防火墙
vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6000:6010 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
/etc/init.d/iptables restart
9、selinux配置:
setsebool -P ftpd_disable_trans 1
6.0以后
setsebool -p allow_ftpd_full_access on
setsebool -p allow_ftpd_use_cifs on
setsebool -p allow_ftpd_use_nfs on
setsebool -P ftp_home_dir on
setsebool -p httpd_enable_ftp_server on
setsebool -p tftp_anon_write on
service vsftpd restart
10、重启vsftpd服务器
/etc/init.d/vsftpd restart