|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!假如你是一个体系***,你应当依照以下的10点倡议来包管Apacheweb办事器的宁静。
1、禁用不用要的模块
假如你盘算源码编译装置apache,你应当禁用以下的模块。假如你运转./configure-help,你将会看到一切可用的你能够禁用/开启的模块。
- userdirC用户特定用户的哀求映照。比方:带用户名的URL会转化成办事器的一个目次。
- autoindexC当没有默许首页(如index.html)时显现目次列表。
- statusC显现办事器统计
- envC扫除或修正情况变量
- setenvifC依据客户端哀求头字段设置情况变量
- cgiCCGI剧本
- actionsC依据特定的媒体范例或哀求***,激活特定的CGI剧本
- negotiationC供应内容协商撑持
- aliasC供应从文件体系的分歧局部到文档树的映照和URL重定向
- includeC完成办事端包括文档(SSI)处置
- filterC依据高低文实践情形对输入过滤器举行静态设置
- versionC供应基于版本的设置段撑持
- asisC发送本人包括HTTP头内容的文件
当你实行./configure依照上面禁用以上的一切模块。
[size=1em][size=1em]1
[size=1em]2
[size=1em]3
[size=1em]4
[size=1em]5
[size=1em]6
[size=1em]7
[size=1em]8
[size=1em]9
[size=1em]10
[size=1em]11
[size=1em]12
[size=1em]13
[size=1em]14
[size=1em]15
[size=1em]16
[size=1em][size=1em]./configure
[size=1em]--enable-ssl
[size=1em]--enable-so
[size=1em]--disable-userdir
[size=1em]--disable-autoindex
[size=1em]--disable-status
[size=1em]--disable-env
[size=1em]--disable-setenvif
[size=1em]--disable-cgi
[size=1em]--disable-actions
[size=1em]--disable-negotiation
[size=1em]--disable-alias
[size=1em]--disable-include
[size=1em]--disable-filter
[size=1em]--disable-version
[size=1em]--disable-asis
假如激活ssl且禁用mod_setenv,你将会失掉以下毛病。
毛病:Syntaxerroronline223of/usr/local/apache2/conf/extra/httpd-ssl.conf:Invalidcommand‘BrowserMatch’,perhapsmisspelledordefinedbyamodulenotincludedintheserverconfiguration
办理计划:假如你利用ssl,不要禁用setenvif模块。大概你禁用setenvif模块,能够在httpd-ssl.conf正文BrowserMatch。
装置完玉成,实行httpd-l,会列出一切已装置的模块。
[size=1em][size=1em]1
[size=1em]2
[size=1em]3
[size=1em]4
[size=1em]5
[size=1em]6
[size=1em]7
[size=1em]8
[size=1em]9
[size=1em]10
[size=1em]11
[size=1em]12
[size=1em]13
[size=1em]14
[size=1em]15
[size=1em]16
[size=1em]17
[size=1em][size=1em]#/usr/local/apache2/bin/httpd-l
[size=1em]Compiledinmodules:
[size=1em]core.c
[size=1em]mod_authn_file.c
[size=1em]mod_authn_default.c
[size=1em]mod_authz_host.c
[size=1em]mod_authz_groupfile.c
[size=1em]mod_authz_user.c
[size=1em]mod_authz_default.c
[size=1em]mod_auth_basic.c
[size=1em]mod_log_config.c
[size=1em]mod_ssl.c
[size=1em]prefork.c
[size=1em]http_core.c
[size=1em]mod_mime.c
[size=1em]mod_dir.c
[size=1em]mod_so.c
在这个例子里,我们装置了以下apache模块:
- core.cCApache中心模块
- mod_auth*C各类身份考证模块
- mod_log_config.cC同意纪录日记和定制日记文件格局
- mod_ssl.c-SSL
- prefork.cC一个非线程型的、预派生的MPM
- httpd_core.cCApache中心模块
- mod_mime.cC依据文件扩大名决意应对的举动(处置器/过滤器)和内容(MIME范例/言语/字符集/编码)
- mod_dir.cC指定目次索引文件和为目次供应"尾斜杠"重定向
- mod_so.cC同意运转时加载DSO模块
2、以独自的用户和用户组运转Apache
Apache大概默许地以nobody或daemon运转。让Apache运转在本人没有特权的帐户对照好。比方:用户apache。
创立apache用户组和用户。
[size=1em][size=1em]1
[size=1em]2
[size=1em][size=1em]groupaddapache
[size=1em]useradd-d/usr/local/apache2/htdocs-gapache-s/bin/falseapache
变动httpd.conf,准确地设置User和Group。
[size=1em][size=1em]1
[size=1em]2
[size=1em]3
[size=1em][size=1em]#vihttpd.conf
[size=1em]Userapache
[size=1em]Groupapache
以后重启apache,实行ps-ef下令你会看到apache以“apache”用户运转(除第一个都是以root运转以外)。
[size=1em][size=1em]1
[size=1em]2
[size=1em]3
[size=1em]4
[size=1em]5
[size=1em]6
[size=1em]7
[size=1em][size=1em]#ps-ef|grep-ihttp|awk{print$1}
[size=1em]root
[size=1em]apache
[size=1em]apache
[size=1em]apache
[size=1em]apache
[size=1em]apache
3、限定会见根目次(利用Allow和Deny)
在httpd.conf文件按以下设置来加强根目次的宁静。
[size=1em][size=1em]1
[size=1em]2
[size=1em]3
[size=1em]4
[size=1em]5
[size=1em][size=1em]<Directory/>
[size=1em]OptionsNone
[size=1em]Orderdeny,allow
[size=1em]Denyfromall
[size=1em]</Directory>
在下面的:
- OptionsNoneC设置这个为None,是指不激活别的无关紧要的功效。
- Orderdeny,allowC这个是指定处置Deny和Allow的按次。
- DenyfromallC制止一切哀求。Deny的前面没有Allow指令,以是没人能同意会见。
4、为conf和bin目次设置得当的权限
bin和conf目次应当只同意受权用户检察。创立一个组和把一切同意检察/修正apache设置文件的用户增添到这个组是一个不错的受权***。
上面我们设置这个组为:apacheadmin
创立组:
[size=1em][size=1em]1
[size=1em][size=1em]groupaddapacheadmin
同意这个组会见bin目次。
[size=1em][size=1em]1
[size=1em]2
[size=1em][size=1em]chown-Rroot:apacheadmin/usr/local/apache2/bin
[size=1em]chmod-R770/usr/local/apache2/bin
同意这个组会见conf目次。
[size=1em][size=1em]1
[size=1em]2
[size=1em][size=1em]chown-Rroot:apacheadmin/usr/local/apache2/conf
[size=1em]chmod-R770/usr/local/apache2/conf
增添符合的用户到这个组。
[size=1em][size=1em]1
[size=1em]2
[size=1em][size=1em]#vi/etc/group
[size=1em]apacheadmin:x:1121:user1,user2
5、克制目次扫瞄
假如你不封闭目次扫瞄,用户就可以看到你的根目次(或任何子目次)一切的文件(目次)。
好比,当他们扫瞄http://{your-ip}/images/而images下没有默许首页,那末他们就会在扫瞄器中看到一切的images文件(就像ls-l输入)。从这里他们经由过程点击就可以看到公家的图片文件,或点点击子目次看到内里的内容。
为了克制目次扫瞄,你能够设置Opitons指令为“None“大概是“-Indexes”。在选项名前加“-”会强迫性地在该目次删除这个特征。
Indexes选项会在扫瞄器显现可用文件的列表和子目次(当没有默许首页在这个目次)。以是Indexes应当禁用。
[size=1em][size=1em]1
[size=1em]2
[size=1em]3
[size=1em]4
[size=1em]5
[size=1em]6
[size=1em]7
[size=1em]8
[size=1em]9
[size=1em]10
[size=1em]11
[size=1em]12
[size=1em]13
[size=1em][size=1em]<Directory/>
[size=1em]OptionsNone
[size=1em]Orderallow,deny
[size=1em]Allowfromall
[size=1em]</Directory>
[size=1em]
[size=1em](or)
[size=1em]
[size=1em]<Directory/>
[size=1em]Options-Indexes
[size=1em]Orderallow,deny
[size=1em]Allowfromall
[size=1em]</Directory>
6、禁用.htaccess
在htdocs目次下的特定子目次下利用.htaccess文件,用户能掩盖默许apache指令。在一些情形下,如许欠好,应当禁用这个功效。
我们能够在设置文件中按以下设置禁用.htaccess文件来不同意掩盖apache默许设置。
[size=1em][size=1em]1
[size=1em]2
[size=1em]3
[size=1em]4
[size=1em]5
[size=1em]6
[size=1em][size=1em]<Directory/>
[size=1em]OptionsNone
[size=1em]AllowOverrideNone
[size=1em]Orderallow,deny
[size=1em]Allowfromall
[size=1em]</Directory>
7、禁用别的选项
上面是一些Options指令的可用值。
- OptionsAllC一切的选项被激活(除MultiViews)。假如你不指定Options指令,这个是默许值。
- OptionsExecCGIC实行CGI剧本(利用mod_cgi)。
- OptionsFollowSymLinksC假如在以后目次有标记链接,它将会被跟从。
- OptionsIncludesC同意办事器端包括文件(利用mod_include)。
- OptionsIncludesNOEXECC同意办事器端包括文件但不实行下令或cgi。
- OptionsIndexesC同意目次列表。
- OptionsMultiViews-同意内容协商多器重图(利用mod_negotiation)
- OptionsSymLinksIfOwnerMatchC跟FollowSymLinks相似。可是要当标记毗连和被毗连的原始目次是统一一切者是才被同意。
毫不要指定“OptionsAll”,一般指定下面的一个或多个的选项。你能够按上面代码把多个选项毗连。
OptionsIncludesFollowSymLinks
当你要嵌进多个Directory指令时,“+”和“-”是有效处的。也有大概会掩盖下面的Directory指令。
以下面,/site目次,同意Includes和Indexes。
[size=1em][size=1em]1
[size=1em]2
[size=1em]3
[size=1em]4
[size=1em]5
[size=1em]6
[size=1em][size=1em]<Directory/site>
[size=1em]OptionsIncludesIndexes
[size=1em]AllowOverrideNone
[size=1em]Orderallow,deny
[size=1em]Allowfromall
[size=1em]</Directory>
关于/site/en目次,假如你必要承继/site目次的Indexes(不同意Includes),并且只在这个目次同意FollowSymLinks,以下:
[size=1em][size=1em]1
[size=1em]2
[size=1em]3
[size=1em]4
[size=1em]5
[size=1em]6
[size=1em][size=1em]<Directory/site/en>
[size=1em]Options-Includes+FollowSymLink
[size=1em]AllowOverrideNone
[size=1em]Orderallow,deny
[size=1em]Allowfromall
[size=1em]</Directory>
- /site目次同意IncludesIndexes
- /site/en目次同意Indexes和FollowSymLink
8、删除不必要的DSO模块
假如你加载了静态同享工具模块到apache,他们应当在httpd.conf文件在“LoadModule”指令下。
请注重静态编译的Apache模块是不在“LoadModule”指令里的。
在httpd.conf正文任何不必要的“LoadModules”指令。
[size=1em][size=1em]1
[size=1em][size=1em]grepLoadModule/usr/local/apache2/conf/httpd.conf
9、限定会见特定收集(或IP地点)
假如你必要只同意特定IP地点或收集会见你的网站,按以下操纵:
只同意特定收集会见你的网站,在Allow指令下给出收集地点。
[size=1em][size=1em]1
[size=1em]2
[size=1em]3
[size=1em]4
[size=1em]5
[size=1em]6
[size=1em]7
[size=1em][size=1em]<Directory/site>
[size=1em]OptionsNone
[size=1em]AllowOverrideNone
[size=1em]Orderdeny,allow
[size=1em]Denyfromall
[size=1em]Allowfrom10.10.0.0/24
[size=1em]</Directory>
只同意特定IP地点会见你的网站,在Allow指令下给出IP地点。
[size=1em][size=1em]1
[size=1em]2
[size=1em]3
[size=1em]4
[size=1em]5
[size=1em]6
[size=1em]7
[size=1em][size=1em]<Directory/site>
[size=1em]OptionsNone
[size=1em]AllowOverrideNone
[size=1em]Orderdeny,allow
[size=1em]Denyfromall
[size=1em]Allowfrom10.10.1.21
[size=1em]</Directory>
10、克制显现或发送Apache版本号(设置ServerTokens)
默许地,办事器HTTP呼应头会包括apache和php版本号。像上面的,这是有伤害的,由于这会让黑客经由过程晓得具体的版本号而倡议已知该版本的毛病打击。
[size=1em][size=1em]1
[size=1em][size=1em]Server:Apache/2.2.17(Unix)PHP/5.3.5
为了制止这个,必要在httpd.conf设置ServerTokens为Prod,这会在呼应头中显现“Server:Apache”而不包括任何的版本信息。
<divstyle="background-color:#FFFFFF;border:none;margin:0px;padding:0px;font-family:微软雅黑;color:#222222;font-size:13px;"><divid="highlighter_843487"class="syntaxhighlighterbash"style="border:none;padding:0px;margin:1em0px!important;font-size:1em!important;">[size=1em]1
[size=1em]2
<divclass="container"style="border:0px!important;margin:0px!important;padding:0px!important;vertical-align:baseline!important;font-size:1em!important;"> |
|