Apache防御与加固

Apache防御与加固



1、安全配置

Apache的不同版本和安装方式,配置文件名称不同,有的为apache2.conf,有的为httpd.conf,可以根据版本确认。在apache的配置文件中可能包含多个配置文件。

如若找不到某个配置,可以搜索,例如:grep -r "Server Tokens" /etc/apache2/(搜索该目录下所有文件中是否含有该字符串,加上-n可以显示行号)

cat /etc/apache2/apache2.conf

image-20210510204554431

2、目录权限

cat /etc/apache2/apache2.conf

image-20210510212746833

其中Directory主要配置目录的权限,规定了目录的特性、配置文件覆盖情况、目录访问权限。

----------- Options: 设置目录特性

ALL:所有特性有效(缺省状态)

None:所有目录特性无效

FollowSymLinks:允许浏览器访问文档根目录外的文档

ExecCGI:允许目录下执行CGI程序

Indexes:允许浏览器在没有index.html时显示目录

------------AllowOverride:设置配置文件覆盖

None:.htaccess文件完全忽略

ALL:使用.htaccess文件内的指令覆盖规则

------------Require:目录访问权限(2.4版本)

require all denied:拒绝所有

require all granted:允许所有

require host xxx 允许某个IP/HOST

—在2.2版本的目录访问权限使用Order,Allow,Deny

全部禁止:Order Allow, Deny

​ Deny from All

全部允许:Order Deny, Allow

​ Allow from All

.htaccess:负责目录下的网页配置,如改变扩展名,404。详细

Require介绍

image-20210510221734056

Require all granted    #允许所有
Require all denied     #拒绝所有
Require env env-var [env-var] ...    #当设置了某个环境变量允许访问
Require method http-method [http-method]...   #允许特定的HTTP方法(GET/POST/HEAD/OPTIONS)
Require expr expression    #表达式为true时允许
Require user userid [userid]...    #允许特定用户
Require group group-name [group-name]...   #允许特定用户组
Require valid-user    #所有有效用户都允许
Require ip 192.100 192.168.100 192.168.100.5   #允许特定IP或IP段,多个IP或IP段间使用空格分隔

Apache2.2以下:

Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directory,Location,Files等),用来控制目录和文件的访问授权。

Order deny,allow

allow from all

deny from 222.100.20.50

#全部都可以通行


Order deny, allow

deny from 222.100.20.50

allow from all

#全部都可以通行


Order allow, deny

deny from 222.100.20.50

allow from all

#只有222.100.20.50不能通行


Order allow, deny

allow from all

deny from 222.100.20.50

#只有222.100.20.50不能通行


总结:总是以Order后的后边那个策略为准,忽略另一个。

禁止目录浏览

作用:为防止一些重要文件,例如网站源码、sql文件等被黑客下载进行代码审计,所以要禁止目录浏览。

cat /etc/apache2/apache2.conf

image-20210511110357049

删除Indexes即可实现。(Indexes的含义就是当该目录下没有index.html时,显示目录结构)

配置目录权限

目标:根据具体的业务需求,以最小权限为原则,为网站目录设置一定的权限。

  • 假设网站的目录和文件的所有者和所有组为apache、www

    命令:chmod -R apache:www /home/apache/web (为网站目录设置用户和用户组)

  • 设置网站目录权限为750,apache对目录拥有读写执行的权限,其他用户没有任何权限

    find -type d -exec chmod 750 {} ;

  • 设置网站文件权限为640,apache用户对网站文件有读写的权限,www用户组有读取文件的权限,其他用户无任何权限

    find -not -type d -exec chmod 640 {} ;

  • 如果其他目录需要特定权限,针对性赋予即可。

实例:禁止上传目录执行PHP脚本

cat /etc/apache2/apache2.conf

<Directory /var/www/html/upload>
	<FilesMatch ".(php)$">
		Require all Denied
	</FilesMatch>
</Directory>

3、端口

对于内网的服务器而言,修改端口可以有效的增加黑客信息收集的成本

