我为什么要写这一篇稿子?

为了避免更多的运维、开发者没能实现企业的信息安全,我将共享出我个人的HTTPD的安全修复(2.2和2.4差不太多就看2.4就好)

起因:我为某M工作,但因某M和testin合作,结果他们跑个脚本在安全上检测到

SlowHTTPDenialofServiceAttack(解决方案是reqtimeout_module)

不安全的http
poodle
sweet32
中间件漏洞:
响应包版本泄露

【顺便一提,这些问题我早知道了,他们的修复建议并没什么用,依然是CV大法】


首先我们来看看2.2有哪些风险

 Fixed in Apache httpd 2.2.
low: XSS in mod_negotiation when untrusted uploads are supported (CVE--)
low: insecure LD_LIBRARY_PATH handling (CVE--)
Fixed in Apache httpd 2.2.
low: XSS due to unescaped hostnames (CVE--)
--moderate: XSS in mod_proxy_balancer (CVE--)
Fixed in Apache httpd 2.2.
low: mod_rewrite log escape filtering (CVE--)
--moderate: mod_dav crash (CVE--)
Fixed in Apache httpd 2.2.
low: mod_log_config crash (CVE--)
--moderate: mod_dav crash (CVE--)
Fixed in Apache httpd 2.2.
important: mod_cgid denial of service (CVE--)
low: HTTP Trailers processing bypass (CVE--)
--moderate: mod_deflate denial of service (CVE--)
--moderate: mod_status buffer overflow (CVE--)
Fixed in Apache httpd 2.2.
low: HTTP request smuggling attack against chunked request parser (CVE--)
Fixed in Apache httpd 2.2.
important: Apache HTTP Request Parsing Whitespace Defects (CVE--)
--moderate: mod_userdir CRLF injection (CVE--)
n/a: HTTP_PROXY environment variable "httpoxy" mitigation (CVE--)
Fixed in Apache httpd 2.2.
important: Uninitialized memory reflection in mod_auth_digest (CVE--)
important: ap_get_basic_auth_pw() Authentication Bypass (CVE--)
important: mod_ssl Null Pointer Dereference (CVE--)
important: ap_find_token() Buffer Overread (CVE--)
important: mod_mime Buffer Overread (CVE--) Not fixed in Apache httpd 2.2
*apache httpd .2已停止更新
其中个别漏洞是可以造成源码泄露的。
最新版本:
apache ver.2.4.
openssl ver.1.1.

以上就是HTTPD2.2版本的风险,我个人也有基于低版本的修复,但是它并不安全,为防止某些人重蹈覆辙,强烈建议升级到2.4.37,版本于2018年10月23日发布,更新的版本请参照我新的博客,我将会持续跟踪,分享。


Apache HTTPD 2.4.37 安全配置

#去掉对SSL2&3,Tls1&1.1版本的支持,提供对Tls1.2的支持(tls1.3默认关闭),极大地增加了安全性
#增加了httpd对Trace的限制
#增加了重定向的解决方案(需设置,未启动)
#增加了安全头,提升了对XSS,CSRF,点击劫持,嗅探等攻击的防御,将lucky13攻击成功率(采用对称加密会有)降到个人能达到的最低限度,但考虑实际需求并未增加CSP。
#如需开启HTTP2(1.1的升级)请在安装apache 时./config后增加 --enable-http2 
载入 http2_module modules/mod_http2.so
<IfModule http2_module>
LogLevel http2:info
</IfModule>
并使用 protocols启动 Protocols h2 http/1.1 
#修复了 POODLE,SWEET32以及testin并未测试到的 LOGJAM,BEAST攻击同时更改大量不安全协议。
 
#*使用前需要修改配置文件*,配置也适用于其他httpd项目

——涉及文件:httpd.conf,httpd-ssl.conf

  如何安装(基于Centos7)

  前置依赖:

<

 都2个人这么问我了,为什么不用with-included-apr,1在build的时候会提示APR not found,和with-apr差不多。直接用with-apr就行了。

>

