vsftpd 是 “very secure FTP daemon” 的缩写,安全性是它的最大特点。vsftpd 是一个 UNIX 类操作系统上运行的 FTP 服务器名字,它可以运行在 Linux、BSD、Solaris、 HP-UNIX 等平台上。vsftpd 是一个完全免费、开发源代码的 FTP 服务器软件,支持很多其他 FTP 服务器所不支持的特征。譬如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持 IPv6、速率高、等。
vsftpd 是一款在 Linux 发行版中最受推崇的 FTP 服务器程序。特点是小巧轻快,安全易用。
在开源操作系统中常用的 FTP 套件主要还有 ProFTPD、PureFTPd 和 wuftpd 等。 特点01、vsftpd 以一般身份启动服务,所以对 Linux 系统的使用权限要求较低,对于 Linux 系统的危害就相对减轻了。此外, vsftpd 还利用 chroot() 函数进行改换根目录的动作,使得系统工具不会被 vsftpd 服务所误用;
02、任何需要具有较高执行权限的 vsftpd 指令均以一特殊上层程序 ( parent process ) 所控制 ,该上层程序享有的较高执行权限功能已经被限制的相当低,并以不影响 Linux 系统本身为准;
03、全部来自 clients 端,想要使用这支上层程序所提供的较高执行权限之 vsftpd 指令的需求,均被视为『不可信任的要求』来处理,必需要经过相当程度的身份确认后,方可利用该上层程序功能。譬如:chown()、Login 要求、等等动作;
04、此外,上面提到的上层程序中,仍使用 chroot() 功能限制使用者的执行权限。
01、安装 vsftpd 3.0.2
- root:# apt-get install vsftpd
- 正在读取软件包列表... 完成
- 正在分析软件包的依赖关系树
- 正在读取状态信息... 完成
- 下列【新】软件包将被安装:
- vsftpd
- 升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 398 个软件包未被升级。
- 需要下载 111 kB 的软件包。
- 解压缩后会消耗掉 361 kB 的额外空间。
- 获取:1 [url]http://cn.archive.ubuntu.com/ubuntu/[/url] trusty-updates/main vsftpd amd64 3.0.2-1ubuntu2.14.04.1 [111 kB]
- 下载 111 kB,耗时 0秒 (285 kB/s)
- 正在预设定软件包 ...
- Selecting previously unselected package vsftpd.
- (正在读取数据库 ... 系统当前共安装有 172281 个文件和目录。)
- Preparing to unpack .../vsftpd_3.0.2-1ubuntu2.14.04.1_amd64.deb ...
- Unpacking vsftpd (3.0.2-1ubuntu2.14.04.1) ...
- Processing triggers for man-db (2.6.7.1-1) ...
- Processing triggers for ureadahead (0.100.0-16) ...
- 正在设置 vsftpd (3.0.2-1ubuntu2.14.04.1) ...
- vsftpd start/running, process 4350
- Processing triggers for ureadahead (0.100.0-16) ...
- root@npt-Aspire-4920:/home/npt# apt-get install vsftpd
- 正在读取软件包列表... 完成
- 正在分析软件包的依赖关系树
- 正在读取状态信息... 完成
- vsftpd 已经是最新的版本了。
- 升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 398 个软件包未被升级。
- root:#
复制代码 02、修改 vsftpd.conf 配置文件- root:# vi /etc/vsftpd.conf
复制代码修改前的配置文件
- # Example config file /etc/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.
- #
- #
- # Run standalone? vsftpd can run either from an inetd or as a standalone
- # daemon started from an initscript.
- listen=YES
- #
- # Run standalone with IPv6?
- # Like the listen parameter, except vsftpd will listen on an IPv6 socket
- # instead of an IPv4 one. This parameter and the listen parameter are mutually
- # exclusive.
- #listen_ipv6=YES
- #
- # Allow anonymous FTP? (Disabled by default)
- 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=YES
- #
- # 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
- #
- # If enabled, vsftpd will display directory listings with the time
- # in your local time zone. The default is to display GMT. The
- # times returned by the MDTM FTP command are also affected by this
- # option.
- use_localtime=YES
- #
- # Activate logging of uploads/downloads.
- 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=YES
- #chown_username=whoever
- #
- # You may override where the log file goes if you like. The default is shown
- # below.
- #xferlog_file=/var/log/vsftpd.log
- #
- # If you want, you can have your log file in standard ftpd xferlog format.
- # Note that the default log file location is /var/log/xferlog in this case.
- #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 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 restrict local users to their home directories. See the FAQ for
- # the possible risks in this before using chroot_local_user or
- # chroot_list_enable below.
- #chroot_local_user=YES
- #
- # 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().
- # (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
- # the user does not have write access to the top level directory within the
- # chroot)
- #chroot_local_user=YES
- #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
- #
- # Customization
- #
- # Some of vsftpd's settings don't fit the filesystem layout by
- # default.
- #
- # This option should be the name of a directory which is empty. Also, the
- # directory should not be writable by the ftp user. This directory is used
- # as a secure chroot() jail at times vsftpd does not require filesystem
- # access.
- secure_chroot_dir=/var/run/vsftpd/empty
- #
- # This string is the name of the PAM service vsftpd will use.
- pam_service_name=vsftpd
- #
- # This option specifies the location of the RSA certificate to use for SSL
- # encrypted connections.
- rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
- # This option specifies the location of the RSA key to use for SSL
- # encrypted connections.
- rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
复制代码修改后的配置文件
- # Example config file /etc/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.
- #
- #
- # Run standalone? vsftpd can run either from an inetd or as a standalone
- # daemon started from an initscript.
- listen=YES
- #
- # Run standalone with IPv6?
- # Like the listen parameter, except vsftpd will listen on an IPv6 socket
- # instead of an IPv4 one. This parameter and the listen parameter are mutually
- # exclusive.
- #listen_ipv6=YES
- #
- # Allow anonymous FTP? (Disabled by default)
- 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=YES
- #
- # 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
- #
- # If enabled, vsftpd will display directory listings with the time
- # in your local time zone. The default is to display GMT. The
- # times returned by the MDTM FTP command are also affected by this
- # option.
- use_localtime=YES
- #
- # Activate logging of uploads/downloads.
- 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=YES
- #chown_username=whoever
- #
- # You may override where the log file goes if you like. The default is shown
- # below.
- #xferlog_file=/var/log/vsftpd.log
- #
- # If you want, you can have your log file in standard ftpd xferlog format.
- # Note that the default log file location is /var/log/xferlog in this case.
- #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 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 restrict local users to their home directories. See the FAQ for
- # the possible risks in this before using chroot_local_user or
- # chroot_list_enable below.
- #chroot_local_user=YES
- #
- # 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().
- # (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
- # the user does not have write access to the top level directory within the
- # chroot)
- #chroot_local_user=YES
- #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
- #
- # Customization
- #
- # Some of vsftpd's settings don't fit the filesystem layout by
- # default.
- #
- # This option should be the name of a directory which is empty. Also, the
- # directory should not be writable by the ftp user. This directory is used
- # as a secure chroot() jail at times vsftpd does not require filesystem
- # access.
- secure_chroot_dir=/var/run/vsftpd/empty
- #
- # This string is the name of the PAM service vsftpd will use.
- pam_service_name=vsftpd
- #
- # This option specifies the location of the RSA certificate to use for SSL
- # encrypted connections.
- rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
- # This option specifies the location of the RSA key to use for SSL
- # encrypted connections.
- rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
- local_root=/home/ftp
复制代码 03、创建 ftpuser 用户、设置 ftpuser 用户密码、设置 FTP 根目录- root:# useradd -d /home/ftp -m ftpuser
- root:# passwd ftpuser
- 输入新的 UNIX 密码:
- 重新输入新的 UNIX 密码:
- passwd:已成功更新密码
- root:#
复制代码 04、修改 FTP 根目录权限,创建目录测试是否正常- root:# chmod -R 777 /home/ftp
- root:# mkdir /home/ftp/data
- root:#
复制代码 05、修改 vsftpd 配置文件
可修正用 useradd 创建帐号,登录 FTP 出现 530 login incorrect - root:# vi /etc/pam.d/vsftpd
复制代码修改前的配置文件
- # Standard behaviour for ftpd(8).
- auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
- # Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.
- # Standard pam includes
- @include common-account
- @include common-session
- @include common-auth
- auth required pam_shells.so
复制代码修改后的配置文件
- # Standard behaviour for ftpd(8).
- auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
- # Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.
- # Standard pam includes
- @include common-account
- @include common-session
- @include common-auth
- #auth required pam_shells.so
复制代码 06、重启 vsftpd 服务- root:# service vsftpd restart
- vsftpd stop/waiting
- vsftpd start/running, process 4862
- root:#
复制代码
版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。
|