上文: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#查看新添加的规则是否成功。
- 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服务通过。
方法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 #查看新添加的规则是否成功。
以上两种方法使用哪一种都可以。
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 #查看新添加的规则是否成功。
- 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服务通过。
方法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 #查看新添加的规则是否成功。
以上两种方法使用哪一种都可以。
注:在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
服务器配置要求:
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
6、修改SELinux中 vsftp 的布尔变量
CentOS6系统
setsebool -P allow_ftpd_full_access on
RHEL7系统
setsebool -P ftpd_full_access on
7、验证配置结果
以上是我在学习Linux系统中整理的一些学习要点,肯定会有不对的地方,希望各位大侠给与指正,我们共同学习!谢谢!
下篇:Linux服务器配置-VSFTP服务配置(四)
通过实例说明如何配置本地用户登录FTP服务器。