安云网 - AnYun.ORG | 专注于网络信息收集、网络数据分享、网络安全研究、网络各种猎奇八卦。
当前位置: 安云网 > 技术关注 > WEB安全 > Apache安全和强化的十三个技巧

Apache安全和强化的十三个技巧

时间:2015-09-17来源:安云网 作者:网络点击:
Apache是一个很受欢迎的web服务器软件,其安全性对于网站的安全运营可谓生死攸关。下面介绍一些可帮助管理员在Linux上配置Apache确保其安全的方法和技巧。 本文假设你知道这些基本知识: 文档的根目录: /var/www/html or /var/www 主配

 Apache是一个很受欢迎的web服务器软件,其安全性对于网站的安全运营可谓生死攸关。下面介绍一些可帮助管理员在Linux上配置Apache确保其安全的方法和技巧。 //内容来自安云网

  本文假设你知道这些基本知识: //安云网咨询系统

  文档的根目录: /var/www/html or /var/www

//内容来自AnYun.ORG

  主配置文件: /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora等系统) 或/etc/apache/apache2.conf (Debian/Ubuntu). //本文来自安云网

  默认HTTP 端口: 80 TCP

//copyright AnYun.ORG

  默认 HTTPS 端口: 443 TCP

//内容来自安云网

  测试配置文件设置及语法: httpd -t //安云网,anyun.org

  对Web服务器的日志文件的访问: /var/log/httpd/access_log

//本文来自安云网

  Web服务器错误日志文件: /var/log/httpd/error_log //内容来自安云网

  1、避免在错误中显示Apache版本和操作系统的ID //ANYUN.ORG

  一般情况下,在用源代码安装或用yum等包安装程序安装Apache时,Apache服务器的版本号和服务器操作系统的名称都可以在错误消息中显示,而且还会显示安装在服务器上的Apache模块信息。 //安云网,anyun.org

  

//内容来自安云网

  在上图中,可以看出错误页面显示了Apache的版本以及服务器所安装的操作系统版本。这有可能成为Web服务器和Linux系统的一个重要威胁。为防止Apache把这些信息泄露出来,我们需要在Apache的主要配置文件中进行更改: //内容来自安云网

  用vim编辑器打开配置文件,查找“ServerSignature”,默认情况下它是打开状态。我们需要关闭服务器签名。ServerTokens Prod告诉Apache只在每一个请求网页的服务器响应的头部,仅返回Apache产品名称。

//本文来自安云网

  # vim /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora) //内容来自AnYun.ORG

  # vim /etc/apache/apache2.conf (Debian/Ubuntu) //copyright AnYun.ORG

  ServerSignature Off //安云网,anyun.org

  ServerTokens Prod

//内容来自AnYun.ORG

  # service httpd restart (RHEL/CentOS/Fedora)

//安云网,anyun.org

  # service apache2 restart (Debian/Ubuntu) //copyright AnYun.ORG

   //ANYUN.ORG

  2、禁用目录列表 //ANYUN.ORG

  默认情况下,在缺少index文件时,Apache会列示root目录的所有内容。如下图所示:

//copyright AnYun.ORG

  

//安云网,anyun.org

  对于某个特定目录,我们可以在配置文件中用“Options directive”关闭目录列示。可以在httpd.conf或apache2.conf文件中加入如下项目: //ANYUN.ORG

  Options -Indexes

//本文来自安云网

  其效果类似于下图:

//copyright AnYun.ORG

   //内容来自安云网

  3、经常更新Apache

//安云网,anyun.org

  Apache的开发社区一直在不断地改善安全问题,并经常发布带有新的安全特性的最新版本。所以我们建议你使用最新的Apache作为自己的web服务器。为检查Apache的版本,我们可以用httpd –v命令来检查最新的版本。 //copyright AnYun.ORG

  # httpd -v

//内容来自安云网

  Server version: Apache/2.2.15 (Unix) //内容来自安云网

  Server built: Aug 13 2013 17:29:28 //ANYUN.ORG

  可以用下面的命令更新Apache版本。

//内容来自AnYun.ORG

  # yum update httpd //ANYUN.ORG

  # apt-get install apache2

