Apache安全加固配置教程(小白篇)

news2025/6/8 7:32:58

Apache安全加固配置教程(小白篇)

资源宝分享:www.httple.net

在这里插入图片描述
一,Apache服务器的介绍

Apache服务器它是Internet网上应用最为广泛的Web服务器软件之一。Apache服务器源自美国国家超级技术计算应用中心(NCSA)的 Web服务器项目中。目前已在互联网中占据了领导地位。Apache服务器得经过精心配置之后,才能使它适应高负荷,大吞吐量的互联网工作。快速、可靠、通过简单的API扩展,Perl/Python解释器可被编译到服务器中,且完全免费,完全源代码开放。如果你需要创建一个每天有数百万人访问的Web服务器,Apache可能是最佳选择。

二,Apache服务器的主要安全缺陷

正如我们前言所说尽管Apache服务器应用最为广泛,设计上非常安全的程序。但是同其它应用程序一样,Apache也存在安全缺陷。毕竟它是完全源代码,Apache服务器的安全缺陷主要是使用HTTP协议进行的拒绝服务攻击(denial of service)、缓冲区溢出攻击以及被攻击者获得 root权限三缺陷和最新的恶意的攻击者进行“拒绝服务”(DoS)攻击。合理的网络配置能够保护Apache服务器免遭多种攻击。我们来介绍一下主要的安全缺陷:

(1)使用HTTP协议进行的拒绝服务攻击(denial of service)的安全缺陷

这种方法攻击者会通过某些手段使服务器拒绝对HTTP应答。这样会使Apache对系统资源(CPU时间和内存)需求的剧增,最终造成Apache系统变慢甚至完全瘫痪。

(2)缓冲区溢出的安全缺陷

该方法攻击者利用程序编写的一些缺陷,使程序偏离正常的流程。程序使用静态分配的内存保存请求数据,攻击者就可以发送一个超长请求使缓冲区溢出。比如一些Perl编写的处理用户请求的网关脚本。一旦缓冲区溢出,攻击者可以执行其恶意指令或者使系统宕机。

(3)被攻击者获得root权限的安全缺陷

该安全缺陷主要是因为Apache服务器一般以root权限运行(父进程),攻击者会通过它获得root权限,进而控制整个Apache系统。

(4)恶意的攻击者进行“拒绝服务”(DoS)攻击的安全缺陷

这个最新在6月17日发现的漏洞,它主要是存在于Apache的chunk encoding中,这是一个HTTP协议定义的用于接受web用户所提交数据的功能。 利用黑客程序可以对于运行在FreeBSD 4.5, OpenBSD 3.0 / 3.1, NetBSD 1.5.2平台上的 Apache服务器均可进行有效的攻击.

所有说使用最高和最新安全版本对于加强Apache Web服务器的安全是至关重要的。请广大Apache服务器管理员去http://www.apache.org/dist/httpd/下载补丁程序以确保其WEB服务器安全!

正确维护和配置Apache服务器

  1. 选择漏洞较少的apache版本,并打上安全补丁

查看apache版本号:httpd -v

然后在sebug上搜索该版本号有什么漏洞,可根据提示提升版本或者打上补丁

  1. 关闭一些不使用的模块及功能

可在LoadModule前加#,来注释掉一些不使用的模块

  1. 隐藏banner信息
  ServerTokens OS  修改为:ServerTokens Prod (在出现错误页的时候不显示服务器操作系统的名称)
  ServerSignature On 修改为:ServerSignature Off(不回显apache版本信息)
  1. 删除默认网站及页面

删除默认的页面,防止泄露服务器信息

  1. 可修改banner信息

  2. 配置httpd.conf禁止目录浏览

  Options Indexes FollowSymLinks
  改为
  Options -Indexes FollowSymLinks
  1. 配置httpd.conf设置默认文档
DirectoryIndex index.html
  1. 合理配置apache的运行账户

为apache单独建立一个运行账户及账户组,并在httpd.conf配置

  User apache
  Group apache
  1. 合理控制apache运行账户对磁盘的写入,执行权限

取消apache运行账户对网站目录的写入权限,上传目录除外,其他非网站目录尽量不给权限

  1. 合理控制apache运行账户对sh等的执行权限

取消掉了运行账户对sh等的执行权限后能够防止webshell通过默认的sh执行命令

  1. 配置httpd.conf取消对上传目录的php执行权限
<Directory "/var/www/html/aaa">
  <FilesMatch ".(php|php5)$">
  Deny from all
  </FilesMatch>
  </Directory>
  1. 配置httpd.conf限制禁止访问的文件夹,例如后台目录
<Directory "/var/www/html/aaa">
  Deny from all
  </Directory>
  1. 配置httpd.conf限制一些特殊目录的特定ip访问,如内部接口等。
