1、FTP服务器是按照FTP协议在互联网上提供文件存储和访问服务的主机,FTP客户端则是向服务器发送连接请求,以建立数据传输链路的主机。FTP协议有下面两种工作模式。
主动模式:FTP服务器主动向客户端发起连接请求
被动模式:FTP服务器等待客户端发起连接请求(FTP的默认工作模式)
2、vsftpd服务程序
vsftpd作为更加安全的文件传输的服务程序,允许用户以三种认证模式登录到FTP服务器上:
1>匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器;
2>本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。
3>虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。
3、FTP部署
1>前期关闭防火墙,禁用selinux
2>安装
yum install vsftpd -y
3>vsftpd服务程序的主配置文件(/etc/vsftpd/vsftpd.conf)
vsftpd服务程序常用的参数以及作用如下:
参数 作用 anonymous_enable=[YES|NO] 是否允许匿名用户访问 anon_umask=022 匿名用户上传文件的umask值 anon_upload_enable=[YES|NO] 是否允许匿名用户上传文件 anon_mkdir_write_enable=[YES|NO] 是否允许匿名用户创建目录 anon_other_write_enable=[YES|NO] 是否开放匿名用户的其他写入权限(包括重命名、删除等操作权限) local_enable=[YES|NO] 是否允许本地用户登录FTP local_umask=022 本地用户上传文件的umask值 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为不限制 dirmessage_enable=[YES|NO] 欢迎语设置(.message) message_file=.message 设置目录消息文件,可将要显示的信息写入该文件。默认值为.message ascii_upload_enable=YES/NO(NO) 设置是否启用ASCII 模式上传数据,默认值为NO ascii_download_enable=YES/NO(NO) 设置是否启用ASCII 模式下载数据,默认值为NO tcp_wrappers=YES/NO 设置vsftpd是否与tcp wrapper相结合来进行主机的访问控制。默认值为YES。如果启用,则vsftpd服务器会检查/etc/hosts.allow 和/etc/hosts.deny 中的设置,来决定请求连接的主机,是否允许访问该FTP服务器。这两个文件可以起到简易的防火墙功能。 比如:若要仅允许192.168.0.1—192.168.0.254的用户可以连接FTP服务器,则在/etc/hosts.allow文件中添加以下内容: vsftpd:192.168.0. :allow all:all :deny accept_timeout=60 设置建立FTP连接的超时时间,单位为秒。默认值为60。 connect_timeout=60 PORT 方式下建立数据连接的超时时间,单位为秒。默认值为60。 data_connection_timeout=120 设置建立FTP数据连接的超时时间,单位为秒。默认值为120。 idle_session_timeout=300 设置多长时间不对FTP服务器进行任何操作,则断开该FTP连接,单位为秒。默认值为300 。 xferlog_enable= YES/NO(YES) 是否启用上传/下载日志记录。如果启用,则上传与下载的信息将被完整纪录在xferlog_file 所定义的档案中。预设为开启。 xferlog_file=/var/log/vsftpd.log 设置日志文件名和路径,默认值为/var/log/vsftpd.log。 xferlog_std_format=YES/NO(NO) 如果启用,则日志文件将会写成xferlog的标准格式,如同wu-ftpd 一般。默认值为关闭。 log_ftp_protocol=YES|NO(NO) 如果启用此选项,所有的FTP请求和响应都会被记录到日志中,默认日志文件在/var/log/vsftpd.log。启用此选项时,xferlog_std_format不能被激活。这个选项有助于调试。默认值为NO。 pam_service_name=vsftpd 设置PAM使用的名称,默认值为/etc/pam.d/vsftpd。 guest_enable= YES/NO(NO) 启用虚拟用户。默认值为NO。 guest_username=ftp 这里用来映射虚拟用户。默认值为ftp。 virtual_use_local_privs=YES/NO 当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限。默认情况下此参数是关闭的(NO)。
4>启动vsftpd
systemctl start vsftpd
systemctl enable vsftpd
5>可以向匿名用户开放的权限参数以及作用
参数 作用 anonymous_enable=YES 允许匿名访问模式 anon_umask=022 匿名用户上传文件的umask值 anon_upload_enable=YES 允许匿名用户上传文件 anon_mkdir_write_enable=YES 允许匿名用户创建目录 anon_other_write_enable=YES 允许匿名用户修改目录名称或删除目录
配置匿名访问方式:
[root@ftp-server ~]# vim /etc/vsftpd/vsftpd.conf anonymous_enable=YES anon_umask=022 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_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 [root@ftp-server ~]# chmod o+x /var/ftp/pub/ -R [root@ftp-server ~]#ll -d /var/ftp/pub/ drwxr-xrwx. 2 root root 16 3月 14 19:44 /var/ftp/pub/ [root@ftp-server ~]# systemctl restart vsftpd