cat /etc/apache2/ports.conf

image-20210510212155325

apache运行权限设置(用户和组必须存在)

最小权限原则,为apache设置一个最小的权限的用户来运行

cat /etc/apache2/apache2.conf

image-20210510212522821

可以自定义一个较小权限的用户和组。


4、日志记录

日志作用:记录了所有web请求

可以分析出:1、正常业务(那些页面访问量比较大等) 2、分析流量大小 3、分析黑客攻击(来自哪个IP?等)

cat /etc/apache2/apache2.conf

image-20210510225422154

在Apache2.4中,编辑apache2.conf

**1、**将日志中的debined的值,修改为

LogFormat “%h %{X-FORWARDED-FOR}i %I %u %t \”%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" combined

(combined是别名)

**2、**添加:ErrorLogFormat “[%t] [%I] [pid %P] %F: %E: [client %a] %M”

**3、**将LogLevel修改为notice

备注:combined可能在其他配置文件中引用,可以使用grep -rn “combined” /etc/apache2/ 进行搜素

LogLevel:控制登录到error_log的消息的数量。可能的值包括:7-调试(DEBUG)、6-信息(INFO)、5-通知(NOTICE)、4-警告(WARNING)、3-错误(ERR)、2-临界失败(CRIT)、1-警戒【必须 处理】(ALERT)、0-致命(EMERG)。


5、隐藏版本信息

作用:隐藏回显时暴露的apache和操作系统版本信息,可以有效增加黑客攻击的时间成本。

ServerTokens Prod #隐藏HTTP头部回显的版本信息

ServerSignature off #屏蔽回显错误中的敏感信息

找不到:grep -rn “” /etc/apache2/

cat /etc/apache2/conf-available/security.conf

image-20210511105011418

ServerTokens Prod 显示“Server: Apache”

ServerTokens Major 显示“Server: Apache/2”

ServerTokens Minor 显示“Server: Apache/2.2”

ServerTokens Min 显示“Server: Apache/2.2.17”

ServerTokens OS 显示“Server: Apache/2.2.17(Unix)”

ServerTokens Full 显示“Server: Apache/2.2.17(Unix) PHP/5.3.5" (这是默认回显,也可自己指定)


6、限制消息的长度

LimitRequestBody 102400

#102400Bytes = 100KB

限制从客户端发送的HTTP请求正文的总大小

7、删除无用文件

  • 删除缺省(默认)HTML文件

    rm -rf /usr/local/apache2/htdocs/*

  • 删除缺省的CGI脚本

    rm -rf /usr/local/apache2/cgi-bin/*

  • 删除Apache说明文件

    rm -rf /usr/local/apache2/manual

  • 删除源代码文件

    rm -rf /path/to/httpd-2.2.4*

8、DDOS防御

Timeout 10

KeepAlive On

keepAliveTimeout 15

AcceptFilter https data

AcceptFilter http data

9、关闭Trace功能

TraceEnable Off

Trace是http请求中的一个方法,用此方法服务器会将客户端请求的消息原样返回给客户端,用作测试。

curl -i -X OPTIONS http://192.168.0.110

10、自定义错误页面,防止敏感信息泄露

ErrorDocument 400 /custom400.html

ErrorDocument 401 /custom401.html

ErrorDocument 403 /custom403.html

ErrorDocument 404 /custom404.html

ErrorDocument 405 /custom405.html

ErrorDocument 500 /custom500.html

11、关闭CGI(如果不用)

把cgi-bin目录的配置和模块注释掉

在apache2.4版本:

cat /etc/apache2/conf-available/serve-cgi-bin.conf

image-20210511132339684

老版本:

编辑httpd.conf配置文件:

#LoadModule cgi_module modules/mod_cgi.so
#ScriptAlias  /cgi-bin/  "/var/www/cgi-bin/"
#<Directory "/var/www/cgi-bin">
	# AllowOverride  None # Options None
	# Order allow, deny  #Allow from all
#</Directory>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值