<Directory "/var/www/html/aaa">
  Order Deny,Allow
  Deny from all
  Allow from 192.168.1.111
  </Directory>
  1. 配置httpd.conf限制一些文件类型的访问,如txt的日志
<Files ~ ".txt$">
  Order allow,deny
  Deny from all
  </Files>

15.配置httpd.conf修改修改监听端口来防止一些内部系统被扫描

这样可以防止一些直接扫描80端口的黑客

Listen 12345
  1. 关闭对.htaccess的支持
  AllowOverride All
  改为
  AllowOverride None
  1. 配置httpd.conf记录访问日志

.htaccess常见配置方法参考

首先,不建议使用.htaccess,其次,使用.htaccess需要在httpd.conf中开启,最后,开始.htaccess支持后需要在httpd.conf中配置防止.htaccess文件被下载,下面介绍几个基本配置方法不全,更多的可以参考其他网站专门针对.htaccess 的配置方法。

  1. 定制目录的默认文档
DirectoryIndex index.html index.php index.htm

Apache 错误页面重定向功能可以防止敏感信息泄露。

2.修改 httpd.conf 配置文件:

ErrorDocument 400 /custom400.html
ErrorDocument 401 /custom401.html
ErrorDocument 403 /custom403.html
ErrorDocument 404 /custom404.html
ErrorDocument 405 /custom405.html
ErrorDocument 500 /custom500.html
  1. 控制访问文件和目录的级别
  order deny,allow
  deny from all
  allow from 192.168.0.0/24
  1. 防止列目录
Options -Indexes

18、拒绝服务防范
根据业务需要,合理设置 session 时间,防止拒绝服务攻击。

1、修改 httpd.conf 配置文件:

Timeout 10 
KeepAlive On
KeepAliveTimeout 15
AcceptFilter http data
AcceptFilter https data

Timeout 10 #客户端与服务器端建立连接前的时间间隔
KeepAliveTimeout 15 限制每个 session 的保持时间是 15 秒
此处为建议值,具体的参数值需要根据现实际情况设定。
默认值为Timeout 120、KeepAlive Off、KeepAliveTimeout 15,该项设置涉及性能调整。

19、关闭 TRACE功能
关闭 TRACE 功能,防止 TRACE 方法被访问者恶意利用。

/etc/httpd/conf/httpd.conf 配置文件中添加以下设置参数:
TraceEnable Off  

20、禁用非法 HTTP 方法
禁用 PUT、DELETE 等危险的 HTTP 方法
您可根据需要进行设置,如果需要用到 PUT 或 Delete 等 HTTP 方法的话,在 /etc/httpd/conf/httpd.conf 配置文件中相应添加即可。


修改 httpd.conf 配置文件,只允许 get、post 方法。
<Location />
<LimitExcept GET POST CONNECT OPTIONS>  Order Allow,Deny  Deny from all</LimitExcept>
</Location> 

若使用IP黑名单,则根据业务需求添加下面内容

<Directory "/var/www/html/test">	
    Options All	
    AllowOverride None	
    Order Deny,Allow	
    Deny From 192.168.1.0/24 192.168.3.0/24	
    Deny From 192.168.56.1
</Directory> 

关闭Trace,防止Trace方法被恶意访问利用,造成信息泄露

TraceEnable off

我们也可以为单独的站点禁用CGI和Include

<Directory "/var/www/html/web1">
Options -Includes -ExecCGI
</Directory>

21.限制请求的大小

Apache默认对HTTP请求的大小没有任何限制。当web服务器对请求没有任何限制是,容易引发拒绝服务攻击。我们可以通过LimitRequestBody为每个目录单独配置请求大小限制。

我们可以将http请求的大小限制在 0(不受限制)~2147483647 (2GB)之间。一般建议将LimitRequestBody的值设置在略大于最大上传文件的大小即可。

<Directory "/var/www/myweb1/user_uploads">
   LimitRequestBody 512000
</Directory>

22.DDOS攻击防范,避免僵尸请求

我们可以调整Apache的参数,将DDOS攻击的影响降到最低。

Timeout:指令允许您设置服务器在失败之前等待某些事件完成的时间。默认 300 秒。当收到DDOS攻击时,可以将该值设置到最低。

MaxClients:允许您设置将同时提供的并发连接数的限制。默认值为256,超过的连接请求将会被放在队列中等待执行。它可用于Prefork和Worker两者MPM。

KeepAliveTimeout:服务器在关闭连接之前等待后续请求的时间。默认为5秒

LimitRequestFields:帮助我们设置从客户端接受的HTTP请求的头字段数量的限制,默认值为100.建议适当降低该值。

