Apache 服务器的安全设置

Apache 简单介绍

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

1、主要特点:

  • 开放源代码、跨平台应用
  • 支持多种网页编程语言
  • 模块化设计 、运行稳定、良好的安全性

2、主要目录和文件:

  • 服务目录:/etc/httpd/
  • 主配置文件:/etc/httpd/conf/httpd.conf
  • 网页目录:/var/www/html/
  • 服务脚本:/etc/init.d/httpd
  • 执行程序:/usr/sbin/httpd
  • 记录apache的所有的日志:/etc/httpd/log
  • 访问日志:/var/log/httpd/access_log
  • 错误日志:/var/log/httpd/error_log

3、常用的全局配置参数:

  • ServerRoot:服务目录
  • ServerAdmin:管理员邮箱
  • User:运行服务的用户身份
  • Group:运行服务的组身份
  • ServerName:网站服务器的域名
  • DocumentRoot:网页文档的根目录
  • Listen:监听的IP地址、端口号
  • PidFile:保存httpd进程PID号的文件
  • DirectoryIndex:默认的索引页文件
  • ErrorLog:错误日志文件的位置
  • CustomLog:访问日志文件的位置
  • LogLevel:记录日志的级别,默认为warn
  • Timeout:网络连接超时,默认为300秒
  • KeepAlive:是否保持连接,可选On或Off
  • MaxKeepAliveRequests:每次连接最多请求文件数
  • KeepAliveTimeout:保持连接状态时的超时时间
  • Include:需要包含进来的其他配置文件

Apache 的安全设置与加固

1、账号设置

Apache是由Root 来安装和运行的。如果Apache Server进程具有Root用户特权,那么它将给系统的安全构成很大的威胁.

以专门的用户帐号和组运行Apache,根据需要为Apache 创建用户,组。
(1) 创建 apache组:groupadd apache
(2) 创建apache用户并加入 apache组:useradd apache-g apache
(3) 将下面两行加入Apache配置文件httpd.conf中
1.User apache
2.Group apache

2、授权设置

严格控制Apache主目录的访问权限,非超级用户不能修改该目录中的内容。

Apache的主目录对应于 Apache Server配文件 httpd.conf的Server Root控制项中应为:
“Server Root/usr/local/apache”
一般为/etc/httpd目录,默认情况下属主为root:root,其它用户不能修改文件,默认一般符合要求,严格设置配置文件和日志文件的权限,防止未授权访问。
1、使用命令"chmod 600/etc/httpd/conf/httpd.conf"设置配置文件为属主可读写,其他用户无权限。
2、使用命令"chmod 644/var/log/httpd/.log设置日志文件为属主可读写,其他用户只读权限。
/etc/httpd/conf/httpd.conf默认权限是644,可根据需要修改权限为600
/var/log/httpd/
.log默认权限为644,默认一般符合要求。

3、日志设置

设备应配置日志功能,对运行错误、用户访问等进行记录,记录内容包括时间,用户使用的IP 地址等内容。

编辑 httpd.conf 配置文件,设置日志记录文件, 记录内容、记录格式。 其中,错误日志:
LogLevel notice#日志的级别
ErrorLog #错误日志
访问日志:
LogFormat "%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i”
conbined
CustonLog //logs/access_log conbined(访问日志)
ErrorLog 指令设置错误日志文件名和位置。错误日志是最重要的 日志文件,Apache httpd 将在这个文件中存放诊断信息和处理请 求中出的错误。若要将错误日志送到 Syslog,则设:ErrorLog syslog.。
CustomLog指令指定了保存日志文件的具体位管以及日志的格式。访问日志中会记录服务器所处理的所有请求。
LogFormat 设置日志格式,建议设置为 combined格式
LogLevel 用于调整记录在诺误日志中的信息的详细程度,建议设置为notice。
日志的级别,默认是warn,notice级别比较详细,在实际中由于日志会占用大量硬盘空间,一般没有设置。

4、隐藏Apache 版本信息

默认的服务器HTTP响应头会包含apache 版本号。详细的版本号容易遭到黑客的攻击。

修改httpd.conf 文件的内容:
ServerSignature Off
ServerTokens Prod
新版本的apache2相关的配置文件为 security.conf

5、修改Apache默认首页

访问Apache服务器时,默认是直接访问htdocs目录下的index.html,根据实际情况修改默认文件

修改httpd.conf配置文件:
DirectoryIndex index.php index.html

6、禁止目录浏览

目录浏览会导致信息泄露或者文件下载,因此可以根据实际情况进行安全配置。

修改httpd.conf配置文件:
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
将Options Indexes FollowSymLinks 中的Indexes 去掉,就可以禁止 Apache显示该目录结构。Indexes 的作用就是当该目录下没有index.html文件时,就显示目录结构。

7、限制目录执行权限

禁止 网站uploads 文件夹下的php ,asp 脚本的运行

修改httpd.conf配置文件:
在这里插入图片描述

8、禁止访问外部文件

禁止apache 访问 web 目录之外的任何文件

