Apache服务安全加固
一、账号设置
以专门的用户帐号和用户组运行 Apache 服务。
根据需要,为 Apache 服务创建用户及用户组。如果没有设置用户和组,则新建用户,并在 Apache 配置文件中进行指定。
创建 Apache 用户组。
groupadd apache创建 Apache 用户并加入 Apache 用户组。
useradd apache –g apache将下面两行设置参数加入 Apache 配置文件 httpd.conf 中:
User apacheGroup apache
检查 httpd.conf 配置文件中是否允许使用非专用账户(如 root 用户)运行 Apache 服务。
默认设置一般即符合要求。Linux 系统中默认使用 apache 或者 nobody 用户,Unix 系统默认使用 daemon 用户。
二、授权设置
严格控制 Apache 主目录的访问权限,非超级用户不能修改该目录中的内容。
Apache 的 主目录对应于 Apache Server配置文件 httpd.conf 中的 Server Root 控制项,应设置为:
Server Root /usr/local/apache
- 判定条件: 非超级用户不能修改该目录中的内容。
检测操作: 尝试进行修改,看是否能修改该目录中的内容。
该目录一般设置为 /etc/httpd 目录,默认情况下属主为 root 用户,其它用户不能修改该目录中的文件。默认设置一般即符合要求。
严格设置配置文件和日志文件的权限,防止未授权访问。
- 执行
chmod 600 /etc/httpd/conf/httpd.conf命令设置配置文件为属主可读写,其他用户无读写权限。 执行
chmod 644 /var/log/httpd/*.log命令设置日志文件为属主可读写,其他用户拥有只读权限。注意:
- /etc/httpd/conf/httpd.conf 配置文件的默认权限是644,可根据需要修改权限为600。
- /var/log/httpd/*.log 日志文件的默认权限为644,默认设置即符合要求。
- 执行
三、日志设置
Apache 设备应配置日志功能,对运行错误、用户访问等事件进行记录,记录内容包括时间,用户使用的 IP 地址等内容。
修改 httpd.conf 配置文件,设置日志记录文件、记录内容、记录格式。
错误日志:
LogLevel notice #日志的级别ErrorLog /…/logs/error_log #日志的保存位置(错误日志)
访问日志:
LogFormat %h %l %u %t \”%r\” %>s %b “%{Accept}i\”%{Referer}i\” \”%{User-Agent}i\””combinedCustomLog /…/logs/access_log combined (访问日志)
注意:
ErrorLog指令设置错误日志文件名和位置。错误日志是最重要的日志文件。Apache httpd 程序将在这个文件中存放诊断信息和处理请求中出现的错误。若要将错误日志传送到 Syslog,则执行ErrorLog syslog命令。CustomLog指令指定了保存日志文件的具体位置以及日志的格式。访问日志中会记录服务器所处理的所有请求。LogFormat命令用于设置日志格式,建议设置为 combined 格式。LogLevel命令用于调整记录在错误日志中的信息的详细程度,建议设置为 notice。日志的级别,默认是 warn 级别,notice 级别比较详细,但在实际中由于日志会占用大量硬盘空间。
四、禁止访问外部文件
禁止 Apache 访问 Web 目录之外的任何文件。
修改 httpd.conf 配置文件。
Order Deny,AllowDeny from all
设置可访问的目录。
Order Allow,DenyAllow from /web
说明: 其中 /web 为网站根目录。
默认配置如下,可根据您的业务需要进行设置。
Options FollowSymLinksAllowOverride None
五、禁止目录列出
目录列出会导致明显信息泄露或下载,建议禁止 Apache 列表显示文件。在 /etc/httpd/httpd.conf 配置文件中删除 Options 的 Indexes 设置即可。
修改 httpd.conf 配置文件:
#Options Indexes FollowSymLinks #删掉IndexesOptions FollowSymLinksAllowOverride NoneOrder allow,denyAllow from all
将
Options Indexes FollowSymLinks中的Indexes去掉,就可以禁止 Apache 显示该目录结构。Indexes的作用就是当该目录下没有 index.html 文件时,自动显示目录结构。重新启动 Apache 服务。
六、错误页面重定向
Apache 错误页面重定向功能可以防止敏感信息泄露。
修改 httpd.conf 配置文件:
ErrorDocument 400 /custom400.htmlErrorDocument 401 /custom401.htmlErrorDocument 403 /custom403.htmlErrorDocument 404 /custom404.htmlErrorDocument 405 /custom405.htmlErrorDocument 500 /custom500.html
注意: Customxxx.html 为要设置的错误页面。
重新启动 Apache 服务。
注意: 此项配置需要应用系统设有错误页面,或者不在 httpd 中设置,而完全由业务逻辑实现。
七、拒绝服务防范
根据业务需要,合理设置 session 时间,防止拒绝服务攻击。
修改 httpd.conf 配置文件:
Timeout 10 #客户端与服务器端建立连接前的时间间隔KeepAlive OnKeepAliveTimeout 15 #限制每个 session 的保持时间是 15 秒 注:此处为一建议值,具体的设定需要根据现实情况。
重新启动 Apache 服务。
注意: 默认值为Timeout 120,KeepAlive Off,KeepAliveTimeout 15,该项设置涉及性能调整。
八、隐藏 Apache 的版本号
隐藏 Apache 的版本号及其它敏感信息。
修改 httpd.conf 配置文件:
ServerSignature Off ServerTokens Prod
九、关闭 TRACE功能
关闭 TRACE 功能,防止 TRACE 方法被访问者恶意利用。
在 /etc/httpd/conf/httpd.conf 配置文件中添加以下设置参数:
TraceEnable Off
注意: 该参数适用于 Apache 2.0 以上版本。
十、禁用 CGI
如果服务器上不需要运行 CGI 程序,建议禁用 CGI。
如果没有CGI程序,可以修改 /etc/httpd/conf/httpd.conf 配置文件,把 cgi-bin 目录的配置和模块都进行注释。
#LoadModule cgi_module modules/mod_cgi.so#ScriptAlias /cgi-bin/ “/var/www/cgi-bin/”##AllowOverride None# Options None#Order allow,deny#Allow from all#
十一、绑定监听地址
服务器有多个 IP 地址时,只监听提供服务的 IP 地址。
执行以下命令查看是否绑定 IP 地址。
cat /etc/httpd/conf/httpd.conf|grep Listen
修改 /etc/httpd/conf/httpd.conf 配置文件。
Listen x.x.x.x:80
监听功能默认监听所有地址,如果服务器只有一个 IP 地址可不修改该项设置,如果有多个 IP 可根据需要进行设置。
十二、删除缺省安装的无用文件
删除缺省安装的无用文件。
删除缺省 HTML 文件:
# rm -rf /usr/local/apache2/htdocs/*
删除缺省的 CGI 脚本:
# rm –rf /usr/local/apache2/cgi-bin/*
删除 Apache 说明文件:
# rm –rf /usr/local/apache2/manual
删除源代码文件:
# rm -rf /path/to/httpd-2.2.4*
删除 CGI。
可根据实际情况删除,一般情况下 /var/www/html /var/www/cgi-bin 默认就是空的。
注意: 根据安装步骤不同和版本不同,某些目录或文件可能不存在或位置不同。
十三、禁用非法 HTTP 方法
禁用 PUT、DELETE 等危险的 HTTP 方法。
修改 httpd.conf 配置文件,只允许 get、post 方法。
<Location /><LimitExcept GET POST CONNECT OPTIONS>Order Allow,DenyDeny from all</LimitExcept></Location>
您可根据需要进行设置,如果需要用到 PUT 或 Delete 等 HTTP 方法的话,在 /etc/httpd/conf/httpd.conf 配置文件中相应添加即可。
Apache服务安全加固的更多相关文章
- Apache服务停止:信号灯超时时间已到,指定的网络名不再可用
环境说明:Apache2.4.10,Windows Server 2008 R2 问题说明: apache服务用于下载文件,但是在运行一段时间后,突然挂了. 其错误提示如下所示: [error] (7 ...
- Mac下配置Apache服务
这篇文章主要是针对Mac用户,第一次搭建本地开发环境的同学,已经搭建过的同学可以忽略. Mac自带的Apache还是XAMPP? That is a question. 其实自带的apache也够用了 ...
- ubuntu关于apache服务命令
一.Start Apache 2 Server /启动apache服务 # /etc/init.d/apache2 startor$ sudo /etc/init.d/apache2 start 二. ...
- WampServer Apache 服务无法启动解决办法
问题:WampServer 安装后mysql服务可以启动,但Apache服务启动不了(前提是已经安装Apache Server) 解决办法: 1.端口冲突,改Apache里httpd.conf中的端口 ...
- Android开发--Apache服务器安装,解决Apache服务无法启动的问题
昨天学习Android XML解析的时候,想在自己的电脑上搭建一个最简单的Web服务器来存放一段XML文本,然后在Android程序中解析,查找了一些资料后,看到Apache服务器比较容易上手,使用范 ...
- 第10章 使用Apache服务部署静态网站
章节简述: 本章节中通过对比目前热门的网站服务程序来说明Apache服务程序的优势,并新增主机空间选购技巧小节. 了解SELinux服务的3种工作模式,小心谨慎的使用semanage命令和setseb ...
- RHEL7-使用Apache服务部署静态网站
1. 安装Apache服务程序 1.1 在虚拟机中选中光盘镜像,并设置连接 1.2 将光盘设备挂载到/media/cdrom目录 [root@localhost ~]# mkdir -p /media ...
- 《Apache服务之php/perl/cgi语言的支持》RHEL6——服务的优先级
安装php软件包: 安装文本浏览器 安装apache的帮助文档: 测试下是否ok 启动Apache服务关闭火墙: 编辑一个php测试页测试下: perl语言包默认系统已经安装了,直接测试下: Apac ...
- 《Apache服务用户身份验证管理》RHEL6.3
1.安装apache软件包 Yum install httpd 2.启动apache服务 /etc/init.d/httpd restart 3.创建一个目录,内编辑一个index.html文件 4. ...
随机推荐
- ABP之事件总线(4)
在上一篇的随笔中,我们已经初步完成了EventBus,但是EventBus中还有诸多的问题存在,那么到底有什么问题呢,接下来我们需要看一看ABP中的源码是如何定义EventBus的. 1.第一个点 在 ...
- ERP项目实施记录06
自上月20以后,因厂里赶货,办公室人员有空也要去车间帮手,ERP的事就没动静了. 2014年1月10日开了个小组会议,认为第三方不是专业做本行业的,开发风险大:因此希望先开发一个报价软件试试. 明天第 ...
- java虚拟机学习
//20181129 ·Java虚拟机的内存分为三个部分:栈stack.堆heap.方法区method area----包含在“堆”里面,因为作用特殊所以单独列出来 ·栈的特点: 栈描述的是方 ...
- 1.7Oob 成员变量可以不初始化 但局部变量必须初始化
成员变量有默认的初始值 像int a; a默认为0:而局部变量没有初始值
- 【RMAN】RMAN-05001: auxiliary filename conflicts with the target database
oracle 11.2.0.4 运行以下脚本,使用活动数据库复制技术创建dataguard备库报错rman-005001: run{ duplicate target database for sta ...
- 多文件上传(.net)
找了很长时间,终于找到了: 前台: <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head ...
- day5_函数_判断小数
def check_float(s): ''' #这个函数的作用就是判断传入的字符串是否是合法的消失 :param s: 传入一个字符串 :return: True/False ''' s = str ...
- SQL server 2005数据库的还原与备份
一.SQL数据库的备份: 1.依次打开 开始菜单 → 程序 → Microsoft SQL Server 2005→SQL Server Management Studio ,这里我以UMVTEST命 ...
- 什么是BI
最近在人人网上看到一篇非常好的文章,转载分享给大家. 原文链接:http://blog.renren.com/share/252753054/5619469778/3其文谈对BI的理解,杜绝“假”“大 ...
- OC照片选择器MJPhotoBrowser
图片选择器,看cocoachina发现一个有趣的框架,很好用,分享一下,其实做出该功能我之前写过一篇博客,使用转场动画写的,就是图片的手势缩放没写,有兴趣可以看看 效果图: github地址:http ...