RHCSA 系列(九): 安装、配置及加固一个 Web 和 FTP 服务器

Web 服务器(也被称为 HTTP 服务器)是在网络中将内容(最为常见的是网页,但也支持其他类型的文件)进行处理并传递给客户端的服务。

FTP 服务器是最为古老且最常使用的资源之一(即便到今天也是这样),在身份认证不是必须的情况下,它可通过客户端在一个网络访问文件,因为 FTP 使用没有加密的用户名和密码,所以有些情况下不需要验证也行。

在 RHEL 7 中可用的 web 服务器是版本号为 2.4 的 Apache HTTP 服务器。至于 FTP 服务器,我们将使用 Very Secure Ftp Daemon (又名 vsftpd) 来建立用 TLS 加固的连接。

RHCSA: 安装,配置及加固 Apache 和 FTP 服务器 – Part 9

在这篇文章中,我们将解释如何在 RHEL 7 中安装、配置和加固 web 和 FTP 服务器。

安装 Apache 和 FTP 服务器

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


  1. # yum update && yum install httpd vsftpd

当安装完成后,这两个服务在开始时是默认被禁用的,所以我们需要暂时手动开启它们并让它们在下一次启动时自动地开启它们:


  1. # systemctl start httpd
  2. # systemctl enable httpd
  3. # systemctl start vsftpd
  4. # systemctl enable vsftpd

另外,我们必须打开 80 和 21 端口,它们分别是 web 和 ftp 守护进程监听的端口,为的是允许从外面访问这些服务:


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

为了确认 web 服务工作正常,打开你的浏览器并输入服务器的 IP,则你应该可以看到如下的测试页面:

确认 Apache Web 服务器

对于 ftp 服务器,在确保它如期望中的那样工作之前,我们必须进一步地配置它,我们将在几分钟后来做这件事。

配置并加固 Apache Web 服务器

Apache 的主要配置文件位于 /etc/httpd/conf/httpd.conf 中,但它可能依赖 /etc/httpd/conf.d 中的其他文件。

尽管默认的配置对于大多数的情形都够用了,但熟悉在 官方文档 中介绍的所有可用选项是一个不错的主意。

同往常一样,在编辑主配置文件前先做一个备份:


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

然后用你钟爱的文本编辑器打开它,并查找下面这些变量:

  • ServerRoot: 服务器的配置,错误和日志文件保存的目录。
  • Listen: 通知 Apache 去监听特定的 IP 地址或端口。
  • Include: 允许包含其他配置文件,要包含的文件必须存在,否则,服务器将会失败。它恰好与 IncludeOptional 相反,假如特定的配置文件不存在,它将静默地忽略掉它们。
  • User 和 Group: 运行 httpd 服务的用户/组的名称。
  • DocumentRoot: Apache 为你的文档所服务的目录。默认情况下,所有的请求将在这个目录中被获取,但符号链接和别名可能会被用于指向其他位置。
  • ServerName: 这个指令将设定用于识别它自身的主机名(或 IP 地址)和端口。

安全措施的第一步将包含创建一个特定的用户和组(如 tecmint/tecmint)来运行 web 服务器,以及更改默认的端口为一个更高的端口(在这个例子中为 9000) (LCTT 译注:如果你的 Web 服务器对外公开提供服务,则不建议修改为非默认端口。):


  1. ServerRoot "/etc/httpd"
  2. Listen 192.168.0.18:9000
  3. User tecmint
  4. Group tecmint
  5. DocumentRoot "/var/www/html"
  6. ServerName 192.168.0.18:9000

你可以使用下面的命令来测试配置文件:


  1. # apachectl configtest

假如一切 OK,接着重启 web 服务器。


  1. # systemctl restart httpd

并别忘了在防火墙中开启新的端口(并禁用旧的端口):


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

请注意,由于 SELinux 策略,你只能给给 web 服务器使用如下命令所返回的端口。


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

假如你想让 httpd 服务使用另一个端口(如 TCP 端口 8100),你必须将它加到 SELinux 的端口上下文:


  1. # semanage port -a -t http_port_t -p tcp 8100

添加 Apache 端口到 SELinux 策略