LimitRequestFieldSize:配置HTTP Request header大小。

23.启用Apache日志

Apache允许您独立于操作系统日志记录进行日志记录。启用Apache日志可以为我们提供更多的有用信息。

TransferLog:创建日志文件。

LogFormat:指定自定义格式。

CustomLog:创建和格式化日志文件。

您还可以为每个虚拟主机指定不同的日志。

<VirtualHost *:80>
  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
</VirtualHost>

其实一个web服务器的保护是分几个层次的

  1. 隐藏自己

要保护一个web服务器首先得学会隐藏自己,对于一些内部系统,如后台,内部接口等,我们可以通过改端口,限制ip等方式来不让黑客发现。

  1. 隐藏身份

对于多数web系统来说,都是提供给外面的访问的,所以想隐藏自己其实是很难的。但是我们还是要学会隐藏身份,可以通过改banner,该返回信息来隐藏身份来加大黑客攻击的难度。

  1. 选用安全的版本及修补一些已知的漏洞

其实前面两步都是很容易突破,然后获知一个web系统所使用的web服务器版本的,此时我们能做的就是选择一个少漏洞的版本,及打上安全补丁。

  1. 做好安全配置

做好基础的安全配置,禁止目录浏览,设定默认文档,上传目录限制php执行等等,来阻挡黑客的入侵。

  1. 合理配置web服务进程账户的权限

当黑客已经通过程序漏洞上传了一个webshell并且已经成功执行了,此时,就只能很好的配置服务进程的账户权限,包括磁盘的读取写入,特殊程序如sh的执行,等等,这样可以讲危害降到最低。

  1. 记录日志

最后,当黑客已经光顾之后,我们也只能通过日志来分析,看问题出在哪里了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/334535.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAS应用入门学习笔记3

操作数据集的观测&#xff1a; Eg. 修改变量值等 变量的值取出来&#xff0c;那么我们需要对变量的值进行修改 weight height bmi? Missing 用到条件语if then、赋值语句、表达式 等。 表达式是操作数和操作符的序列。 例如&#xff1a;3 x x1 1、操作数&#xff1a;…

每日学术速递2.9

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV、cs.AI、cs.LG、cs.IR 1.Graph Signal Sampling for Inductive One-Bit Matrix Completion: a Closed-form Solution(ICLR 2023) 标题&#xff1a;归纳单比特矩阵完成的图信号采样&am…

程序员该不该在年后跳槽?3个问句给你答案

过完春节&#xff0c;2023年也迎来了第二个月份&#xff0c;有些程序员虽然还在公司上班&#xff0c;但是私底下跳槽的心蠢蠢欲动&#xff0c;简历说不定都改到第三版了。 在各大社交平台上&#xff0c;经常能看到不少程序员分享自己的跳槽经历&#xff0c;尤其是春节后更是如…

13薪|运营策划[北京市 - 海淀区]-10k-15k

"众推职聘”以交付结果为宗旨的全流程化招聘服务平台&#xff01;今日招聘信息↓【工作内容】1、根据项目要求&#xff0c;收集相关数据&#xff0c;策划撰写项目运营方案&#xff1b;2、运营合作环节中&#xff0c;监督管理执行&#xff1b;3、参与项目的评估&#xff1b…

WorkTool无障碍服务实现企业微信机器人接口

前言 想要实现一个企业微信机器人&#xff0c;如京东/拼多多福利群、美团瑞幸定时营销群、自助订单查询、智能咨询或社群管理机器人等&#xff0c;首先官方未提供外部群/客户群的机器人API&#xff0c;会话存档也只在一定场景下适用&#xff0c;及时使用会话存档也存在只能收不…

56 门控循环单元(GRU)【动手学深度学习v2】

56 门控循环单元&#xff08;GRU&#xff09;【动手学深度学习v2】 深度学习学习笔记 学习视频&#xff1a;https://www.bilibili.com/video/BV1mf4y157N2/?spm_id_fromautoNext&vd_source75dce036dc8244310435eaf03de4e330 门控循环单元GRU GRU和LSTM 实际上效果差不多。…

030_SSS_MaskSketch Unpaired Structure-guided Masked Image Generation

MaskSketch: Unpaired Structure-guided Masked Image Generation 1. Introduction 本文在MaskGIT的基础上进行了改进&#xff0c;提出了MaskSketch用于sketch-to-photo。MaskSketch直接使用预训练好的MaskGIT&#xff0c;不需要进行模型的训练&#xff0c;而且不需要成对的监…

29 - 面向对象的三大特征 - 多态