./configure --prefix=/opt/apache/apr-1.6.
make
make install ./configure --prefix=/opt/apache/apr-iconv-1.2. --with-apr=/opt/apache/apr-1.6.
make
make install ./configure --prefix=/opt/apache/apr-util-1.6. --with-apr=/opt/apache/apr-1.6. --with-apr-iconv=/opt/apache/apr-iconv-1.2./bin/apriconv
make
make install *// apr-util-1.6.1 报错
*// xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
解决方法
yum install expat-devel
*//ps:expat-devel-2.1.0-10.el7_3.x86_64 最新版是2.4.4 ./configure --prefix=/opt/apache/pcre-8.42 --with-apr=/opt/apache/apr-1.6./bin/apr--config
make && make install ./configure --prefix=/opt/apache/httpd-2.4. --with-pcre=/opt/apache/pcre-8.42 --with-apr=/opt/apache/apr-1.6./bin/apr--config --with-apr-util=/opt/apache/apr-util-1.6. --with-apr-iconv=/opt/apache/apr-iconv-1.2./bin/apriconv --enable-so --enable-ssl --enable-mods-shared=all --enable-cache --enable-disk-cache --enable-file-cache --enable-mem-cache
make && make install *//OpenSSL v1.1.1升级详见
*//https://blog.csdn.net/evkj2013/article/details/82933079

我增加/修改了哪些配置

#conf/httpd.conf

#配置插件
<IfModule reqtimeout_module>
RequestReadTimeout header=-,MinRate= body=,MinRate=
#用来解决 SlowHTTPDenialofServiceAttack 即超时慢DOS攻击
</IfModule>
<IfModule mod_headers.c>
#HSTS只能通过https请求访问
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
#配置只有同一个域才能访问资源,用来解决点击劫持
Header always set X-Frame-Options SAMEORIGIN
#script 和 styleSheet 元素会拒绝包含错误的 MIME 类型的响应
Header always set X-Content-Type-Options nosniffs
#XSS注入防范的安全头
Header always set X-XSS-Protection "1; mode=block"
</IfModule>
# Configure mod_proxy_html to understand HTML4/XHTML1
<IfModule proxy_html_module>
Include conf/extra/proxy-html.conf
</IfModule> # Secure (SSL/TLS) connections
include conf/extra/httpd-ssl.conf<IfModule ssl_module>
#增加的SSL配置
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
#禁用 Trace 跟踪
TraceEnable off
#配置服务器生成页面的页脚
ServerSignature Off
#隐藏版本号
ServerTokens Prod
#启动重定向
#RewriteEngine on
#RewriteCond %{SERVER_PORT} !^$
#RewriteRule ^/?(.*)$ https://%{SERVER_NAME}/$1 [L,R]

这些安全头有什么作用,将挖一个坑。会增加在将来准备写的CSP之前发布

Trace是一定要禁用的,因为这个并不安全,为什么不安全将在后续的补全章节展出。

#conf/extra/httpd-ssl.conf

 SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256!SSLv3:!kRSA:!EXPORT:!ADH
SSLProxyCipherSuite HIGH:MEDIUM:!SSLv3:!kRSA //在这里我禁用了!EXPORT(很少人注意这里,要加的)还有!ADH(就是DH)等套件因为过时了,我在这里采用了ECDHE套件,牢固,十分安全。 SSLHonorCipherOrder on
#禁止SSL2&3,TLS1&1.1
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.
SSLProxyProtocol all -SSLv3
#SSL 的session设置
SSLSessionTickets off
SSLSessionCache "shmcb:/opt/apache/httpd-2.4.37/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
#OSCP
SSLUseStapling On
SSLStaplingResponderTimeout
SSLStaplingReturnResponderErrors off
SSLStaplingCache "shmcb:/opt/apache/httpd-2.4.37/logs/ssl_stapling(32768)"
SSLStaplingStandardCacheTimeout
SSLStaplingErrorCacheTimeout
SSLEngine on
//下面是密钥的配置,每个人都不一样,不粘了

我的套件依然存在CBC(就是对称密码),所以有几率被lucky 13(几率有多高不知道,大家可以试试),除非你不用CBC,追求最佳的安全,否则这些就够了。其他的配置一切安全。

1024和2048会导致响应慢

本HTTPD采用了TLS1.2(1.3没开)。

如何去测试配置现在是否安全?

https://testssl.sh/

我不知道怎么使用

testssl.sh <hostname>/<URI>   

我需要一份报告

testssl.sh <options> <URI> | aha >output.html

啥是URI

 你暂时,在这里完全可以理解成URL

