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

为了避免更多的运维、开发者没能实现企业的信息安全,我将共享出我个人的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. Javascript中的"\r\n"

    我们知道 \r 代表的是 回车符(ACSII: 13 或0x0d), 也就是"硬回车" \n 代表的是 换行符(ACSII: 10 或 0x0a), 也就是 "软回车&q ...

  2. std::function"函数"对象包装器

    语义: 类模板std::function是可调用对象的包装器,可以包装除了类成员之外的所有可调用对象.包括,普通函数,函数指针,lambda,仿函数.通过指定的模板参数,它可以用统一的方式保存,并延迟 ...

  3. tcpdump的使用总结

    1. 监视所有发送到主机hostname的数据: tcpdump -i eth0 dst host hostname 2. 监视指定主机和端口的数据包(接收或发出的telnet包): tcpdump ...

  4. [UE4]Montage动画设置Slot

    最后一张图看下,配合官网motage教程,容易理解push anim具体用法 http://aigo.iteye.com/blog/2277545 如何新建一个Montage的步骤这里省略了,网上很多 ...

  5. 剑指Offer的学习笔记(C#篇)-- 构建乘积数组

    题目描述 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1].不 ...

  6. PHP闭包和匿名函数

    概念 闭包和匿名函数在PHP5.3.0中被引入. 闭包 闭包是指创建时封装周围环境的函数.即使闭包所在的环境不存在了,闭包中封装的状态依然存在.这个概念很难理解,不过没关系,继续看下去就会明白了. 匿 ...

  7. XHR的跨域请求和JSONP详解

    首先:什么是跨域? Cross Domain Request:从一个资源请求另一个资源,二者所在的请求地址不同,域名不同.端口号不同.请求协议不同. 它是由浏览器的同源策略造成的,是浏览器对JavaS ...

  8. Codeforces 1152E(欧拉路径)

    看样例然后发现只要求一个一笔画即可,用板子. #include <cstdio> #include <cstring> #include <iostream> #i ...

  9. SocLib的安装

    一.soclib的安装 1.安装g++,一般Ubuntu系统都自带了,所以无需安装.后面这两个软件需要提前安装,不然后面执行相关操作是会报错:sudo apt-get install automake ...

  10. bzoj 2301: [HAOI2011]Problem b mobius反演 RE

    http://www.lydsy.com/JudgeOnline/problem.php?id=2301 设f(i)为在区间[1, n]和区间[1, m]中,gcd(x, y) = i的个数. 设F( ...