目录 一、理解多态 1、概念 2、使用场景 3、特点 二、多态案例1 1、需求 2、代码实现 一、理解多态 1、概念 不同的子类对象调用相同的父类方法&#xff0c;产生不同的执行结果2、使用场景 以继承和重写父类方法为前提是调用方法的技巧&#xff0c;不会影响到类的内部设计3、特…

Kubernetes那点事儿——健康检查

K8s应用程序生命周期管理——健康检查前言一、重启策略二、健康检查三、健康监控方式前言 官网&#xff1a;https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-readiness-probes 一、重启策略 Always&a…

云原生技术在容器方面的应用

随着近几年云原生生态的不断壮大&#xff0c;众多企业纷纷开展了用云上云的工作&#xff0c;学习和了解云原生及容器技术对于现代工程师是必不可少的&#xff0c;本文主要为大家介绍云原生及其在容器方面的应用。 1.1 什么是云原生 云原生技术有利于各组织在公有云、私有云和…

基于可视化 BI 工具 DataEase 制作第七次人口普查数据分析大屏

一、制作第七次人口普查数据大屏的背景介绍&#xff1a;第七次人口普查刚刚结束&#xff0c;想要制作一个大屏&#xff0c;能够直观的看到人口总数、出生人数、死亡人数等的情况&#xff1b;希望能够直观的看到人口分布的情况、各种比例、年龄结构等有一定的了解&#xff1b;直…

【网络原理篇2】TCP报头详解

在这一篇文章当中&#xff0c;了解到TCP是属于传输层的协议&#xff1b;当数据从应用层向传输层发送的时候&#xff0c;如果使用的是TCP协议&#xff0c;那么就需要把应用层的数据加上TCP报头。初识网络&#xff1a;IP、端口、网络协议、TCP-IP五层模型_革凡成圣211的博客-CSDN…

2023年去培训机构学前端还是Java?

选择专业肯定是优先考虑更有发展前景和钱途的专业。毕竟IT专业的培训费都不低&#xff0c;基本都要一两万左右&#xff0c;咱们花钱总是希望获得最大回报。 那么到底哪个更有发展前景呢&#xff1f; 零基础能学得会吗&#xff1f; 就业薪资如何呢&#xff1f; 前言 不知道大家有…

Python运算符优先级

以下表格列出了从最高到最低优先级的所有运算符&#xff1a;运算符描述**指数 (最高优先级)~ -按位翻转, 一元加号和减号 (最后两个的方法名为 和 -)* / % //乘&#xff0c;除&#xff0c;取模和取整除 -加法减法>> <<右移&#xff0c;左移运算符&位 AND^ |位…

pyqt5:python读取二进制文件(音频PCM文件)显示波形

文章目录1.使用ffmpeg生成PCM文件1.1 用 ffprobe 查看文件信息1.2 用 ffmpeg 命令转换1.3 用ffplay 测试播放PCM文件2.python读取PCM文件显示波形2.1 函数numpy.fromfile2.2 数据类型dtype说明3.源码和PCM文件链接有个项目需要输出10-50Hz的低频信号驱动线圈&#xff0c;考虑使…

canal 使用详解

第1章 Canal 简介canal [kənl]&#xff0c;译意为水道/管道/沟渠&#xff0c;主要用途是基于 MySQL 数据库增量日志解析&#xff0c;提供增量数据订阅和消费工作原理canal 模拟 MySQL slave 的交互协议&#xff0c;伪装自己为 MySQL slave &#xff0c;向 MySQL master 发送 d…

[架构之路-104]:《软件架构设计:程序员向架构师转型必备》-14-根据需求用例驱动进行软件架构的模块划分过程

14 用例驱动的模块划分过程描述用例的两种方式&#xff1a;图形描述&#xff1a;用例序列图&#xff0c;直观&#xff0c;但修改不方便&#xff0c;版本控制不方便。文本描述&#xff1a;用例规约描述&#xff0c;不直观&#xff0c;但修改方便&#xff0c;版本控制方便。14.1 …

轻松使用 Python 检测和识别车牌(附代码)

车牌检测与识别技术用途广泛&#xff0c;可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计算机视觉和人工智能。 本文将使用Python创建一个车牌检测和识别程序。该程序对输入图像进行处理&#xff0c;检测和识别车牌&#xff0c;最后显示车牌字符&#xff0c;作为…

AWS实战:Dynamodb到Redshift数据同步

AWS Dynamodb简介 Amazon DynamoDB 是一种完全托管式、无服务器的 NoSQL 键值数据库&#xff0c;旨在运行任何规模的高性能应用程序。DynamoDB能在任何规模下实现不到10毫秒级的一致响应&#xff0c;并且它的存储空间无限&#xff0c;可在任何规模提供可靠的性能。DynamoDB 提…

Linux破解root密码

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Linux操作…