//内容来自AnYun.ORG

  如果你并不是在特定操作系统或内核上运行某个特别的软件,建议你保持内核和Linux操作系统为最新版本。 //本文来自安云网

  4、禁用不必要的模块 //内容来自AnYun.ORG

  为了尽量减少网站遭受Web攻击的机会,管理员最好禁用目前不用的所有模块。你可以使用下面的命令,列示Web服务器所有的已编译模块。

//本文来自安云网

  # grep LoadModule /etc/httpd/conf/httpd.conf //内容来自安云网

  # have to place corresponding `LoadModule' lines at this location so the

//安云网咨询系统

  # LoadModule foo_module modules/mod_foo.so //ANYUN.ORG

  LoadModule auth_basic_module modules/mod_auth_basic.so //本文来自安云网

  LoadModule auth_digest_module modules/mod_auth_digest.so

//安云网咨询系统

  LoadModule authn_file_module modules/mod_authn_file.so //安云网咨询系统

  LoadModule authn_alias_module modules/mod_authn_alias.so

//本文来自安云网

  LoadModule authn_anon_module modules/mod_authn_anon.so //copyright AnYun.ORG

  LoadModule authn_dbm_module modules/mod_authn_dbm.so

//ANYUN.ORG

  LoadModule authn_default_module modules/mod_authn_default.so //内容来自安云网

  LoadModule authz_host_module modules/mod_authz_host.so

//copyright AnYun.ORG

  LoadModule authz_user_module modules/mod_authz_user.so

//ANYUN.ORG

  LoadModule authz_owner_module modules/mod_authz_owner.so //本文来自安云网

  LoadModule authz_groupfile_module modules/mod_authz_groupfile.so

//安云网咨询系统

  LoadModule authz_dbm_module modules/mod_authz_dbm.so //安云网咨询系统

  LoadModule authz_default_module modules/mod_authz_default.so //内容来自AnYun.ORG

  LoadModule ldap_module modules/mod_ldap.so //ANYUN.ORG

  LoadModule authnz_ldap_module modules/mod_authnz_ldap.so

//本文来自安云网

  LoadModule include_module modules/mod_include.so

//安云网,anyun.org

  LoadModule log_config_module modules/mod_log_config.so //安云网咨询系统

  LoadModule logio_module modules/mod_logio.so

//内容来自安云网

  LoadModule env_module modules/mod_env.so

//安云网咨询系统

  LoadModule ext_filter_module modules/mod_ext_filter.so

//ANYUN.ORG

  …… //安云网咨询系统

  上述模块在默认情况下都是启用的,但往往并不需要,特别是mod_imap,mod_include, mod_info, mod_userdir, mod_autoindex。要禁用特定的模块,可以在该模块所在行的开头插入“#”注释,并重新启动服务。 //copyright AnYun.ORG

  5、用独立的用户和组运行Apache //内容来自AnYun.ORG

  在默认的安装方式中,运行Apache进程时的用户是“nobody”或daemon。为安全起见,我们建议用非特权账户运行Apache,例如,我们要使用http-web,就需要创建该Apache 用户和组:

//内容来自安云网

  # groupadd http-web

//内容来自AnYun.ORG

  # useradd -d /var/www/ -g http-web -s /bin/nologin http-web

//内容来自安云网

  现在你需要告诉Apache用这个新用户运行,为此,我们需要在/etc/httpd/conf/httpd.conf中加入一个新条目,并重新启动服务。 //copyright AnYun.ORG

  用vim编辑器打开/etc/httpd/conf/httpd.conf ,查找关键字“User” 和 “Group”,然后将后面的用户名和组名改为http-web:

//安云网咨询系统

  User http-web

//内容来自安云网

  Group http-web //安云网,anyun.org

  6、对用户的允许和禁止,限制对目录的访问 //copyright AnYun.ORG

  我们可以用httpd.conf文件中的“Allow” 和“Deny”限制对目录的访问。在本例中,我们要保证root目录的安全,在httpd.conf文件中进行如下的设置: //内容来自安云网

  Options None //安云网,anyun.org

  Order deny,allow //安云网,anyun.org

  Deny from all //copyright AnYun.ORG

  其中,Options “None”表示不允许用户启用任何可选特性。 //copyright AnYun.ORG

  Order deny, allow---在这里处理“Deny” 和 “Allow”指令,首先禁用,然后才是允许。

//copyright AnYun.ORG

  Deny from all,禁用所有人对root目录的请求,任何人都不能访问根(root)目录。

