M8-3提升Linux系统的WEB服务的安全防御1.1教学目的与要求1.1.1教学目的学生通过该能力模块的学习,能够独立完成和熟练掌握安全配置WEB服务,从而实现提升Linux系统的WEB服务器安全防御能力。1.1.2教学要求1.教学重点Apache安全配置选项SSL加密安全2.教学难点SSL加密安全1.2本能力单元涉及的知识组织1.2.1本能力单元涉及的主要知识点1、Apache配置文件2、SSL加密安全1.2.2本能力单元需要解决的问题1、按照项目的需求,重点掌握WEB服务的安全配置选项。2、按照项目的需求,重点掌握SSL加密安全。1.3核心技术和知识的理解1.3.1安全配置选项【第一部分】·ServerTypestandalone这表示Apache是以standalone启动,也可以是inetd。所谓standalone是指启动一次来接听所有的连线;而inetd是接到http的连线要求才启动,随着连线的结束而结束,这样负担是不是很但呢?所以一般都是以standalone启动。·ServerRoot/usr/local/httpd此为apache的目录·#LocdFile/use/local/httpd/logs/httpd.lock保留预设值,不更动·PidFile/usr/local/httpd/logs/httpd.pid此文件记录着apache的父处理程序id·ScoreBoardFile/usr/local/httpd/logs/httpd.scoreboard此文件存储处理程序的信息·#ResourceConfigconf/srm.conf·#AccessConfigconf/access.conf由于我们统筹由httpd.conf来管理,所以这两个文件预设是注解起来的,可以保留预设值不更动·Timeout300设盯超时的时间。如果用户端超过300秒还没连上server,或server超过300秒还没传送信息给用户端,即断线。·KeepAliveOn允许用户端的连线有多个请求,设为Off表示不允许·MaxKeepAliveRequests100每次连线最大的请求树木,数字愈大,效能愈好。0表示不限制·MinSpareServer5·MaxSpareServers10MinSpareServer5表示最少会有5个闲置的处理程序,如果实际的数目少于此数目,则会增加处理程序。MaxSpareServers10表示最大的闲置处理程序数目,如果你的网站需求量很大,可以将此数目设大一些,大不要随便将此数目设得太大。·StartServers5启动时Server的数目MaxClients150限制同时间最大的连线数目,当然不能设得太小,一旦达到此数目,就无法再增加用户端·MaxRequestPerChild0限制子处理程序结果前的要求数目,0表示不限制·#Listen3000·#Listen12.34.56.78:80使用其它的连接端口或IP·BindAddress*可以接听*(所有IP地址)、指定的IP地址或是完整的域名·#LoadModulefoo_modulelibexec/mod_foo.so使用DSO模块·#ExtendedStatusOn可检阅apache的状态信息,预设是Off(注解起来)【第二部分】如果之前的ServerType是inetd,请直接跳到ServerAdmin。·Port80Standalone服务器接听的连接端口,当然也可以是其他小于1023的端口号·Usernobody·Groupnobody执行httpd的用户和群组·ServerAdmin管理员的电子邮件地址这是管理员的电子邮件地址,如果apache有问题的话,会寄信通知管理员,当然你也可以建立一个专门负责web的帐号来收信·ServerName你的主机名称此为主机名称,如果没有域名,也可以用IP·DocumentRootusr/local/httpd/htdocs此目录为apache放置网页的地方,里面的index.html即为连到此主机的预设首页OptionsFollowSymLinksAllowOverridenone此目录设定用户放置网页的目录(public_html)的执行动作。详细的目录存取方法会在后面说明OptionsIndexesFolloeSymLinksAllowOverrideNoneOrderallow,denyAllowfromall此目录设定apache的网页目录(htdocs)的执行动作·UserDirpublic_html用户可在自己的目录下建立public_html目录来放置网页,输入http://主机地址/~用户名称即可连接到...劳撤胖玫牡胤?/a·DirectoryIndexindex.html这里设定预设主页的名称·AccessFileName.htaccess这个是控制存取的文件名称,一般采用预设的.htaccess名称,后面会说明htaccess的使用方法Orderallow,denyDenyfromall这用来防止其他人看到.ht开头的文件内容,不仅是保护.htaccess的内容,还保护.htpasswd的内容。当然也可以直接写成。如果你有更改AccessFilename,例如将.htaccess改成.accessht,请记得也要在此做相关的更改,如此才能防止其他人看到哦·#CacheNegotiatedDocs注解起来是告诉Proxy不要将互动产生的文件存入cache,如果拿掉#,则会存在cache中·UseCanonicalNameOn使用标准的名称,预设是On。假设有一个webserver的全名是,一般称为;如果us...羑ttp://·TypeConfig/usr/local/httpd/conf/mime.types指定存放MIME文件类型的文件。你可以自行编辑mime.types文件。·DefaultTypetext/plain当server不认得此文件类型时的预设格式,此设定是当成一般文字MIMEMagicFile/usr/local/httpd/conf/magicmod_mime_magic模块可使server由文件内容决定其MIME类型。如果有载入mod_mime_magic模块,才会处理MIMEMagicFile这一段。如果是…,则表示如果没有载入该模块,才会处理这一段·HostLookupsOff如果为On,则每次都会向nameserver解析该IP,记录此连线的名称(例如)自换岷牟簧偈奔洌...为Off,仅记录IP·ErrorLog/usr/local/httpd/logs/error_log指定发生错误的记录文件(error_log)位置。如果在没有指定发生错误的记录文件,则会沿用此文件·LogLevelwarn记录分成很多等级,在此是warn。各等级如下:等级说明debugdebug信息info普通信息notice重要信息warn警告信息error发生错误crit紧急情况alert马上要处理的情况amerg系统快要死了LogFormat%h%l%u%t\%r\%s%b\{Referer}i\\${UserAgent}i\combinedLogFormat%h%l%u%t%r\%s%bcommomLogFormat%{Referer}i-%UrefererLogFormat%{User-agent}iagent自定四种记录格式:combined、common、referer、agent·CustomLog/usr/local/httpd/logs/access_logcommon存取的记录文件(access_log)使用自定的common格式·#CustomLog/usr/local/httpd/logs/referer_logreferer#CustomLog/usr/local/httpd/logs/agent_logagent#CustomLog/usr/local/httpd/logs/agent_logcombined这三个记录文件也是使用自定义格式(分别是referer、agent、combined),不过注解起来表示未使用这三个文件·ServerSignatureOn设为On时,在server所产生的网页(像是错误发生时)上,会有apache的版本、主机、连接端口的一行信息;如果设为Email,则会有mailto:给管理员的超链接·Alias/icons//usr/local/httpd/icons/使用较短的别名,其格式为:Alias别名原名。·ScriptAlias/cgi-bin//usr/local/httpd/cgi-bin/和Alias一样,只是这是设定serverscript的目录·IndexOptionsFancyIndexing显示好看的文件清单(配合下面各文件所对应的图形)·AddIconByEncoding(CMP,/icons/compressed.gif)x-conpressx-gzip·AddIcon/icons/blank.gif^^BLANKICON^^DefaultIcon/icons/unknow.gif这些是在显示文件清单(之前所说的FancyIndex)时,各种文件类型的对应图形。例如.ps.si.eps这三种文件的表示图形都是a.gif·#AddDescriptionGZIPconpresseddocument.gz#AddDescriptiontararchive.tar#AddDescriptionGZIPcompressedtararchive.tgz这些是在显示文件清单时,在文件后面附上说明,其格式为:AddDescription说明文件名例如:AddDescriptionItisprivatetxtmy.txt·ReadmeNameREADME显示文件清单时,在最下面显示README的文件内容设置CGI脚本/将httpd.conf做为唯一的配置文件/用户授权和访问控制等关于Apache的配置及使用,在LinuxAid中已经有不少文章做了详细的阐述,本文讨论了在使用Apache时,有关配置文件的使用及对文件的访问控制等内容,算是对Apache的使用所做的一些补充吧!如果您对Apache有一定的了解,特别是对几个配置文件有一定的了解,这将会有助于您对本文内容的理解;如果恰巧您不是很了解这几个配置文件的使用,那么就借着这个机会来一起熟悉一下吧。一、关于CGI执行脚本的配置这里有两种设置CGI脚本的方法。第一、CGI的脚本文件以.cgi为扩展名;第二、设置脚本可执行目录。但是这两种方法都需要将要执行的文件设置为711,才可以被执行。第一种方法,我们需要在access.conf文件种将你要发行的目录设置为OptionExecCGIAll,在srm.conf资源配置文件中,加上下列一句:AddHandlecgi-script.cgi这样在所有的目录种只要你的文件是.cgi为扩展名的,且文件访问权限为711的,无论给文件在你发行目录的任何一个地方都可以做为CGI被Apache服务器调用。这种方法一般没有第二种方法安全。第二种方法,是将一个目录作为一个可执行目录,将所有的cgi文件都放在其中,这里就不一定非得是以.cgi为扩展名得文件可以执行,而是只要有711属性的文件就可以被执行,而且其它的非可执行文件都被禁止访问。我们的默认配置文件种就有一个很好的例子:access.conf:Directory/home/httpd/cgi-bin/AllowOverrideNoneOptionsExecCGI/Directorysrm.confScriptAlias/cgi-bin//home/httpd/cgi-bin/这样只要在/home/httpd/cgi-bin/目录中的可执行文件都可以被Web服务器调