超过14K的Let’s Encrypt加密SSL证书发给了PayPal钓鱼网站

在过去的2016年中,Let’s Encrypt共发出了15,270个域名或证书身份中包含“PayPal”的SSL证书,其中大约14,766(96.7%)是网络钓鱼网站。钓鱼网站滥用Let’s Encrypt的基础设施,Let’s Encrypt正在改名为“Let’s Phish”!

HTTPS意味着“加密的通信渠道”,而不一定是目的地网站是安全的。回到2015年,Let’s Encrypt在一篇博文中明确表示,它不打算成为互联网的HTTPS看门狗,您将paypal.com与playpal.com混淆的事实不是SSL加密的问题。

安全专家Eric Lawrence认为浏览器厂商也造成了一些责任:例如,Internet Explorer 不主动检查证书撤销,Chrome不关心网站上的内容或证书类型。如果站点已经以正确的方式安装了SSL证书,它将以绿色显示“安全”指示,无论其目的如何。

from:Slashdot

在Apache上安装Let’s Encrypt多域名证书

背景

因为WoSign(沃通)未经授权就为GitHub的域名之一颁发了证书,这促使了一项Mozilla和安全社区合作进行的公开调查,调查发现了许多其他WoSign误解的案例,调查还发现Wosign已经秘密收购StartCom,并且后者已经开始使用Wosign的基础设施、员工、政策、签发系统。

最终,从Chrome 56开始,由WoSign和StartCom在2016年10月21日00:00:00 UTC后颁发的证书不受信任。

Apple Root Certificate Program 2016年10月01日 正式宣布在即将发布的安全更新中对沃通的 “WoSign CA Free SSL Certificate G2” 取消信任,所有已经发布到 CT 的旧证书不受影响。正在采取进一步的措施,将阻止来自WoSign和StartCom根CA的证书。

Mozilla 于10月20日公布了对 沃通CA 的最终处理意见,它不再信任在10月21日之后签发的WoSign和StartCom根CA的证书,从 Firefox 51 起移除对4个沃通根证书的信任。

使用Let’s Encrypt免费证书

去年3月以来,behindgfw.com使用的是startcom的免费证书,因为旧的证书还可以用,所以一直没有更换。now,it’s time。

使用Let’s Encrypt官方推荐使用certbot客户端,因为要支持SNI多域名,在tanteng.me上使用了acme-tiny完成验证签发,看了半天觉得还是比较繁琐。研究最后发现certbot也是可以达到SNI多域名功能。示例如下:

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto certonly --webroot -w /var/www/behindgfw.com/public_html  -d behindgfw.com -d www.behindgfw.com -w /var/www/behindgfw.org/public_html -d behindgfw.org -d www.behindgfw.org

certonly –webroot选项可以在发证过程中不停止Web服务器,使用本地网络服务器验证,–webroot-path或-w使用包含由您的Web服务器提供的文件的顶级目录(“web根目录”)。

……

Saving debug log to /var/log/letsencrypt/letsencrypt.log

……

Performing the following challenges:
http-01 challenge for behindgfw.com
http-01 challenge for www.behindgfw.com
http-01 challenge for behindgfw.org
http-01 challenge for www.behindgfw.org
Using the webroot path /var/www/behindgfw.org/public_html for all unmatched domains.
Waiting for verification…
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0000_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0000_csr-certbot.pem

IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/behindgfw.com/fullchain.pem. Your cert will
expire on 2017-06-13. To obtain a new or tweaked version of this
certificate in the future, simply run certbot-auto again. To
non-interactively renew *all* of your certificates, run
“certbot-auto renew”

……

使用/etc/letsencrypt/live目录下的fullchain.pem、privkey.pem修改Apache设置:

SSLCertificateFile /etc/letsencrypt/live/behindgfw.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/behindgfw.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/behindgfw.com/fullchain.pem

部署DMARC

前面转发了一篇SPF、DKIM设置的英文文章,今天再写点关于节译篇邮件DMARC协议的文章。

背景

