-11.28限定某个目录禁止解析php-11.29限制user_agent-11.30/11.31php相关配置-扩展-apache开启压缩http://ask.apelearn.com/question/5528-apache2.2到2.4配置文件变更http://ask.apelearn.com/question/7292-apacheoptions参数http://ask.apelearn.com/question/1051-apache禁止trace或track防止xsshttp://ask.apelearn.com/question/1045-apache配置https支持sslhttp://ask.apelearn.com/question/1029#11.28限定某个目录禁止解析php-如果有一个目录是可以上传图片,但是可能被有心之人上传php上去,因为httpd开放了php模块,所以如果被人上传了木马文件(php类型),httpd就有可能会进行执行,一旦执行,就会让对方获得我们服务器的root权限,或者是被恶意删除或修改一些参数,导致服务器瘫痪或者是被攻击-案列:一台服务器,网站被入侵,但不知道是什么原因,不知道怎么入侵的,也不知道入侵到什么程度,只知道他们公司的数据库泄露了,数据是一些电话号码,黑客并没有去删除数据,因为他知道这个服务器的数据库里,电话号码每天都在增长,他就可以源源不断的获得新的电话号码,获得的电话号码可以卖给第三方;-[]解决方式:-把一个没有在这个服务器提交过的电话号码,在这个服务器的网站上提交一次,结果,马上就有人打电话过来,证明,黑客获得电话号码,到打电话给新的用户,这套体系,已经完全自动化了(每天都会去抓取一个新的电话号码来队列,然后马上卖给第三方,第三方马上打电话给这个用户),所以就猜测,网站的程序(php)存在漏洞,另一种可能就是sql注入的漏洞(可以把查询的sql通过一些特殊的提交,提交到服务器上,服务器就会把这个sql语句转换成正常的查询,最终获得一些数据回来);但是sql注入漏洞,很容易修复,只要在网站提交的入口,增加一些特殊符号的过滤,就能完全的阻断sql注入的漏洞。首先抓包,监控数据的查询,因为电话号码是通过查询了数据来的,写一个死循环的脚本,每隔一分钟抓一次查询数据,抓完以后生成一个日志文件,查看日志以后,发现有一条sql查询,和网站源生的查询不一样,通过日志定位到了时间点,然后就去web服务器上查看时间点的访问日志,通过日志查看到了一个非常特殊的请求,名字是以php结尾的文件,而且这个php文件是在图片的目录下进行访问的,然后去查看这个php文件,发现这个文件内容,是获取服务器的权限,相当于在服务器开了一个后门;这个问题产生的根本原因,就是因为上传图片目录并没有禁止解析php-所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。[1]比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击..-那么怎么配置设置禁止php解析--核心配置文件内容<Directory/data/wwwroot/www.123.com/upload>php_admin_flagengineoff</Directory>-curl测试时直接返回了php源代码,并未解析-首先编辑虚拟主机配置文件```#</FilesMatch>#</Directory><Directory/data/wwwroot/111.com><FilesMatch"admin.php(.*)">Orderdeny,allowDenyfromallAllowfrom127.0.0.1</FilesMatch></Directory><Directory/data/wwwroot/111.com>SetEnvIfNoCaseReferer"http://111.com"local_refSetEnvIfNoCaseReferer"http://aaa.com"local_refSetEnvIfNoCaseReferer"^$"local_ref<FilesMatch"\.(txt|doc|mp3|zip|rar|jpg|gif|png)">OrderAllow,DenyAllowfromenv=local_ref</FilesMatch></Directory>```-改为```#</FilesMatch>#</Directory><Directory/data/wwwroot/111.com/upload>php_admin_flagengineoff<FilesMatch(.*)\.php(.*)>Orderallow,denyDenyfromall</FilesMatch></Directory><Directory/data/wwwroot/111.com><FilesMatch"admin.php(.*)">Orderdeny,allowDenyfromallAllowfrom127.0.0.1</FilesMatch></Directory><Directory/data/wwwroot/111.com>SetEnvIfNoCaseReferer"http://111.com"local_refSetEnvIfNoCaseReferer"http://aaa.com"local_refSetEnvIfNoCaseReferer"^$"local_ref:wq```-检查语法,重新加载配置```[root@localhost~]#/usr/local/apache2.4/bin/apachectl-tSyntaxOK[root@localhost~]#/usr/local/apache2.4/bin/apachectlgraceful[root@localhost~]#[root@localhost~]#cd/data/wwwroot/111.com[root@localhost111.com]#ls123.phpadminindex.phpqq.png[root@localhost111.com]#mkdirupload[root@localhost111.com]#ls123.phpadminindex.phpqq.pngupload[root@localhost111.com]#cp123.phpupload/[root@localhost111.com]#!curlcurl-x127.0.0.1:80‘http://111.com/admin.php?/alsjdf‘-IHTTP/1.1404NotFoundDate:Thu,12Oct201712:41:28GMTServer:Apache/2.4.27(Unix)PHP/7.1.6Content-Type:text/html;charset=iso-8859-1```-再来访问下```[root@localhost111.com]#curl-x127.0.0.1:80‘http://111.com/upload/123.php‘-IHTTP/1.1403ForbiddenDate:Thu,12Oct201712:42:49GMTServer:Apache/2.4.27(Unix)PHP/7.1.6Content-Type:text/html;charset=iso-8859-1[root@localhost111.com]#curl-x127.0.0.1:80‘http://111.com/upload/123.php‘<!DOCTYPEHTMLPUBLIC"-//IETF//DTDHTML2.0//EN"><html><head><title>403Forbidden</title></head><body><h1>Forbidden</h1><p>Youdon‘thavepermissiontoaccess/upload/123.phponthisserver.<br/></p></body></html>[root@localhost111.com]#```-先把filesmatch注释掉```#</FilesMatch>#</Directory><Directory/data/wwwroot/111.com/upload>php_admin_flagengineoff#<FilesMatch(.*)\.php(.*)>#Orderallow,deny#Denyfromall#</FilesMatch></Directory><Directory/data/wwwroot/111.com><FilesMatch"admin.php(.*)">Orderdeny,allowDenyfromallAllowfrom127.0.0.1</FilesMatch></Directory><Directory/data/wwwroot/111.com>SetEnvIfNoCaseReferer"http://111.com"local_refSetEnvIfNoCaseReferer"http://aaa.com"local_ref:wq[root@localhost111.com]#/usr/local/apache2.4/bin/apachectl-tSyntaxOK[root@localhost111.com]#/usr/local/apache2.4/bin/apachectlgraceful[root@localhost111.com]#```-再来访问```[root@localhost111.com]#!curlcurl-x127.0.0.1:80‘http://111.com/upload/123.php‘<?echo"123.php";[root@localhost111.com]#```用windows访问下看下--这个时候进一步限制它连让它访问的机会都没有,更别说去解析php了-再次打开配置文件把刚刚注释的取消,```-#</Directory><Directory/data/wwwroot/111.com/upload>php_admin_flagengineoff<FilesMatch(.*)\.php(.*)>Orderallow,denyDenyfromall</FilesMatch>[root@localhost111.com]#/usr/local/apache2.4/bin/apachectl-tSyntaxOK[root@localhost111.com]#/usr/local/apache2.4/bin/apachectlgraceful```-再来访问-直接提示无法访问403禁止php解析,是为让服务器更加安全,尤其是针对可以写的目录;可以写的目录,一般是不需要解析php,这个需要牢记,一般静态文件存放的目录是不允许解析php的#11.29限制user_agent-有时候,网站会受到一种叫cc攻击,CC攻击就是黑客,通过软件,肉鸡同时去访问一个站点,超过服务器的并发,就会导致站点宕机;通过肉鸡,软件去访问站点,就是普通的访问,没有什么特殊的,只是让站点超过并发导致严重超负荷而宕机,所以没办法去进行控制;所谓CC攻击都会有一个规律的特征,就是user_agent是一致的,比如同一个IP、同一个标识、同一个地址;遇到这种规律的user_agent频繁访问的情况我们就可以判定他就是CC攻击,我们就可以通过限制他的user_agent减轻服务器压力,只需要让他从正常访问的200,限制为403,就能减轻服务器的压力,因为403仅仅是一个请求,只会使用到很少的带宽,毕竟他没有牵扯到php和mysqlcc攻击-攻击者借助代理服务器生成指向受害主机的合法请求,实现DDOS和伪装就叫:CC(ChallengeCollapsar)。CC主要是用来攻击页面的。大家都有这样的经历,就是在访问论坛时,如果这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,访问的人越多,论坛的页面越多,数据库压力就越大,被访问的频率也越高,占用的系统资源也就相当可观。-一个静态页面不需要服务器多少资源,甚至可以说直接从内存中读出来发给你就可以了,但是论坛就不一样了,我看一个帖子,系统需要到数据库中判断我是否有读帖子的权限,如果有,就读出帖子里面的内容,显示出来——这里至少访问了2次数据库,如果数据库的数据容量有200MB大小,系统很可能就要在这200MB大小的数据空间搜索一遍,这需要多少的CPU资源和时间?如果我是查找一个关键字,那么时间更加可观,因为前面的搜索可以限定在一个很小的范围内,比如用户权限只查用户表,帖子内容只查帖子表,而且查到就可以马上停止查询,而搜索肯定会对所有的数据进行一次判断,消耗的时间是相当的大。CC就是充分利用了这个特点,模拟多个用户(多少线程就是多少用户)不停的进行访问(访问那些需要大量数据操作,就是需要大量CPU时间的页面).这一点用一个一般的性能测试软件就可以做到大量模拟用户并发。-肉鸡(受黑客远程控制的电脑),肉鸡也称傀儡机,是指可以被黑客远程控制的机器。比如用”灰鸽子”等诱导客户点击或者电脑被黑客攻破或用户电脑有漏洞被种植了木马,黑客可以随意操纵它并利用它做任何事情。肉鸡通常被用作DDOS攻击。可以是各种系统,如windows、linux、unix等,更可以是一家公司、企业、学校甚至是政府军队的服务器。-首先打开虚拟主机配置文件```#<Directory/data/wwwroot/111.com>#<FilesMatch123.php>#AllowOverrideAuthConfig#AuthName"111.comuserauth"#AuthTypeBasic#AuthUserFile/data/.htpasswd#requirevalid-user#</FilesMatch>#</Directory><Directory/data/wwwroot/111.com/upload>php_admin_flagengineoff<FilesMatch(.*)\.php(.*)>Orderallow,denyDenyfromall</FilesMatch></Directory><Directory/data/wwwroot/111.com><FilesMatch"admin.php(.*)">Orderdeny,allowDenyfromallAllowfrom127.0.0.1</FilesMatch></Directory>--插入--44,561%```-添加配置文件后,然后检查配置文件,重新加载配置文件```#<Directory/data/wwwroot/111.com>#<FilesMatch123.php>#AllowOverrideAuthConfig#AuthName"111.comuserauth"#AuthTypeBasic#AuthUserFile/data/.htpasswd#requirevalid-user#</FilesMatch>#</Directory><IfModulemod_rewrite.c>RewriteEngineonRewriteCond%{HTTP_USER_AGENT}.*curl.*[NC,OR]RewriteCond%{HTTP_USER_AGENT}.*baidu.com.*[NC]RewriteRule.*-[F]</IfModule><Directory/data/wwwroot/111.com/upload>php_admin_flagengineoff<FilesMatch(.*)\.php(.*)>Orderallow,denyDenyfromall</FilesMatch></Directory><Directory/data/wwwroot/111.com><FilesMatch"admin.php(.*)">Orderdeny,allow:wq[root@localhost111.com]#vim/usr/local/apache2.4/conf/extra/httpd-vhosts.conf[root@localhost111.com]#/usr/local/apache2.4/bin/apachectl-tSyntaxOK[root@localhost111.com]#/usr/local/apache2.4/bin/apachectlgraceful[root@localhost111.com]#```-再来访问下```[root@localhost111.com]#!curlcurl-x127.0.0.1:80‘http://111.com/upload/123.php‘<!DOCTYPEHTMLPUBLIC"-//IETF//DTDHTML2.0//EN"><html><head><title>403Forbidden</title></head><body><h1>Forbidden</h1><p>Youdon‘thavepermissiontoaccess/upload/123.phponthisserver.<br/></p></body></html>[root@localhost111.com]#curl-x127.0.0.1:80‘http://111.com/upload/123.php‘-IHTTP/1.1403ForbiddenDate:Thu,12Oct201713:41:04GMTServer:Apache/2.4.27(Unix)PHP/7.1.6Content-Type:text/html;charset=iso-8859-1[root@localhost111.com]#[root@localhost111.com]#curl-x127.0.0.1:80‘http://111.com/123.php‘-IHTTP/1.1403ForbiddenDate:Thu,12Oct201713:41:49GMTServer:Apache/2.4.27(Unix)PHP/7.1.6Content-Type:text/html;charset=iso-8859-1[root@localhost111.com]#```-查看下日志文件```[root@localhost111.com]#tail/usr/local/apache2.4/logs/123.com-access_20171012.log192.168.202.1--[12/Oct/2017:20:51:50+0800]"GET/favicon.icoHTTP/1.1"404209"http://111.com/123.php""Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/61.0.3163.100Safari/537.36"192.168.202.1--[12/Oct/2017:20:54:14+0800]"GET/123.phpHTTP/1.1"2007"-""Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/61.0.3163.100Safari/537.36"192.168.202.1--[12/Oct/2017:20:54:16+0800]"GET/123.phpHTTP/1.1"2007"-""Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/61.0.3163.100Safari/537.36"192.168.202.1--[12/Oct/2017:20:54:29+0800]"GET/upload/123.phpHTTP/1.1"403223"-""Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/61.0.3163.100Safari/537.36"192.168.202.1--[12/Oct/2017:21:22:31+0800]"GET/upload/123.phpHTTP/1.1"403223"-""Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/61.0.3163.100Safari/537.36"192.168.202.1--[12/Oct/2017:21:22:32+0800]"GET/upload/123.phpHTTP/1.1"403223"-""Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/61.0.3163.100Safari/537.36"192.168.202.1--[12/Oct/2017:21:22:34+0800]"GET/HTTP/1.1"2007"-""Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/61.0.3163.100Safari/537.36"127.0.0.1--[12/Oct/2017:21:40:54+0800]"GEThttp://111.com/upload/123.phpHTTP/1.1"403223"-""curl/7.29.0"127.0.0.1--[12/Oct/2017:21:41:04+0800]"HEADhttp://111.com/upload/123.phpHTTP/1.1"403-"-""curl/7.29.0"127.0.0.1--[12/Oct/2017:21:41:49+0800]"HEADhttp://111.com/123.phpHTTP/1.1"403-"-""curl/7.29.0"[root@localhost111.com]#```-再来试下-curl-A"aminlinuxaminglinux"-x127.0.0.1:80‘http://111.com/123.php‘-I可以crul-A可以指定user_agent-curl-e"http://"也可以指定Referer-curl-x指定,-crul-I仅仅是查看它的状态码```[root@localhost111.com]#curl-A"aminlinuxaminglinux"-x127.0.0.1:80‘http://111.com/123.php‘-IHTTP/1.1200OKDate:Thu,12Oct201713:47:03GMTServer:Apache/2.4.27(Unix)PHP/7.1.6X-Powered-By:PHP/7.1.6Content-Type:text/html;charset=UTF-8[root@localhost111.com]#curl-A"aminlinuxaminglinux"-x127.0.0.1:80‘http://111.com/123.php‘123.php[root@localhost111.com]#[root@localhost111.com]#[root@localhost111.com]#```-来看看访问日志user_agent是"aminlinuxaminglinux"```[root@localhost111.com]#tail/usr/local/apache2.4/logs/123.com-access_20171012.log192.168.202.1--[12/Oct/2017:20:54:16+0800]"GET/123.phpHTTP/1.1"2007"-""Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/61.0.3163.100Safari/537.36"192.168.202.1--[12/Oct/2017:20:54:29+0800]"GET/upload/123.phpHTTP/1.1"403223"-""Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/61.0.3163.100Safari/537.36"192.168.202.1--[12/Oct/2017:21:22:31+0800]"GET/upload/123.phpHTTP/1.1"403223"-""Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/61.0.3163.100Safari/537.36"192.168.202.1--[12/Oct/2017:21:22:32+0800]"GET/upload/123.phpHTTP/1.1"403223"-""Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/61.0.3163.100Safari/537.36"192.168.202.1--[12/Oct/2017:21:22:34+0800]"GET/HTTP/1.1"2007"-""Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/61.0.3163.100Safari/537.36"127.0.0.1--[12/Oct/2017:21:40:54+0800]"GEThttp://111.com/upload/123.phpHTTP/1.1"403223"-""curl/7.29.0"127.0.0.1--[12/Oct/2017:21:41:04+0800]"HEADhttp://111.com/upload/123.phpHTTP/1.1"403-"-""curl/7.29.0"127.0.0.1--[12/Oct/2017:21:41:49+0800]"HEADhttp://111.com/123.phpHTTP/1.1"403-"-""curl/7.29.0"127.0.0.1--[12/Oct/2017:21:47:03+0800]"HEADhttp://111.com/123.phpHTTP/1.1"200-"-""aminlinuxaminglinux"127.0.0.1--[12/Oct/2017:21:47:19+0800]"GEThttp://111.com/123.phpHTTP/1.1"2007"-""aminlinuxaminglinux"[root@localhost111.com]#```#11.30PHP相关配置(上)-查看php配置文件位置-/usr/local/php/bin/php-i|grep-i"loadedconfigurationfile"-date.timezone-disable_functionseval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close-error_log,log_errors,display_errors,error_reporting-open_basedir-php_admin_valueopen_basedir"/data/wwwroot/111.com:/tmp/"-列出111.com目录下文件目录修改inidex.php内容```[root@localhost111.com]#ls123.phpadminindex.phpqq.pngupload[root@localhost111.com]#viindex.php<?phpecho"111.com";~~~~"index.php"2L,22C```-修改为```[root@localhost111.com]#viindex.php<?phpphpinfo();~~~:wq```-去php包下面拷贝一个文件php.ini-development到/usr/local/php7/etc/php.ini```[root@localhost111.com]#cd/usr/local/src/php-7.1.6/[root@localhostphp-7.1.6]#cpphp.ini-php.ini-developmentphp.ini-production[root@localhostphp-7.1.6]#cpphp.ini-development/usr/local/php7/etc/php.ini[root@localhostphp-7.1.6]#```-重新加载下配置,再去windows浏览器里刷新下看下```[root@localhostphp-7.1.6]#/usr/local/apache2.4/bin/apachectlgraceful```-打开配置文件vim/usr/local/php7/etc/php.ini搜索disable_functions```[root@localhostphp-7.1.6]#vim/usr/local/php7/etc/php.ini[PHP];;;;;;;;;;;;;;;;;;;;Aboutphp.ini;;;;;;;;;;;;;;;;;;;;;PHP‘sinitializationfile,generallycalledphp.ini,isresponsiblefor;configuringmanyoftheaspectsofPHP‘sbehavior.;PHPattemptstofindandloadthisconfigurationfromanumberoflocations.;Thefollowingisasummaryofitssearchorder:;1.SAPImodulespecificlocation.;2.ThePHPRCenvironmentvariable.(AsofPHP5.2.0);3.AnumberofpredefinedregistrykeysonWindows(AsofPHP5.2.0);4.Currentworkingdirectory(exceptCLI);5.Thewebserver‘sdirectory(forSAPImodules),ordirectoryofPHP;(otherwiseinWindows);6.Thedirectoryfromthe--with-config-file-pathcompiletimeoption,orthe;Windowsdirectory(C:\windowsorC:\winnt);SeethePHPdocsformorespecificinformation.;http://php.net/configuration.file;Thesyntaxofthefileisextremelysimple.Whitespaceandlines;beginningwithasemicolonaresilentlyignored(asyouprobablyguessed).;Sectionheaders(e.g.[Foo])arealsosilentlyignored,eventhough;theymightmeansomethinginthefuture.;Directivesfollowingthesectionheading[PATH=/www/mysite]only;applytoPHPfilesinthe/www/mysitedirectory.Directives;followingthesectionheading[HOST=www.example.com]onlyapplyto;PHPfilesservedfromwww.example.com.Directivessetinthese;If-1isused,thendtoamode0isusedwhichautomaticallyselectthebest;precision.serialize_precision=-1;open_basedir,ifset,limitsallfileoperationstothedefineddirectory;andbelow.Thisdirectivemakesmostsenseifusedinaper-directory;orper-virtualhostwebserverconfigurationfile.;http://php.net/open-basedir;open_basedir=;Thisdirectiveallowsyoutodisablecertainfunctionsforsecurityreasons.;Itreceivesacomma-delimitedlistoffunctionnames.;http://php.net/disable-functionsdisable_functions=;Thisdirectiveallowsyoutodisablecertainclassesforsecurityreasons.;Itreceivesacomma-delimitedlistofclassnames.;http://php.net/disable-classesdisable_classes=;ColorsforSyntaxHighlightingmode.Anythingthat‘sacceptablein;<spanstyle="color:????