安全服务之安全基线及加固(三)Apache篇
此文章为原创连载文章,关注公众号,持续更新,欢迎转载,标明来源作者即可。
0x01 前言
安全服务工程师大家应该都知道,对于他的岗位职责你可能会说不就是渗透测试啊、应急响应嘛.....实际上正式一点的企业对于安服的要求是包括了漏洞扫描、安全基线检查、渗透测试、安全加固、日志分析、恶意代码检查、应急响应、安全加固等差不多十个方面的内容的。内容多吗?我也觉得多!
对于基线加固说,不管是对于安服还是安全运营人员来说都是被要求的!接着上回的分享,一起来看看呗!
0x02 Apache与Tomcat的区别
1、apache是web服务器,tomcat是应用(java)服务器,它只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展。
2、apache和tomcat都可以做为独立的web服务器来运行。但是apache不能解释java程序(jsp,serverlet)
3、Apache是普通服务器,本身只支持html即普通网页。不过可以通过插件支持PHP,还可以与Tomcat连通(单向Apache连接Tomcat,就是说通过Apache可以访问Tomcat资源。反之不然)
4、两者都是一种容器,只不过发布的东西不同。apache是html容器,功能像IIS一样,tomcat是jsp/servlet容器,用于发布JSP及JAVA的,类似的有IBM的webshere、EBA的Weblogic,sun的JRun等
5、apache和tomcat是独立的,在同一台服务器上可以集成。
(Apache安装啥的就没必要说了叭~)
0x03 日志审核登录
安全基线项说明:设备应配置日志功能,对运行错误、用户访问等进行记录,记录内容包括时间,用户使用的IP地址等内容。
检测操作步骤:
编辑/etc/httpd/conf/httpd.conf配置文件,设置日志记录文件、记录内容、记录格式。
LogLevelnotice
ErrorLoglogs/error_log
LogFormat"%h %l %u %t "%r" %>s %b "%{Accept}i""%{Referer}i" "%{User-Agent}i"" combined
CustomLoglogs/access_log combined
备注:
ErrorLog指令设置错误日志文件名和位置。错误日志是最重要的日志文件,Apachehttpd将在这个文件中存放诊断信息和处理请求中出现的错误。若要将错误日志送到Syslog,则设置:ErrorLogsyslog。
CustomLog指令设置访问日志的文件名和位置。访问日志中会记录服务器所处理的所有请求。
LogFormat设置日志格式。LogLevel用于调整记录在错误日志中的信息的详细程度,建议设置为notice。
0x04 禁止访问外部文件
安全基线项说明:禁止Apache访问Web目录之外的任何文件。
检测操作步骤
1、参考配置操作
编辑httpd.conf配置文件
<Directory/>
OrderDeny,Allow
Denyfrom all
</Directory>
2、补充操作说明
设置可访问目录
<Directory/web>
OrderAllow,Deny
Allowfrom all
</Directory>
其中/web为网站根目录。
0x05 错误页面处理
安全基线项说明:Apache错误页面重定向
检测操作步骤
(1)修改httpd.conf配置文件:
ErrorDocument400 /custom400.html
ErrorDocument401 /custom401.html
ErrorDocument403 /custom403.html
ErrorDocument404 /custom404.html
ErrorDocument405 /custom405.html
ErrorDocument500 /custom500.html
Customxxx.html为要设置的错误页面。
(2)重新启动Apache服务
0x06 目录列表访问限制
(1)编辑httpd.conf配置文件
<Directory"/web">
OptionsFollowSymLinks
AllowOverrideNone
Orderallow,deny
Allowfrom all
</Directory>
将OptionsIndexes FollowSymLinks中的Indexes去掉,就可以禁止Apache显示该目录结构。Indexes的作用就是当该目录下没有index.html文件时,就显示目录结构。
(2)设置Apache的默认页面,编辑%apache%confhttpd.conf配置文件
<IfModuledir_module>
DirectoryIndex index.html
</IfModule>
其中index.html即为默认页面,可根据情况改为其它文件。
(3)重新启动Apache服务
0x07 拒绝服务防范
安全基线项说明:拒绝服务防范。
检测操作步骤
(1)编辑httpd.conf配置文件,
Timeout10 KeepAlive On
KeepAliveTimeout15
AcceptFilterhttp data
AcceptFilterhttps data
(2)重新启动Apache服务
0x08 删除无用文件
安全基线项说明:删除缺省安装的无用文件。
检测操作步骤:
删除缺省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*
根据安装步骤不同和版本不同,某些目录或文件可能不存在或位置不同。
0x09 隐藏敏感信息(版本号)
安全基线项说明:隐藏Apache的版本号及其它敏感信息。
检测操作步骤:
修改httpd.conf配置文件:
ServerSignatureOff
ServerTokensProd
0x10 更改Apache服务器默认端口
配置操作
/etc/httpd/conf/httpd.conf
Listen8000
0x11 后记
Apache的相关东西和系统类的相比内容要少很多,主要就是配置文件、日志的分析以及一些关键信息的隐藏。有疑惑的地方,再百度一下分分钟后,你就明白啦~
- RabbitMQ入门-高效的Work模式
- 谈谈分布式事务之四: 两种事务处理协议OleTx与WS-AT
- RabbitMQ入门-从HelloWorld开始
- RabbitMQ入门-从HelloWorld开始
- RabbitMQ入门-初识RabbitMQ
- 谈谈分布式事务之三: System.Transactions事务详解[下篇]
- 当InternalsVisibleToAttribute特性遭遇"强签名"
- MyBatis-从查询昨天的数据说起
- WCF并发(Concurrency)的本质:同一个服务实例上下文(InstanceContext)同时处理多个服务调用请求
- Spring集成RabbitMQ-必须知道的几个概念
- Spring读书笔记——bean创建(上)
- 15:21爆出的小程序功能升级,你还要对小程序观望吗?
- 如何解决分布式系统中的跨时区问题[原理篇]
- 什么是区块链:块的结构
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP中ltrim()函数的用法与实例讲解
- Laravel 中创建 Zip 压缩文件并提供下载的实现方法
- pytorch随机采样操作SubsetRandomSampler()
- Pytorch上下采样函数–interpolate用法
- scrapy框架携带cookie访问淘宝购物车功能的实现代码
- 浅析Python __name__ 是什么
- PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
- PHP后期静态绑定实例浅析
- php+mysql开发中的经验与常识小结
- PHP时间戳和日期相互转换操作实例小结
- php json转换相关知识(小结)
- PHP单例模式应用示例【多次连接数据库只实例化一次】
- 踩坑:pytorch中eval模式下结果远差于train模式介绍
- Python读取二进制文件代码方法解析
- Python3 webservice接口测试代码详解