//copyright AnYun.ORG

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

//安云网咨询系统

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

//安云网,anyun.org

  $ sudo apt-get install libapache2-mod-security //本文来自安云网

  $ sudo a2enmod mod-security

//内容来自AnYun.ORG

  $ sudo /etc/init.d/apache2 force-reload

//安云网,anyun.org

  下面的命令可以在RHEL/CentOS/Fedora系统上安装mod_security: //安云网咨询系统

  # yum install mod_security

//安云网,anyun.org

  # /etc/init.d/httpd restart //本文来自安云网

  另一个模块mod_evasive的工作效率很高,它只采用一个请求就可以很好地工作,可以防止DDoS攻击造成巨大危害。mod_evasive可以应对http暴力破解攻击和DoS(或DDoS)攻击。该模块可以在三种情况下检测攻击:一是在每秒钟内有太多请求到达同一个页面时,二是在任何子进程试图发出超过50个并发请求时,三是在任何地址已经被临时列入黑名单时它仍试图尝试新的请求。

//ANYUN.ORG

  8、禁用Apache遵循符号链接 //内容来自安云网

  默认情况下,Apache遵循符号链接,我们可以用options指令的FollowSymLinks来关闭这个特性。为此,我们需要在主配置文件中加入一条: //内容来自AnYun.ORG

  Options –FollowSymLinks

//内容来自安云网

  如果有一个特定的用户或网站需要遵循符号连接,我们可以在那个网站的.htaccess文件中增加规则: //安云网咨询系统

  # Enable symbolic links

//内容来自AnYun.ORG

  Options +FollowSymLinks

//内容来自AnYun.ORG

  注意:为将规则重新写入到.htaccess文件中,在主配置文件中,应当全局防止“AllowOverride All” //安云网,anyun.org

  9、关闭服务器端包含和CGI执行 //安云网,anyun.org

  如果我们不需要,就可以关闭服务器端包含(mod_include)和CGI执行。为此,我们需要修改主配置文件:

//copyright AnYun.ORG

  Options -Includes //安云网,anyun.org

  Options –ExecCGI

//本文来自安云网

  我们还可以用Directior标记对特定目录执行这种操作。在本例中,我们关闭了/var/www/html/web1这个目录的Includes和Cgi文件执行: //copyright AnYun.ORG

  Options -Includes -ExecCGI //copyright AnYun.ORG

  下面列示的是其它一些可以用Options指令打开或关闭的值: //copyright AnYun.ORG

  Options All:立即启用所有选项。如果你不想在Apache配置文件或.htaccess中明确地指定任何值,那么它就是默认值。 //安云网咨询系统

  Options IncludesNOEXEC:该选项允许服务器端包含文件但不执行命令或CGI。 //内容来自AnYun.ORG

  Options MultiViews:允许内容协商多重视图(使用mod_negotiation)

//安云网,anyun.org

  Options SymLinksIfOwnerMatch:跟FollowSymLinks类似。但是要当符号连接和被连接的原始目录是同一所有者时才被允许。

//内容来自安云网

  10、限制请求的大小 //ANYUN.ORG

  Apache在默认情况下对HTTP请求的总大小是没有限制的。在你允许Web服务器可以接受大量请求时,你就有可能成为DoS攻击的受害者。我们可以用directiory标签来限制 LimitRequestBody指令的请求大小。 //本文来自安云网

  你可以用字节来设置这个值(从0到2147483647,0表示无限制)。你可以根据自己的需要限制这个值。假设你要限制user_uploads这个目录所包含的用户上传文件量,并且限制为500K,就应当:

//内容来自AnYun.ORG

  LimitRequestBody 512000

//ANYUN.ORG

  11、DDoS攻击的防御和强化

//安云网,anyun.org

  你不可能完全阻止企业网站免受DdoS攻击。下面这些命令便于你进行控制。

//内容来自AnYun.ORG

  TimeOut指令用于设置在特定事件失效之前,服务器等待事件完成的时间长度。其默认值是300秒。对于容易遭受DDoS攻击的网站,把这个值降低很有好处。这个值的大小取决于网站上的请求种类。注意,对于某些CGI脚本,这个设置可能会产生问题。 //ANYUN.ORG

  MaxClients:此指令允许用户设置服务器可同时服务的连接限制。每一个新连接都要根据这个限制进行排队。它适用于Prefork和Worker。其默认值为256。 //ANYUN.ORG

  KeepAliveTimeout:在关闭连接之前,服务器随后的等待时间长度。默认值是5秒。

