Linux服务器配置-VSFTP服务配置(三)

Linux服务器配置-VSFTP服务配置(三)

上文:Linux服务器配置-VSFTP服务配置(二)

一、vsftpd服务防火墙配置

1、主动(POST)模式 FTP 防火墙配置

  • CentOS6 系统 iptables 的配置

iptables -t filter --line-number -nL INPUT#显示现有防火墙规则,查看是否开启20、21号端口。

iptables -t filter -I INPUT -p tcp -m multiport --dport 20,21 -m state --state NEW -j ACCEPT #如没有开启端口,添加规则,开启20、21号端口。

service iptables save#保存防火墙设置。

service iptables restart #重启防火墙。

iptables -t filter --line-number -nL INPUT#查看新添加的规则是否成功。

Linux服务器配置-VSFTP服务配置(三)

  • RHEL7 系统 firewalld 的配置

方法1—通过添加FTP服务规则,开启防火墙通道。

firewall-cmd --list-services #查看防火墙是否允许FTP服务通过。

firewall-cmd --permanent --zone=public --add-service=ftp #如没有允许FTP服务通过,添加防火墙规则允许其通过。

firewall-cmd --reload #重新加载防火墙。

firewall-cmd --list-all #查看新添加的防火墙规则是否允许FTP服务通过。

Linux服务器配置-VSFTP服务配置(三)

方法2—通过添加端口规则,开启防火墙通道。

firewall-cmd --list-ports #查看防火墙是否开启20、21端口。

firewall-cmd --permanent --zone=public --add-port=20-21/tcp #如没有开启端口,添加规则,开启20、21号端口。

firewall-cmd --reload #重新加载防火墙

firewall-cmd --list-all #查看新添加的规则是否成功。

Linux服务器配置-VSFTP服务配置(三)

以上两种方法使用哪一种都可以。

2、被动(PASV)模式FTP防火墙配置

如果FTP开启被动(PASV)模式,就需要修改配置文件(vsftpd.conf),指定一个端口范围,然后根据这个端口范围来配置防火墙。

下面是配置文件指定的端口范围

pasv_enable=YES

pasv_min_port=59800

pasv_max_port=59900

  • CentOS6系统iptables的配置

iptables -t filter --line-number -nL INPUT#显示现有防火墙规则,查看是否开启21号端口。

iptables -t filter -I INPUT -p tcp -m tcp --dport 21 -m state --state NEW -j ACCEPT#如没有开启端口,添加规则,开启21号端口。

iptables -t filter -I INPUT -p tcp -m tcp --dport 59800:59900 -m state --state NEW -j ACCEPT#开启被动端口。

service iptables save#保存防火墙设置。

service iptables restart #重启防火墙。

iptables -t filter --line-number -nL INPUT #查看新添加的规则是否成功。

Linux服务器配置-VSFTP服务配置(三)

  • RHEL7系统firewalld的配置

方法1—通过添加FTP服务规则,开启防火墙通道。

firewall-cmd --list-services #查看防火墙是否允许FTP服务通过。

firewall-cmd --permanent --zone=public --add-service=ftp #如没有允许FTP服务通过,添加防火墙规则允许其通过。

firewall-cmd --permanent --zone=public --add-port=59800-59900/tcp #开启被动端口。

firewall-cmd --reload #重新加载防火墙。

firewall-cmd --list-all #查看新添加的防火墙规则是否允许FTP服务通过。

Linux服务器配置-VSFTP服务配置(三)

方法2—通过添加端口规则,开启防火墙通道。

firewall-cmd --list-ports #查看防火墙是否开启21端口。

firewall-cmd --permanent --zone=public --add-port=21/tcp #如没有开启端口,添加规则,开启21号端口。

firewall-cmd --permanent --zone=public --add-port=59800-59900/tcp #开启被动端口。

firewall-cmd --reload #重新加载防火墙。

firewall-cmd --list-all #查看新添加的规则是否成功。

Linux服务器配置-VSFTP服务配置(三)

以上两种方法使用哪一种都可以。

注:在Windows下用ftp命令连接,都是采用主动模式连接,可以采用图形界面的FTP工具软件,默认一般为被动模式。

二、SELinux中关于vsftpd服务的说明

1、vsftp 的 SELinux 的文件类型

SElinux 一共定义了两种文件类型用于设置 vsftp 服务器。

public_content_t

说明:vsftpd服务可以读取的文件和目录,其他服务如 Apache、Samba 和 NFS 也可以,但是 public_content_t 类型的文件不能被写入,即使 Linux 权限允许。

public_content_rw_t

说明:vsftpd服务可以读取和写入的文件和目录,其他服务其他服务如 Apache,Samba 和 NFS 也可以,不过必须开放相关的布尔变量。

2、vsftp 的布尔变量

下面是常用的布尔变量。

allow_ftpd_anon_write

说明:关闭这个布尔变量会阻止 vsftpd 读取 public_content_rw_t 类型的文件和目录。如果允许用户通过 FTP 上传文件。必须开放这个布尔变量。

allow_ftpd_full_access