电子邮件认证技术SPF和DKIM为邮件发送者提供身份证明,这些技术的应用一直在稳步增加,但欺诈和欺骗性电子邮件的问题并未减轻。看起来好像如果发件人坚持使用这些技术,那么MTA将能够轻松地区分那些诈骗信。不幸的是,一些特殊的原因使它失效了。
1、域内多名发送者带来一个复杂的电子邮件环境,使用不同的系统发送电子邮件,而且通常还包括第三方服务商。确保每封邮件可以使用SPF或DKIM是一项复杂的任务,特别是考虑到这些环境还在不断变化的状态。
2、如果一个域名持有人外发邮件中,其中一些被签名,另外一些没有,那么电子邮件接收器将被迫从一堆欺诈邮件中分辨出合法邮件。垃圾邮件算法容易出错,需要不断发展,以适应垃圾邮件发送者改变策略的回应。其结果是,一些诈骗短信将不可避免地进入用户的收件箱。
3、发件人得到的反馈信息很少。除非邮件退回给发件人,没有办法确定有多少以伪造发件人域的欺诈性电子邮件被发送。
4、即使发送者搞定了他们的邮件系统,对所有的合法邮件进行身份验证,电子邮件接收器仍持谨慎态度拒绝未经身份验证的消息,因为他们不能确定有没有合法邮件是未签名的。

这些问题可以得到解决的唯一办法是,让发送者和接收者互相共享信息,发件人要告诉接收者在收到未验证的邮件该怎么办。

幸运的是Paypal开创并摸索出一套系统DMARC,雅虎邮件和Gmail以这种方式进行合作。结果是非常有效的,从而导致欺诈电子邮件显著下降。

DMARC的目标是建立发送者和接收者的合作,以加强发件人的邮件验证的做法,使接收器拒绝未经证实的消息。

DMARC和电子邮件验证过程

DMARC设计以适应入站电子邮件身份验证过程,一个接收器部署SPF和DKIM,再加上自己的垃圾邮件过滤器,流程可能会是这个样子:

在上面的流程中,DMARC在原来ADSP测试点进行检测。所有其他测试不受影响。

DMARC设计成满足以下要求:

最大限度地减少误报,提供强大的认证报告。减少网络钓鱼,最小化的复杂性。

需要注意的是DMARC建立在域名密钥识别邮件(DKIM)和发件人策略框架(SPF)上,DMARC被设计旨在更换ADSP,并增加对以下功能的支持:

泛域名和子域名策略,
不存在的子域,
慢部署(例如百分测试),
SPF,
隔离邮件。

发布DNS txt纪录

DMARC发布在DNS文本(TXT)资源记录(RR)中,并告诉收件方收到伪造邮件后做什么。

举一个例子,下面为域“Behindgfw.com”的DNS DMARC txt记录:

“v=DMARC1;p=reject;pct=100;rua=mailto:info@Behindgfw.com”

在本实施例中,发送者的请求,接收器直接拒绝所有的伪造邮件。

p:用于告知收件方,当检测到某邮件存在伪造发件人的情况,收件方要做出什么处理,处理方式从轻到重依次为:none为不作任何处理;quarantine为将邮件标记为垃圾邮件;reject为拒绝该邮件。初期建议设置为none。

rua:用于在收件方检测后,将一段时间的汇总报告,发送到哪个邮箱地址。

ruf:用于当检测到伪造邮件时,收件方须将该伪造信息的报告发送到哪个邮箱地址。

Pct:检测过滤百分比。

如何部署DMARC的步骤

DMARC是基于一些世界上最大的电子邮件发送者和接收者部署SPF和DKIM的实际经验而设计的。考虑到一个事实,即它几乎是不可能像打开开关一样马上就部署好。

1、部署DKIM和SPF。必须的基础。
2、发布DMARC记录p=none,要求接收方发送检测报告。
3、随着你经验丰富,修改DMARC政策的p标志从none到quarantine到reject。

updata:

1、可以参见google apps 文档 添加 DMARC 记录

2、txt记录的主机字段应该设置为“_dmarc”。

3、设置p=reject后,伪造邮件发送不成功并返回

当前时间:2016-05-10 23:36:50</br>
mx记录解析成功:74.125.25.26
连接到:74.125.25.26成功!
5.7.1 Unauthenticated email from behindgfw.com is not accepted due to 5.7.1 domain’s DMARC policy. Please contact administrator of behindgfw.com 5.7.1 domain if this was a legitimate mail. Please visit 5.7.1 https://support.google.com/mail/answer/2451690 to learn about DMARC 5.7.1 initiative. dr13si3342340pac.245 – gsmtp

参考工具

1、给check-auth@verifier.port25.com发一封邮件,检查spf、dkim部署是否成功。没有部署客户端可以用

“mail -s SUBJECT check-auth@verifier.port25.com”

2、在http://www.mail-tester.com/页面中间会看见一个随机邮件地址,给这个地址发一封邮件,随后点击查看你的邮件得分,会检测spf、dkim、dmarc、以及垃圾邮件等等,最后会给你一个邮件系统得分。