【Apache】HTTPD 2.4.37 + OpenSSL 1.1.1 企业级安全配置(含TLS修复)的更多相关文章

  1. openssl建立证书,非常详细配置ssl+apache

    原文链接:http://blog.51yip.com/apachenginx/958.html openssl建立证书,非常详细配置ssl+apache 张映 发表于 2010-08-07 分类目录: ...

  2. Fedora8上Apache Httpd与Tomcat6初集成

    系统信息: 环境: Linux version :2.6.23.1-42.fc8,gcc version 4.1.2 20070925 Apache Httpd version: 2.2.6.3-3 ...

  3. Apache httpd开启SSL

    https://my.oschina.net/xpbug/blog/197454 必要软件 apache httpd 2.4(windows) perl 5 (windows) openssl (wi ...

  4. Mac下配置Apache Httpd的Https/SSL

    Mac下配置Apache Httpd的Https/SSL httpd版本: httpd-2.4.17 jdk版本: jdk1.8.0_65 参考来源: Mac下安装Apache Httpd Mac O ...

  5. Apache Httpd 反向代理配置 (笔记)

    Apache Httpd 配置Http反向代理 打开配置文件 httpd.conf 先启动相关模块(去掉前面的注释#)LoadModule proxy_module modules/mod_proxy ...

  6. apache httpd 从2.2升级到2.4的过程及中间遇到的坑

    背景描述: 最近集团在做安全扫描,扫出了http的漏洞,一看是监控nagios涉及到的httpd,于是就考虑将httpd升级到最新的版本,在升级的过程中,真是遇到了很多的坑,弄了2天终于搞定了,现在梳 ...

  7. Linux——搭建Apache(httpd)服务器

    一.基本概念 Apache(或httpd)是Internet上使用最多的Web服务器技术之一,使用的传输协议是http超文本传输协议(一个基于超文本的协议),用于通过网络连接来发送和接受对象. 有两个 ...

  8. 【转】Linux下apache/httpd服务启动与停止

    apache服务,或者说httpd服务,如何启动,如何开机启动. 转来转去,找不到原文.. 操作系统环境:红帽5,具体如下:# uname -a Linux machine1 2.6.18-164.e ...

  9. mac os 禁止apache httpd自动启动(转)

    mac os 禁止apache httpd自动启动 博客分类: 计算机使用   mac os不像linux有/etc/init.d/rc.local以及service的方式可以设置程序随机启动,而是使 ...

随机推荐

  1. Swoole 协程 MySQL 客户端与异步回调 MySQL 客户端的对比

    Swoole 协程 MySql 客户端与 异步回调 MySql 客户端的对比 为什么要对比这两种不同模式的客户端? 异步 MySQL 回调客户端是虽然在 Swoole 1.8.6 版本就已经发布了, ...

  2. Redis使用的相关问题

    Redis用那些数据结构? 字符串类型String 字典Hash 列表List 集合Set 有序集合SortedSet HyperLogLog.Geo.Pub/Sub Redis Module.Blo ...

  3. Celery 基本使用

    1. 认识 Celery Celery 是一个 基于 Python 开发的分布式异步消息任务队列,可以实现任务异步处理,制定定时任务等. 异步消息队列:执行异步任务时,会返回一个任务 ID 给你,过一 ...

  4. MyCat - 使用篇(5)

    此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 意思就是,开头为北京的范围在A0000000~A9999999的根据后面的哈希值对5取模平均分布在0,1,2 ...

  5. JDBC的初步了解及使用

    一.概念 1.什么是JDBC? JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由 ...

  6. Spring Security认证提供程序

    1.简介 本教程将介绍如何在Spring Security中设置身份验证提供程序,与使用简单UserDetailsService的标准方案相比,提供了额外的灵活性. 2. The Authentica ...

  7. ue4 动画相关方法杂记

    加载资源文件中的 骨骼,动画,蒙太奇----------------------------------------- FName anis("/Game/FirstPerson/Anima ...

  8. C# System.Timers.Time

    System.Timers.Timer t = new System.Timers.Timer(5000); //设置时间间隔为5秒 private void Form1_Load(object se ...

  9. 省选准备 MISTAKE 大全

    2019-03-29 [NOI2016]网格 如果是矩形,要记得考虑n或m=1的情况,不要潜意识里就以为矩形就是接近正方形的那种理想矩形. 写bool型的函数,return 的语句要想清楚,不要放错位 ...

  10. jquery jtemplates.js模板渲染引擎的详细用法第二篇

    jquery jtemplates.js模板渲染引擎的详细用法第二篇 关于jtemplates.js的用法在第一篇中已经讲过了,这里就直接上代码,不同之处是绑定模板的方式,这里讲模板的数据专门写一个t ...