Nginx + SSL 的配置优化

目录 Linux

近期,博客服务器由阿里云华北区迁移至阿里云华南区,并启用了阿里云的 OSS 对象存储和 CDN 节点加速,系统由Ubuntu 14.04 升级至 Ubuntu 16.04 并打上所有安全补丁,采用全站 HTTPS 安全连接。因此在迁移前,SSL 评估时得分为 B 以下,因为OpenSSL版本低,导致安全性不足,此次迁移后索性通过 SSL LabsMySSL 两个 SSL 安全评估站点对自己的网站进行了检测,发现得分为 A。但仍有一些配置可以优化,本篇文章就记录一下我是如何配置 Nginx 中的 SSL,提升其安全性。本文需要一定的 SSL 配置基础,在此之前请确认你的 Web 服务器已经开启了 HTTPS。

简要介绍

HTTPS:我们简单地可以认为是 HTTP + TLS。HTTP 协议目前已经广泛地运用在大部分的 Web 应用和网站,随着线上支付、移动支付越来越流行,对网络传输安全要求也提升了不少。

TLS:是一种传输层加密协议,它的前身是 SSL 协议,于 1999 年正式更名为 TLS 。TLS 协议主要有五部分:应用数据层协议,握手协议,报警协议,加密消息确认协议,心跳协议。

目前常用的 HTTP 协议是 HTTP 1.1,前几年还有 HTTP 1.0,如今 HTTP 2 已经推出,但目前设备支持还需要点时间。

常用的 TLS 协议版本有:TLS1.2,TLS1.1,TLS1.0 和 SSL3.0。其中 SSL3.0 由于 POODLE 攻击已经被证实不安全。TLS1.0 也存在部分安全漏洞,比如 RC4 和 BEAST 攻击。 继续阅读 “Nginx + SSL 的配置优化”

DrCom 5.2.1(X) 版协议分析 —— UDP 协议

目录 Linux, 项目探索

前面说了那么多,估计已经一脸懵逼了,没关系,现在才是重头戏,也是认证协议的重中之重,就是复杂到反人类的 UDP 协议╮(╯_╰)╭。

现在来讲讲 UDP 认证的作用,其实具体什么作用我也不知道,在协议分析的过程中,如果不按套路来进行 UDP 认证和心跳包的发送,最长上线时间仅能维持21分钟,随后就会被服务器强制下线,所以我推测 UDP 只是起到了心跳维持状态的用处。

问题的发现

在完成了 EAP 协议的分析之后,我们使用 C++ 实现了 EAP 协议的认证过程,测试过程中使用 Wireshark 抓包的过程中,发现了一个严重的问题,在历经大约21分钟的上线之后,毫无例外的都会收到服务器发来的 Failure 包,这意味着我们被服务器强制下线了。 继续阅读 “DrCom 5.2.1(X) 版协议分析 —— UDP 协议”

DrCom 5.2.1(X) 版协议分析 —— EAP 协议

目录 Linux, 项目探索

通过 Wireshark 抓包可以得到几个重要的包,其中一个包是客户端在启动时向网关 Nearest 发送 Logoff 包:

Clevo_18:5f:14   Nearest   EAPOL   96   Logoff

0000   01 80 c2 00 00 03 80 fa 5b 18 5f 14 88 8e 01 02  ........[._.....
0010   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0020   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0030   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0040   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0050   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................

协议类型为 0x888e,即 EAP,可扩展身份验证协议,是 802.1x 认证机制的核心。而 EAPOL 则是基于局域网的 EAP。通过 EAP 包追踪到的IP发现还有 UDP 心跳包,所以可以确定 DrCom 5.2.1(X) 使用 EAP 协议完成内网认证,随后通过 UDP 协议发送心跳包保持登录状态。 继续阅读 “DrCom 5.2.1(X) 版协议分析 —— EAP 协议”

DrCom 5.2.1(X) 版协议分析 —— 序

目录 Linux, 项目探索

引言

本文仅适用于韶关学院南区、西区宿舍拨号的 DrCom 5.2.1(X) 客户端。

在生活中我们经常会用到无线 Wi-Fi 网络,而本人所就读的学校西区宿舍区使用的是 DrCom 5.2.1(X) 版本的客户端,官方发布有 Windows, Linux, MacOS 三大平台的版本,经过测试只有 Windows 版本可正常使用,且仅有的 Windows 版本对 Wi-Fi 共享工具做出限制,优化差到检测到 Wi-Fi 共享软件就会 CPU 爆炸(占用100%),在拨号过程中以及拨号后容易出现掉线或无法上线的情况。由于本人秉承着爱作死,爱折腾的精神,对学校使用的拨号客户端通信协议进行分析。

继续阅读 “DrCom 5.2.1(X) 版协议分析 —— 序”

Ubuntu 编译安装、配置 Redis 与 Memcached 服务

目录 Linux, PHP

测试环境:

OS: Ubuntu 16.04 LTS

以下操作均需以root身份执行

编译安装Redis

Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。

由于 Ubuntu 镜像源中的 Redis 并不是最新版的,为了使用最新版的 Redis,本文将介绍如何使用源码编译安装 Redis。

在正式安装 Redis 服务之前,需要先安装编译工具。 继续阅读 “Ubuntu 编译安装、配置 Redis 与 Memcached 服务”

「项目探索」新分类将记录项目开发的过程

目录 项目探索

「项目探索」

这一新的分类于今日正式创建,以后的时间中由于自发或工作安排等原因需要制作项目,将会在项目探索分类中分享项目开发的全过程,记录自己的开发成长历程,也为需要开发这类项目的朋友提供一些资料。

同时,由于该类项目试做都是对自己的磨砺,我会尽可能地考虑开放源码到Github社区,希望可以大家一起来维护,谢谢。