3、http://kitterman.com/dmarc/assistant.html DMARC记录生成工具。

4、DMARC以及图形化的SPF检查工具


 

同ip多域名虚拟主机SSL如何配置-SNI

1、Server Name Indication(服务器名称指示)

以前一直听说基于域名的虚拟主机上只能使用同一张证书以配置SSL,其他域名会提示证书错误,或者去购买昂贵的多域名证书,直到无意中看到linode的文章:

服务器名称指示(Server Name Indication 简称 SNI)是一个扩展的TLS计算机联网协议,这允许在握手过程开始时通过客户端告诉正在连接的服务器的主机名称。允许在相同的IP地址和TCP端口号的服务器上使用多个证书,而不必所有网站都使用同一个证书。在概念上等同于HTTP/1.1基于域名的虚拟主机,只不过这是在HTTPS上实现的。

直接上设置:

1、编辑openssl.cnf(Debian 和 Ubuntu系统可以在/usr/lib/ssl/openssl.cnf找到),在HOME条目前加入
SAN="email:support@yoursite.org" 
修改yoursite.org以匹配你的域名

2、在[ v3_req ][ v3_ca ]节后面加上 
subjectAltName=${ENV::SAN} 该语句指示OpenSSL,如果电子邮件地址默认支持的SSL证书没有提供其它的替代名称,环境变量“SAN”将被读取,以获得应视为有效新证书备用DNS名称的列表。(拗口) 3、服务器shell提示符下输入 export SAN="DNS:www.firstsite.org, DNS:firstsite.org, DNS:www.secondsite.org, DNS:secondsite.org" 声明你希望的证书中包含的域名,为方便起见,这里包括每个站点基础域(这样可以防止用户不输入“www”的部分,否则将发生错误)。
4、
apt-get update 
apt-get upgrade 
apt-get install openssl 
mkdir /etc/ssl/localcerts

#发出以下命令生成证书本身。请注意,此命令应该在一行上发出 
openssl req -new -x509 -sha256 -days 365 -nodes -out /etc/ssl/localcerts/apache.pem -keyout /etc/ssl/localcerts/apache.key

#生成证书请求文件
openssl req -new -key /etc/ssl/localcerts/apache.key -out /etc/ssl/localcerts/apache.csr

#不建议输入密码,否则apache启动时会让输入密码,比较麻烦,当然也可以搞定。
5、访问https://startssl.com/ 依次进行域名认证(Validations Wizard)、证书签发(Certificates Wizard),会获得证书链(1_root_bundle.crt)和证书(2_www.yoursite.org.crt),有效期一年。其实startssl本身免费证书支持5个域名!
6、设置apache

<VirtualHost *:443>
 SSLEngine On
 ......

 ServerAdmin support@example.com
 ServerName www.yoursite.org
 ServerAlias yoursite.org
 DocumentRoot /var/www/yoursite.org/ssl/

SSLCertificateFile /etc/ssl/localcerts/2_www.yoursite.org.crt    SSLCertificateKeyFile /etc/ssl/localcerts/apache.key SSLCertificateChainFile /etc/ssl/localcerts/1_root_bundle.crt
 LogLevel warn
 ErrorLog /var/www/yoursite.org/log/error_ssl.log
 CustomLog /var/www/yoursite.org/log/access_ssl.log combined
</VirtualHost>

其他虚拟主机同上设置。
在服务器端 openssl 支持SNI,编译的时候要加上–enable-tlsext,不过从 0.9.8j 版本开始编译的时候默认会加。

证书申请成功

crt

7、SSL安全设置
#禁用 SSLv2 and SSLv3,防止POODLE漏洞。
SSLProtocol All -SSLv2 -SSLv3
#使用安全的Cipher 
SuiteSSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH

#如果想兼容XP/IE6 ,请使用以下的配置

Cipher SuiteSSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4

也可以如下设置

SSLCipherSuite ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!LOW:!aNULL:!eNULL

这么多格式,也没有像支付宝有那么多需要保密数据,随他了。