为了进一步加固你安装的 Apache,请遵循以下步骤:

  1. 运行 Apache 的用户不应该拥有访问 shell 的能力:

    
    
    1. # usermod -s /sbin/nologin tecmint
  2. 禁用目录列表功能,这是为了阻止浏览器展示一个未包含 index.html 文件的目录里的内容。

    编辑 /etc/httpd/conf/httpd.conf (以及虚拟主机的配置文件,假如有的话),并确保出现在顶层的和Directory 块中的 Options 指令都被设置为 None:

    
    
    1. Options None
  3. 在 HTTP 响应中隐藏有关 web 服务器和操作系统的信息。像下面这样编辑文件/etc/httpd/conf/httpd.conf
    
    
    1. ServerTokens Prod
    2. ServerSignature Off

现在,你已经做好了从 /var/www/html 目录开始服务内容的准备了。

配置并加固 FTP 服务器

和 Apache 的情形类似, Vsftpd 的主配置文件 /etc/vsftpd/vsftpd.conf 带有详细的注释,且虽然对于大多数的应用实例,默认的配置应该足够了,但为了更有效率地操作 ftp 服务器,你应该开始熟悉相关的文档和 man 页 man vsftpd.conf(对于这点,再多的强调也不为过!)。

在我们的示例中,使用了这些指令:


  1. anonymous_enable=NO
  2. local_enable=YES
  3. write_enable=YES
  4. local_umask=022
  5. dirmessage_enable=YES
  6. xferlog_enable=YES
  7. connect_from_port_20=YES
  8. xferlog_std_format=YES
  9. chroot_local_user=YES
  10. allow_writeable_chroot=YES
  11. listen=NO
  12. listen_ipv6=YES
  13. pam_service_name=vsftpd
  14. userlist_enable=YES
  15. tcp_wrappers=YES

通过使用 chroot_local_user=YES,(默认情况下)本地用户在登录之后,将被限制在以用户的家目录为 chroot 监狱的环境中。这意味着本地用户将不能访问除其家目录之外的任何文件。

最后,为了让 ftp 能够在用户的家目录中读取文件,设置如下的 SELinux 布尔值:


  1. # setsebool -P ftp_home_dir on

现在,你可以使用一个客户端例如 Filezilla 来连接一个 ftp 服务器:

查看 FTP 连接

注意, /var/log/xferlog 日志将会记录下载和上传的情况,这与上图的目录列表一致:

监视 FTP 的下载和上传情况

另外请参考: 在 Linux 系统中使用 Trickle 来限制应用使用的 FTP 网络带宽

总结

在本教程中,我们解释了如何设置 web 和 ftp 服务器。由于这个主题的广泛性,涵盖这些话题的所有方面是不可能的(如虚拟主机)。因此,我推荐你也阅读这个网站中有关 Apache 的其他卓越的文章。

本文来自合作伙伴“Linux中国”,原文发布日期:2015-09-24

时间: 2024-11-03 06:57:18

RHCSA 系列(九): 安装、配置及加固一个 Web 和 FTP 服务器的相关文章

图解Web和FTP服务器安全管理配置

中介交易 SEO诊断 淘宝客 云主机 技术大厅 Web和FTP服务器创建好之后,还需要进行适当的管理才能使用户的信息安全有效的被其他访问者访问.Web和FTP 服务器的管理基本相同,包括一些常规管理和安全管理,下面对其中的七个主要方面进行介绍. 一.启用过期内容 启用过期内容就是指通过设置来保证自己的站点的过期信息不被发布出去.当用户的Web和FTP站点上的信息有很强的时效性时,进行过期内容设置是非常必要的,这不但有利于净化用户的Web和FTP站点,而且有利于访问者进行信息查找.在启用过期内容时

安装配置MRTG-2.15.1的方法_服务器

本文中使用的系统为RH9.0,本机IP地址为192.168.1.6  一.MRTG需要以SNMP服务为基础,所以请确保你的系统已经启用了此服务  1.请确保你的系统安装了以下软件包  net-snmp-5.0.6-17  net-snmp-devel-5.0.6-17  net-snmp-utils-5.0.6-17  2.修改/etc/snmp/snmpd.conf  去掉如下一行的注释  view mib2    included   .iso.org.dod.internet.mgmt.m

2009年最新版 win2003 IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置教程第1/8页_win服务器