修改httpd.conf 配置文件:
Order Deny,Allow
Deny from all
设置可访问目录:
Order Allow,Deny
Allow from all
其中/web 为网站根目录
默认配置如下:
Options FollowSymLinks
AllowOverride None

9、删除缺省安装的无用文件

删除默认的HTML文件: # apache网页根目录htdocs下的html文件
删除默认的icons文件: # apache安装目录下的icons文件夹及里面的文件
删除默认的的CGI脚本: # apache安装目录下的cgi-bin文件夹及里面的文件
删除Apache说明文件: # apache安装目录下的manual文件夹及里面的文件以及安装目录下的其他介绍性文件

10、自定义错误页面

设置Apache 错误页面重定向功能防止敏感信息的泄露。

修改httpd.conf 配置文件:
ErrorDocument 400 /custom400.html
ErrorDocument 401 /custom401.html
ErrorDocument 403 /custom403.html
ErrorDocument 404 /custom404.html
ErrorDocument 405 /custom405.html
ErrorDocument 500 /custom500.html
其中Customxxx.html 为要设置的错误页面。

11、更改默认端口

根据实际需要,可更改默认端口,减少攻击

修改httpd.conf 配置文件:
更改默认端口为8980
Listen x.x.x.x 8980
重启 apache 服务
###11、 关闭 TRACE 功能
关闭TRACE 功能,防止TRACE 方法被访问者恶意利用
修改httpd.conf 配置文件:
TraceEnable Off
注:适用于Apache 2.0 以上版本

12、禁用 CGI

如果服务器不需要运行CGI 程序,建议禁用CGI。

修改httpd.conf 配置文件,把cgi-bin 目录的配置和模块都注释掉。

13、限制IP访问

修改httpd.conf 配置文件:
Options FollowSymLinks
AllowOverride None
Order Deny,Allow
Deny from all
Allow from 192.168.1.0/24
只允许从192.168.1.0/24 IP段内的用户访问,一般在限制后台访问时用到。

14、限制请求消息长度

修改httpd.conf 配置文件:
LimitRequestBody 102400
重启apache生效
上传文件的大小也会受到此参数限制。

15、CC攻击 的防御

根据实际需要,合理设置session 时间,防止拒绝服务攻击

修改httpd.conf 配置文件:
Timeout 10 #客户端和服务的建立连接的时间间隔
KeepAlive On
KeepAliveTimeout 15 #限制每个 sesseion 的保持时间是15秒
AcceptFilter http data
AcceptFilter https data
重新启动 Apache 服务生效

16、DDos攻击 的防御

在现实中,不可能完全阻止网站免受DdoS的攻击。 因此可以通过一些安全配置进行防御和强化。

  • TimeOut:指令用于设置在特定事件失效之前,服务器等待事件完成的时间长度。其默认值是300秒。对于容易遭受DDoS攻击的网站,把这个值降低很有好处。这个值的大小取决于网站上的请求种类。注意,对于某些CGI脚本,这个设置可能会产生问题。
  • MaxClients:此指令允许用户设置服务器可同时服务的连接限制。每一个新连接都要根据这个限制进行排队。它适用丁Prefork和Worker.其默认值为256.
  • KeepAliveTimeout:在关闭连接之前,服务器随后的等待时间长度,默认值부5秒。
  • LimitRequestFields:这个设置可以帮助我们限制可以接受的HTTP请求的头部字段数量。从默认值为100。有时,由于http的请求头部过多而导致发生DDoS攻击,用户不妨降低这个值。
  • LimitRequestFieldSize:帮助我们设置HTTP请求头部的大小。

修改httpd.conf 配置文件:
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000

17、禁用非法HTTP 方法

根据实际情况,如果没有用到put delete 等危险http方法,可配置文件来禁用它。

修改httpd.conf 配置文件:
在这里插入图片描述

18、使用mod_security和mod_evasive 来保障Apache的安全

"mod_security"和"mod_evasive"是Apache在安全方面非常流行的两个模块。mod_security作为防火墙而运行,它允许我们适时地监视通信,还可以有助于我们保护网站或Web服务器免受暴力破解攻击。借助默认的包安装程序,我们可以轻松地把mod_security安装在服务器上。

#yum inatall mod_security
#/etc/init.d/httpd restart

另一个模块mod_evasive的工作效率很高,它只采用一个请求就可以很好地工作,可以防止DDoS攻击造成巨大危害。mod_evasive可以应对http暴力破解攻击和DoS(或DDoS)攻击。 该模块可以在三种情况下检测攻击:

一 是在每秒钟内有太多请求到达同一个页面时
二 是在任何子进程试图发出超过50个并发请求时
三 是在任何地址已经被临时列入黑名单时它仍试图尝试新的请求

19、使用ssl 证书保障apache 的安全

使用SSL证书用加密的方式保障信息传输的安全

在这里插入图片描述在创建并签署了证书后,你需要在apache 配置钟添加这个证书。用vim 编辑器打开主配置文件,并增加下面的内容,然后重启服务:
在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值