Forward Secrecy & Diffie Hellman Ephemeral Parameters ,如果你用的 Apache 2.4.8以上  OpenSSL 1.0.2 或以上版本,可以运行以下命令
cd /etc/ssl/localcerts
openssl dhparam -out dhparam.pem 4096
然后将以下代码添加到网站配置文件 SSLOpenSSLConfCmd DHParameters "/etc/ssl/localcerts/dhparam.pem"
慎用,我apache2.4.7直接跑到cpu100%
最后我们的apache主配置文件可能是下面这样的,你也许要到/etc/apache2/mods-enabled/ssl.conf文件里面找到如下设置。
<IfModule mod_ssl.c>
......
SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"
SSLHonorCipherOrder     on
SSLCompression off
SSLProtocol All -SSLv2 -SSLv3
SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem" 
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4 
......
</IfModule>
8、
不要忘记重启apache
sudo service apache2 reatart
9、SSL安全检测https://wosign.ssllabs.com
BAIDU.com B
TAOBAO.com B
支付宝不让检测,估计屏蔽了。
这些大公司都无所谓吗?

2、一时手痒,服务器基本被百度机器人搞死,想想也是,李世石都不是对手。以下是apache日志节选

 

盗用百度图链,以示报复
/access.log
183.60.235.17 - - [11/Mar/2016:15:42:30 +0800] "GET /archives/ HTTP/1.1" 200 11297 "-" "Baidu-YunGuanCe-SLABot(ce.baidu.com)"
183.61.236.16 - - [11/Mar/2016:15:42:30 +0800] "GET /archives/ HTTP/1.1" 200 11297 "-" "Baidu-YunGuanCe-SLABot(ce.baidu.com)"
117.34.28.13 - - [11/Mar/2016:15:42:31 +0800] "GET /archives/ HTTP/1.1" 200 11297 "-" "Baidu-YunGuanCe-SLABot(ce.baidu.com)"

(此处略去114666条......)

119.167.246.14 - - [14/Mar/2016:20:23:03 +0800] "GET /archives/ HTTP/1.1" 200 11297 "-" "Baidu-YunGuanCe-SLABot(ce.baidu.com)"
117.27.149.14 - - [14/Mar/2016:20:23:03 +0800] "GET /archives/ HTTP/1.1" 200 11297 "-" "Baidu-YunGuanCe-SLABot(ce.baidu.com)"
183.61.236.16 - - [14/Mar/2016:20:23:03 +0800] "GET /archives/ HTTP/1.1" 200 11297 "-" "Baidu-YunGuanCe-SLABot(ce.baidu.com)"
117.34.28.14 - - [14/Mar/2016:20:23:03 +0800] "GET /archives/ HTTP/1.1" 200 11297 "-" "Baidu-YunGuanCe-SLABot(ce.baidu.com)"
183.60.235.17 - - [14/Mar/2016:20:23:04 +0800] "GET /archives/ HTTP/1.1" 200 11297 "-" "Baidu-YunGuanCe-SLABot(ce.baidu.com)"
User-Agent:Baidu-YunGuanCe-SLABot(ce.baidu.com) 可用性检测User-Agent:Baidu-YunGuanCe-ScanBot(ce.baidu.com) 安全检测User-Agent:Baidu-YunGuanCe-PerfBot(ce.baidu.com) 速度检测User-Agent:Baidu-YunGuanCe-VSBot(ce.baidu.com) 认证服务 
来源: 百度云观测

3、i’m coming back.

现代汽车安全技术可能会鼓励危险驾驶

popular mechanics认为现代的公路规划设计、汽车设计,旨在增加驾驶舒适性和安全性的技术措施实际上使驾车处于危险状态。

现代的汽车动力强劲,噪音都比较小并且在弯道时有着惊人的抓地力,在很舒适的驾驶环境下人们的驾车速度通常比想象的要快,当你在车流量很少的八车道高速公路上飞驰前进,并且拿着手机通话时肯定比一条崎岖的山路驾驶要危险。更多的电子信号和更真的道路都会使驾驶员太舒服,并导致意外率上升。人们经常听说在高速公路上开车时睡着,但是很少听见有人在需要频繁换档、加速、刹车的市区道路上开车时睡着,当然除非他喝高了。

文章指出:变化引起了人们更多关注,从而推动更安全。 1967年,瑞典从左边驾驶换到右边驾驶,许多人预测,事故会增加。但事故发生率下降明显,在一年后才达到转换前的事故率水平。

追求一种绝对安全,高于所有其他考虑, 可以让事情更不安全。

妈妈也有毒

一则冷笑话,昨天饭桌上听到的。

一天朝妇女在德国带婴儿去看医生,医生就问她,婴儿怎么哺乳的,曰母乳喂养,洋医生就说了:万万不可,你天朝食品含毒素太多,母乳中已经含有种种毒素,对婴儿也是有害的所以即便是母乳亦不安全,应该使用替代乳品。