说明:当开放这个布尔变量时只有 Linux(DAC)的权限来控制访问,通过验证的用户可以读取和写入标记为 public_content_t 或 public_content_rw_t 类型的文件。

allow_ftpd_use_cif

说明:当开放这个布尔变量时 vsftpd 允许 cifs_t 类型的文件和目录,因此这个布尔变量启用,可以让你的 FTP 服务器可以使用 Samba 文件系统。

allow_ftpd_use_nfs vsftpd

说明:当开放这个布尔变量时 vsftpd 允许 nfs_t 类型的文件和目录,因此这个布尔变量启用,可以让你的 FTP 服务器可以使用 NFS 文件系统。

ftp_home_dir

说明:当开放这个布尔变量时认证用户可以读写自己的主目录中的文件。

ftpd_connect_db

说明:当开放这个布尔变量时允许 vsftpd 连接数据库。

httpd_enable_ftp_server

说明:当开放这个布尔变量时容许的 httpd 作为 FTP 服务器,并且监听 FTP 端口。

tftp_anon_write

说明:当开放这个布尔变量时允许 TFTP 访问一个公共的目录。

注:关于SELinux 环境下的 FTP 配置将在实例中加以说明。

三、匿名认证登录FTP配置

匿名方式登录FTP服务器是一种最不安全的认证方式,因为任何人都可以无需密码访问FTP服务器中的数据。但在企业内部局域网中可以通过这种方式共享一些不重要的数据文件(比如软件的共享等)。

vsftpd服务程序安装完成并启动服务后,默认是开启匿名访问的,但只是提供查看和下载文件的权限,如果需要开放匿名用户的上传、创建、删除、更名文件的权限,就需要做一些相应的配置,针对匿名用户放开这些权限会带来潜在的危险,这里为了在Linux系统中练习配置vsftpd服务程序而放开了这些权限,不建议在生产环境中使用匿名登录方式。

1、配置软件环境说明

CentOS6系统:

CentOS release 6.10 (Final)

vsftpd-2.2.2-24.el6.x86_64

RHEL7系统

Red Hat Enterprise Linux Server release 7.6 (Maipo)

vsftpd-3.0.2-25.el7.x86_64

Linux服务器配置-VSFTP服务配置(三)

服务器配置要求:

FTP服务采用被动模式运行,并只允许匿名用户登录,匿名用户具有可下载、上传、新建目录(文件)、更名、及删除文件的权限。

2、备份原有配置文件

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

3、修改配置文件(/etc/vsftpd/vsftpd.conf)

说明:此配置文件将一般常用的设置项全部列出,需要用到的时候更改相应的设置即可。

listen_port=21

connect_from_port_20=NO

pasv_enable=YES

pasv_min_port=59800

pasv_max_port=59900

listen=YES

listen_ipv6=NO

max_clients=0

max_per_ip=0

one_process_model=NO

connect_timeout=60

accept_timeout=60

data_connection_timeout=300

idle_session_timeout=300

dirmessage_enable=YES

message_file=.message

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

write_enable=YES

download_enable=YES

tcp_wrappers=YES

userlist_enable=YES

userlist_deny=YES

userlist_file=/etc/vsftpd/user_list

xferlog_enable=YES

xferlog_file=/var/log/xferlog

xferlog_std_format=YES

use_localtime=YES

anonymous_enable=YES

anon_world_readable_only=YES

anon_other_write_enable=YES

anon_mkdir_write_enable=YES

anon_upload_enable=YES

chown_uploads=NO

chown_username=username

no_anon_password=NO

ftp_username=ftp

anon_root=/var/ftp

anon_max_rate=0

anon_umask=077

local_enable=NO

local_umask=022

file_open_mode=0666

local_root=/home/username

local_max_rate=0

user_config_dir=/etc/vsftpd/userconf

pam_service_name=vsftpd

guest_enable=NO

guest_username=ftp

virtual_use_local_privs=NO

user_config_dir=/etc/vsftpd/vuser_config

4、重启vsftp服务

  • CentOS6系统

service vsftpd restart

  • RHEL7系统

systemctl restart vsftpd

5、修改FTP上传目录的所有者

因为匿名用户,使用ftp用户身份来访问FTP服务器,所以需将FTP允许上传文件的目录的所有者更改为ftp。

匿名用户不能直接对FTP根目录进行写操作,只有在下级目录中才可以,所以这里设置可对pub目录进行写操作。

chown -Rf ftp /var/ftp/pub

Linux服务器配置-VSFTP服务配置(三)

6、修改SELinux中 vsftp 的布尔变量

CentOS6系统

setsebool -P allow_ftpd_full_access on

RHEL7系统

setsebool -P ftpd_full_access on

Linux服务器配置-VSFTP服务配置(三)

上图为CentOS6系统实例

7、验证配置结果

Linux服务器配置-VSFTP服务配置(三)

以上是我在学习Linux系统中整理的一些学习要点,肯定会有不对的地方,希望各位大侠给与指正,我们共同学习!谢谢!

下篇:Linux服务器配置-VSFTP服务配置(四)

通过实例说明如何配置本地用户登录FTP服务器。

加入我们

热门文章