当时方位:主页 > 网页教程 > 网站发布 > web服务器 > 内容欢迎咱们投稿

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

时刻:2015-10-12 07:34来历:不知道 作者:大宝库 点击:读取中
阅览东西:字体:

  Apache是一个很受欢迎的web服务器软件,其安全性关于网站的安全运营可谓生死攸关。下面介绍一些可协助管理员在Linux上装备Apache确保其安全的办法和技巧。

  本文假定你知道这些基本知识:

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

  主装备文件: /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora等体系) 或/etc/apache/apache2.conf (Debian/Ubuntu).

  默许HTTP 端口: 80 TCP

  默许 HTTPS 端口: 443 TCP

  测验装备文件设置及语法: httpd -t

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

  Web服务器过错日志文件: /var/log/httpd/error_log

  1、避免在过错中显现Apache版别和操作体系的ID

  一般情况下,在用源代码装置或用yum等包装置程序装置Apache时,Apache服务器的版别号和服务器操作体系的称号都能够在过错音讯中显现,而且还会显现装置在服务器上的Apache模块信息。

  

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

  在上图中,能够看出过错页面显现了Apache的版别以及服务器所装置的操作体系版别。这有或许成为Web服务器和Linux体系的一个重要要挟。为避免Apache把这些信息走漏出来,咱们需求在Apache的首要装备文件中进行更改:

  用vim编辑器翻开装备文件,查找“ServerSignature”,默许情况下它是翻开状况。咱们需求封闭服务器签名。ServerTokens Prod告知Apache只在每一个恳求网页的服务器呼应的头部,仅回来Apache产品称号。

  # vim /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora)

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

  ServerSignature Off

  ServerTokens Prod

  # service httpd restart (RHEL/CentOS/Fedora)

  # service apache2 restart (Debian/Ubuntu)

  

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

  2、禁用目录列表

  默许情况下,在短少index文件时,Apache会列示root目录的一切内容。如下图所示:

  

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

  关于某个特定目录,咱们能够在装备文件顶用“Options directive”封闭目录列示。能够在httpd.conf或apache2.conf文件中参加如下项目:

  Options -Indexes

  其作用相似于下图:

  

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

  3、常常更新Apache

  Apache的开发社区一直在不断地改进安全问题,并常常发布带有新的安全特性的最新版别。所以咱们主张你运用最新的Apache作为自己的web服务器。为查看Apache的版别,咱们能够用httpd –v指令来查看最新的版别。

  # httpd -v

  Server version: Apache/2.2.15 (Unix)

  Server built: Aug 13 2013 17:29:28

  能够用下面的指令更新Apache版别。

  # yum update httpd

  # apt-get install apache2

  假如你并不是在特定操作体系或内核上运转某个特别的软件,主张你坚持内核和Linux操作体系为最新版别。

  4、禁用不必要的模块

  为了尽量削减网站遭受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

  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

  LoadModule authn_dbm_module modules/mod_authn_dbm.so

  LoadModule authn_default_module modules/mod_authn_default.so

  LoadModule authz_host_module modules/mod_authz_host.so

  LoadModule authz_user_module modules/mod_authz_user.so

  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

  LoadModule ldap_module modules/mod_ldap.so

  LoadModule authnz_ldap_module modules/mod_authnz_ldap.so

  LoadModule include_module modules/mod_include.so

  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

  ……

  上述模块在默许情况下都是启用的,但往往并不需求,特别是mod_imap,mod_include, mod_info, mod_userdir, mod_autoindex。要禁用特定的模块,能够在该模块所内行的最初刺进“#”注释,并从头启动服务。

  5、用独立的用户和组运转Apache

  在默许的装置方法中,运转Apache进程时的用户是“nobody”或daemon。为安全起见,咱们主张用非特权账户运转Apache,例如,咱们要运用http-web,就需求创立该Apache 用户和组:

  # groupadd http-web

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

  现在你需求告知Apache用这个新用户运转,为此,咱们需求在/etc/httpd/conf/httpd.conf中参加一个新条目,并从头启动服务。

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

  User http-web

  Group http-web

  6、对用户的答应和制止,约束对目录的拜访

  咱们能够用httpd.conf文件中的“Allow” 和“Deny”约束对目录的拜访。在本例中,咱们要确保root目录的安全,在httpd.conf文件中进行如下的设置:

  Options None

  Order deny,allow

  Deny from all

  其间,Options “None”表明不答应用户启用任何可选特性。

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

  Deny from all,禁用一切人对root目录的恳求,任何人都不能拜访根(root)目录。

  7、运用mod_security和mod_evasive来保证Apache的安全

  “mod_security”和“mod_evasive”是Apache在安全方面十分盛行的两个模块。mod_security作为防火墙而运转,它答应咱们适时地监督通讯,还能够有助于咱们维护网站或Web服务器免受暴力破解进犯。凭借默许的包装置程序,咱们能够轻松地把mod_security装置在服务器上。下例阐明如安在Ubuntu或Debian体系上装置mod_security:

  $ sudo apt-get install libapache2-mod-security

  $ sudo a2enmod mod-security

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

  下面的指令能够在RHEL/CentOS/Fedora体系上装置mod_security:

  另一个模块mod_evasive的作业效率很高,它只选用一个恳求就能够很好地作业,能够避免DDoS进犯形成巨大损害。mod_evasive能够应对http暴力破解进犯和DoS(或DDoS)进犯。该模块能够在三种情况下检测进犯:一是在每秒钟内有太多恳求抵达同一个页面时,二是在任何子进程企图宣布超越50个并发恳求时,三是在任何地址现已被暂时列入黑名单时它仍企图测验新的恳求。

  8、禁用Apache遵从符号链接

  默许情况下,Apache遵从符号链接,咱们能够用options指令的FollowSymLinks来封闭这个特性。为此,咱们需求在主装备文件中参加一条:

  Options –FollowSymLinks

  假如有一个特定的用户或网站需求遵从符号衔接,咱们能够在那个网站的.htaccess文件中添加规矩:

  # Enable symbolic links

  Options +FollowSymLinks

  留意:为将规矩从头写入到.htaccess文件中,在主装备文件中,应当大局避免“AllowOverride All”

  9、封闭服务器端包括和CGI履行

  假如咱们不需求,就能够封闭服务器端包括(mod_include)和CGI履行。为此,咱们需求修正主装备文件:

  Options -Includes

  Options –ExecCGI

  咱们还能够用Directior符号对特定目录履行这种操作。在本例中,咱们封闭了/var/www/html/web1这个目录的Includes和Cgi文件履行:

  Options -Includes -ExecCGI

  下面列示的是其它一些能够用Options指令翻开或封闭的值:

  Options All:当即启用一切选项。假如你不想在Apache装备文件或.htaccess中明确地指定任何值,那么它便是默许值。

  Options IncludesNOEXEC:该选项答应服务器端包括文件但不履行指令或CGI。

  Options MultiViews:答应内容洽谈多重视图(运用mod_negotiation)

  Options SymLinksIfOwnerMatch:跟FollowSymLinks相似。可是要当符号衔接和被衔接的原始目录是同一一切者时才被答应。

  10、约束恳求的巨细

  Apache在默许情况下对HTTP恳求的总巨细是没有约束的。在你答应Web服务器能够承受很多恳求时,你就有或许成为DoS进犯的受害者。咱们能够用directiory标签来约束 LimitRequestBody指令的恳求巨细。

  你能够用字节来设置这个值(从0到2147483647,0表明无约束)。你能够依据自己的需求约束这个值。假定你要约束user_uploads这个目录所包括的用户上传文件量,而且约束为500K,就应当:

  LimitRequestBody 512000

  11、DDoS进犯的防护和强化

  你不或许彻底阻挠企业网站免受DdoS进犯。下面这些指令便于你进行操控。

  TimeOut指令用于设置在特定事情失效之前,服务器等候事情完结的时刻长度。其默许值是300秒。关于简单遭受DDoS进犯的网站,把这个值下降很有优点。这个值的巨细取决于网站上的恳求品种。留意,关于某些CGI脚本,这个设置或许会发作问题。

  -MaxClients:此指令答应用户设置服务器可一起服务的衔接约束。每一个新衔接都要依据这个约束进行排队。它适用于Prefork和Worker。其默许值为256。

  -KeepAliveTimeout:在封闭衔接之前,服务器随后的等候时刻长度。默许值是5秒。

  -LimitRequestFields:这个设置能够协助咱们约束能够承受的HTTP恳求的头部字段数量。其默许值为100。 有时,因为http的恳求头部过多而导致发作DDoS进犯,用户无妨下降这个值。

  -LimitRequestFieldSize:协助咱们设置HTTP恳求头部的巨细。

  12、启用Apache日志功用

  Apache答应你独立记载操作体系的日志。例如,在用户与Web服务器进行交互时所输入的指令信息就十分有用。

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

  TransferLog:创立日志文件

  LogFormat :设置定制格局

  CustomLog :创立并格局化一个日志文件

  咱们还能够在虚拟主机部分设置这些指令。例如,下面的比如是启用了日志功用的一个网站的虚拟主机装备:

  DocumentRoot /var/www/html/example.com/

  ServerName www.example.com

  DirectoryIndex index.htm index.html index.php

  ServerAlias example.com

  ErrorDocument 404 /story.php

  ErrorLog /var/log/httpd/example.com_error_log

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

  13、用ssl证书保证Apache的安全

  你还能够用SSL证书用加密的方法保证信息传输的安全。在电子商务网站中,顾客为了买东西,有时需求供给账户或信用卡的细节,默许情况下,Web服务器用明文发送这些信息。装备服务器使其凭借于SSL证书就能够为用户进行加密传输。

  企业能够从不同的SSL供货商购买SSL证书。小型企业一般并不乐意购买SSL证书,此刻,你仍能够为网站分配一个自签名证书。Apache运用mod_ssl模块来支撑SSL证书。

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

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

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

  在创立并签署了证书后,你需求在Apache装备中添加这个证书。用vim编辑器翻开主装备文件,并添加下面的内容,然后重启服务:

  SSLEngine on

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

  SSLCertificateKeyFile /etc/pki/tls/certs/example.com.key

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

  ServerAdmin ravi.saive@example.com

  ServerName example.com

  DocumentRoot /var/www/html/example/

  ErrorLog /var/log/httpd/example.com-error_log

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

  此刻,翻开浏览器,并输入https://example.com,就能够看到自签名的证书。

(责任编辑:大宝库)


------分隔线----------------------------
m88 188bet uedbet 威廉希尔 明升 bwin 明升88 bodog bwin 明升m88.com 18luck 188bet unibet unibet Ladbrokes Ladbrokes casino m88明升 明升 明升 m88.com 188bet m88 明陞 uedbet赫塔菲官网 365bet官网 m88 help
188bet www.188bet.com bwin 平博 unibet 明升 188bet uk Ladbrokes 德赢vwin 188bet m88.com w88 平博88 uedbet体育 188bet 188bet 威廉希尔 明升体育app 平博88 M88 Games vwin德赢 uedbet官网 bodog fun88 188bet
引荐内容
赞助商链接
赞助商链接