RHCSA系列:安装,配置和保护Web和FTP服务器 - 第9部分

在本文中,我们将解释如何安装,配置和保护Web服务器和FTP服务器(aka vsftpd),以使用TLS建立安全连接。

Web服务器(也称为一个HTTP服务器)是处理切换到客户机的内容(最常用的网页,但其他类型的文档以及)网络中的服务。

一台FTP服务器是最古老和最常用的资源(即使这一天),以使文件提供给客户的情况下的网络中没有认证是必要的,因为FTP使用用户名密码没有加密的之一。

RHEL 7可用的Web服务器是Apache HTTP服务器的2.4版本。 作为FTP服务器,我们将使用非常安全的FTP守护程序(又名vsftpd的 )建立由TLS安全连接。

配置和保护Apache和FTP服务器

RHCSA:安装,配置和保护Apache和FTP - 第9部分

在本文中,我们将解释如何在RHEL 7中安装,配置和保护Web服务器和FTP服务器。

安装Apache和FTP服务器

在本指南中,我们将使用RHEL 7服务器的192.168.0.18/24一个静态IP地址。 要安装Apache和VSFTPD,请运行以下命令:

# yum update && yum install httpd vsftpd

安装完成后,这两个服务将最初被禁用,因此我们需要手动启动它们,并使他们能够自动开始自动下次启动:

# systemctl start httpd
# systemctl enable httpd
# systemctl start vsftpd
# systemctl enable vsftpd

此外,我们必须打开端口8021,其中Web和FTP守护进程分别聆听,以允许访问来自外部的这些服务:

# firewall-cmd --zone=public --add-port=80/tcp --permanent
# firewall-cmd --zone=public --add-service=ftp --permanent
# firewall-cmd --reload

要确认Web服务器正常工作,请激活浏览器并输入服务器的IP。 您应该看到测试页:

确认Apache Web服务器

确认Apache Web服务器

至于ftp服务器,我们将进一步配置它,我们将在一分钟内,在确认它的工作正常。

配置和保护Apache Web服务器

Apache的主配置文件位于/etc/httpd/conf/httpd.conf ,但它可能依靠现在里面的其他文件/etc/httpd/conf.d

虽然默认的配置应足以满足大多数情况下,这是一个好主意,熟悉的中描述的所有可用选项的官方文档

一如既往,在编辑主配置文件之前备份其副本:

# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)

然后使用首选的文本编辑器打开它,并查找以下变量:

  1. ServerRoot的 :所在服务器的配置,错误和日志文件保存的目录。
  2. :指示Apache监听特定的IP地址和/或端口。
  3. 包括 :允许其它配置文件,它必须存在的包容性。 否则,服务器将失败,而不是IncludeOptional指令,如果指定的配置文件不存在,该指令将被忽略。
  4. 用户和组 :用户/组的名称来运行httpd服务的。
  5. 的DocumentRoot:目录外面的Apache将成为您的文档。 默认情况下,所有请求都来自此目录,但符号链接和别名可用于指向其他位置。
  6. 服务器名称:这个指令设置服务器用于辨识自己的主机名(或IP地址)和端口。

第一安全措施将包括建立一个专门的用户和组(即howtoing / howtoing)运行Web服务器和更改默认端口到更高的(9000在这种情况下)的:

ServerRoot "/etc/httpd"
Listen 192.168.0.18:9000
User howtoing
Group howtoing
DocumentRoot "/var/www/html"
ServerName 192.168.0.18:9000

您可以使用测试配置文件。

# apachectl configtest

如果一切正常 ,然后重新启动Web服务器。

# systemctl restart httpd

并且不要忘记在防火墙中启用新端口(并禁用旧端口):

# firewall-cmd --zone=public --remove-port=80/tcp --permanent
# firewall-cmd --zone=public --add-port=9000/tcp --permanent
# firewall-cmd --reload

需要注意的是,由于SELinux策略,您只能使用返回的端口

# semanage port -l | grep -w '^http_port_t'

为Web服务器。

如果你想使用其他端口(如TCP端口8100),则必须将其添加到httpd服务SELinux的端口上下文:

# semanage port -a -t http_port_t -p tcp 8100
将Apache端口添加到SELinux策略

将Apache端口添加到SELinux策略

要进一步确保您的Apache安装,请按照下列步骤操作:

1. Apache是运行作为用户不应该有访问shell:

# usermod -s /sbin/nologin howtoing

2.禁用目录,以防止浏览器显示目录的内容,如果有出现在该目录中没有列出的index.html。

编辑/etc/httpd/conf/httpd.conf (和虚拟主机配置文件,如果有的话),并确保在Options指令,无论是在顶部和目录块级别,设置为

Options None

3.关于Web服务器和操作系统在HTTP响应中隐藏的信息。 编辑/etc/httpd/conf/httpd.conf如下:

ServerTokens Prod 
ServerSignature Off

现在,你就可以开始从您的/ var / www / html等目录服务的内容。

配置和保护FTP服务器

作为Apache的情况下,为的Vsftpd主配置文件(/etc/vsftpd/vsftpd.conf)有很好的注释,虽然默认配置应该能满足大部分的应用程序,你应该成为熟悉的文档和手册页(man vsftpd.conf)为了更有效地运行FTP服务器(我不能强调的是足够的!)。

在我们的例子中,这些是使用的指令:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

通过使用chroot_local_user=YES ,本地用户将(默认)放在一个chroot的监狱在他们的家目录登录之后。 这意味着本地用户将无法访问其相应主目录之外的任何文件。

最后,允许FTP在用户的主目录中读取文件,设置以下中的SELinux:

# setsebool -P ftp_home_dir on

现在,您可以使用客户端,如Filezilla的连接到FTP服务器:

检查FTP连接

检查FTP连接

请注意, /var/log/xferlog日志记录的下载和上传,这与上面的目录列表同意:

监控FTP下载和上传

监控FTP下载和上传

另请阅读限制ftp的网络带宽在一个Linux系统,带有涓流应用程序使用

概要

在本教程中,我们已经解释了如何设置web和ftp服务器。 由于主题的广泛性,不可能覆盖这些主题的所有方面(即虚拟web主机)。 因此,我建议你也检查本网站对其他优秀文章的Apache