操作系统:Windows.Server.2003.R2,Enterprise.Edition,SP2,x86,CHS,VOL,MSDN本次配置PHP的服务器环境:Windows2003+ IIS6+PHP5+MySQL3+Zend+phpMyAdmin整个配置过程需要是使用拥有管理员权限的系统帐号登录Windows在整个配置过程中所示的截图可能根据各使用的系统不同,窗口界面而有所不同,但对应的选项卡栏目是相同的,只需要找到提到的对应选项卡即可. 一.下载相关软件 安装前需要准备的软件(因为我这里

在 Ubuntu 上使用 SSL/TLS 搭建一个安全的 FTP 服务器

在遵循本指南中的各个步骤之后,我们将了解在 FTP 服务器中启用加密服务的基本原理,以确保安全的数据传输至关重要. 要求 你必须已经在 Ubuntu 上安装和配置好一个 FTP 服务器 在我们进行下一步之前,确保本文中的所有命令都将以root身份或者 sudo 特权账号运行. 第一步:在 Ubuntu 上为 FTP 生成 SSL/TLS 证书 1.我们将首先在 /etc/ssl/ 下创建一个子目录来存储 SSL/TLS 证书和密钥文件,如果它不存在的话这样做: $ sudo mkdir /etc

RHCSA 系列(一): 回顾基础命令及系统文档

RHCSA (红帽认证系统工程师) 是由 RedHat 公司举行的认证考试,这家公司给商业公司提供开源操作系统和软件,除此之外,还为这些企业和机构提供支持.训练以及咨询服务等. RHCSA 考试准备指南 RHCSA 考试(考试编号 EX200)通过后可以获取由 RedHat 公司颁发的证书. RHCSA 考试是 RHCT(红帽认证技师)的升级版,而且 RHCSA 必须在新的 Red Hat Enterprise Linux(红帽企业版)下完成.RHCT 和 RHCSA 的主要变化就是 RHCT

CentOs 安装配置 Apache

概述 如果想在自己的服务器上挂自己的个人网站,如果是静态的页面的话,可能就会配置一个Web静态页面服务器.静态页面服务器有很多,用的比较多的就是 Apache,最快的就要属 Nginx.在这里给大家介绍一下 在CentOS 7 下面怎么配置启动 Apache 2.4 安装 Apache 2.4 在CentOS 7上面安装 Apache 2.4 推荐使用 yum 安装. 既方便有快捷,使用如下命令:yum -y install httpd 启动 Apache 2.4 下面总结了一些启动 Apach

SQL Server 2016 CTP2.2安装配置方法图文教程_MsSql

SQL Server 2016 CTP2.2 安装配置教程 下载一个iso文件,解压出来(大约2.8G左右),在该路径下双击Setup.exe即可开始安装. 安装之前请先安装.NET 3.5 SP1,在服务器管理器->添加角色和功能里就能安装 打开安装界面 安装界面一如既往的熟悉,这个安装界面从SQL Server2008开始就没有太大变化 因为是评估版,那么就不需要产品密钥,直接安装 勾选接受许可条款 验证是否符合规则 不要勾选检查更新 选择SQL Server功能安装 高大上的功能来了,可以

SQL Server 2016 CTP2.2安装配置方法图文教程

SQL Server 2016 CTP2.2 安装配置教程 下载一个iso文件,解压出来(大约2.8G左右),在该路径下双击Setup.exe即可开始安装. 安装之前请先安装.NET 3.5 SP1,在服务器管理器->添加角色和功能里就能安装 打开安装界面 安装界面一如既往的熟悉,这个安装界面从SQL Server2008开始就没有太大变化 因为是评估版,那么就不需要产品密钥,直接安装 勾选接受许可条款 验证是否符合规则 不要勾选检查更新 选择SQL Server功能安装 高大上的功能来了,可以

xml-怎样搭建一个web项目那些框架怎么配置

问题描述 怎样搭建一个web项目那些框架怎么配置 怎样搭建一个web项目那些框架怎么配置,xml怎么配置,怎么知道那个框架怎么写配置,求大神详细解答 解决方案 你可以使用三大框架,一般网上都有这样的范例的. 解决方案二: 需要看你用什么框架,现在框架太多了,不过不同的框架都有一些帮助文档告诉你如何配置 解决方案三: 要看你用什么框架了,给你一个SSH框架的搭建步骤吧http://blog.csdn.net/yeohcooller/article/details/9316923