//本文来自安云网

  LimitRequestFields:这个设置可以帮助我们限制可以接受的HTTP请求的头部字段数量。其默认值为100。 有时,由于http的请求头部过多而导致发生DDoS攻击,用户不妨降低这个值。

//ANYUN.ORG

  LimitRequestFieldSize:帮助我们设置HTTP请求头部的大小。

//安云网,anyun.org

  12、启用Apache日志功能

//内容来自安云网

  Apache允许你独立记录操作系统的日志。例如,在用户与Web服务器进行交互时所输入的命令信息就非常有用。

//copyright AnYun.ORG

  为此,你需要包含mod_log_config模块。Apache有三个主要的与日志相关的指令:

//安云网咨询系统

  TransferLog:创建日志文件

//内容来自AnYun.ORG

  LogFormat :设置定制格式 //本文来自安云网

  CustomLog :创建并格式化一个日志文件

//安云网,anyun.org

  我们还可以在虚拟主机部分设置这些命令。例如,下面的例子是启用了日志功能的一个网站的虚拟主机配置:

//ANYUN.ORG

  DocumentRoot /var/www/html/example.com/ //copyright AnYun.ORG

  ServerName www.example.com //安云网,anyun.org

  DirectoryIndex index.htm index.html index.php

//安云网,anyun.org

  ServerAlias example.com

//安云网咨询系统

  ErrorDocument 404 /story.php //内容来自AnYun.ORG

  ErrorLog /var/log/httpd/example.com_error_log //copyright AnYun.ORG

  CustomLog /var/log/httpd/example.com_access_log combined

//内容来自安云网

  13、用ssl证书保障Apache的安全 //本文来自安云网

  你还可以用SSL证书用加密的方式保障信息传输的安全。在电子商务网站中,消费者为了买东西,有时需要提供账户或信用卡的细节,默认情况下,Web服务器用明文发送这些信息。配置服务器使其借助于SSL证书就可以为用户进行加密传输。 //copyright AnYun.ORG

  企业可以从不同的SSL供应商购买SSL证书。小型企业一般并不愿意购买SSL证书,此时,你仍可以为网站分配一个自签名证书。Apache使用mod_ssl模块来支持SSL证书。 //内容来自安云网

  # openssl genrsa -des3 -out example.com.key 1024

//copyright AnYun.ORG

  # openssl req -new -key example.com.key -out exmaple.csr

//ANYUN.ORG

  # openssl x509 -req -days 365 -in example.com.com.csr -signkey example.com.com.key -out example.com.com.crt

//内容来自AnYun.ORG

  在创建并签署了证书后,你需要在Apache配置中增加这个证书。用vim编辑器打开主配置文件,并增加下面的内容,然后重启服务: //安云网,anyun.org

  SSLEngine on //ANYUN.ORG

  SSLCertificateFile /etc/pki/tls/certs/example.com.crt

//本文来自安云网

  SSLCertificateKeyFile /etc/pki/tls/certs/example.com.key //内容来自AnYun.ORG

  SSLCertificateChainFile /etc/pki/tls/certs/sf_bundle.crt

//本文来自安云网

  ServerAdmin [email protected] //本文来自安云网

  ServerName example.com

//安云网,anyun.org

  DocumentRoot /var/www/html/example/

//ANYUN.ORG

  ErrorLog /var/log/httpd/example.com-error_log //安云网,anyun.org

  CustomLog /var/log/httpd/example.com-access_log common

//ANYUN.ORG

  此时,打开浏览器,并输入https://example.com,就可以看到自签名的证书。

//安云网咨询系统

  

//内容来自AnYun.ORG

  1. Apache安全维护十一式:组建安全的web服务器 //本文来自安云网

  2. apache插件将合法网站变成恶意程序传播平台

    //内容来自安云网

  3. apache/apache tomcat目录遍历漏洞的防范

    //内容来自AnYun.ORG

  4. Apache Struts 2漏洞深度解读

    //安云网,anyun.org

  5. Apache解析漏洞详解

    //内容来自安云网


//本文来自安云网

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
相关内容
推荐内容